gpt4 book ai didi

javascript - 给标题下划线css动画

转载 作者:行者123 更新时间:2023-11-28 16:49:07 25 4
gpt4 key购买 nike

我在页面上有一些 div 标签,一旦它们出现在视口(viewport)中,我希望它们以某种方式进行动画处理。我已经得到了使用 waypoint.js 的“视口(viewport)中”部分,所以现在我被动画困住了。

基本上,我希望始终在所有 h1 标签上添加灰色下划线。一旦他们进入视野,我想要一条黑线从右到左在那条灰线的顶部运行,然后几乎离开场景,停在大约灰线的 25% 处。

为了演示它,我将效果更改为在 hover 上工作,如您所见,当它穿过灰线时,我得到了该部分,但我坚持使用应该离开场景的部分(几乎离开场景——停在灰线的25%处):

HTML:

<div class="section-header">
<span>Hello</span>
</div>

CSS:

.section-header {
text-transform: uppercase;
font-weight: 700;
font-size: 2em;
letter-spacing: 5px;
position: relative;
text-align: center;

> span {
display: inline-block;
position: relative;
border-bottom: 1px solid #ccc;
&:before {
content: "";
position: absolute;
width: 0;
height: 1px;
bottom: -1px;
right: 0;

background-color: #000;
visibility: hidden;
-webkit-transition: all 0.9s ease-in-out 0s;
transition: all 0.9s ease-in-out 0s;
}
&:hover {
&:before {
visibility: visible;
width: 100%;
}
}
}

}

http://codepen.io/anon/pen/RWoxBv

这在 CSS 中完全可行吗?或者我应该使用 Javascript 吗?

为了进一步演示动画,假设这是黑线:

           - (starts from right hand side and goes to left)
--
---
----
-----
------
-------
--------
---------
----------
-----------
------------ (point when it covers the grey line and starts to 'leave the scene')
-----------
----------
---------
--------
-------
------
-----
----
--- (stopping there)

最佳答案

因此,为元素设置动画,从 left 100%left -75%(= 25% 可见!)
jsBin demo playground

这是一个很好的小例子,它使用了 small jQuery plugin taken from here 和一些标准的 CSS:

/**
* inViewport jQuery plugin by Roko C.B. stackoverflow.com/questions/24768795/
*
* Returns a callback function with an argument holding
* the current amount of px an element is visible in viewport
* (The min returned value is 0 (element outside of viewport)
* The max returned value is the element height + borders)
*/
;(function($, win) {
$.fn.inViewport = function(cb) {
return this.each(function(i,el) {
function visPx(){
var elH = $(el).outerHeight(),
H = $(win).height(),
r = el.getBoundingClientRect(), t=r.top, b=r.bottom;
return cb.call(el, Math.max(0, t>0? Math.min(elH, H-t) : (b<H?b:H)));
}
visPx();
$(win).on("resize scroll", visPx);
});
};
}(jQuery, window));



// Let's rock!
$("h1 span").inViewport(function(px){
$(this).toggleClass("animateLine", !!px);
});
p{height:900px;}/*FOR DEMO ONLY*/

h1{
text-align:center;
}
h1 span{
display:inline-block;
position:relative;
overflow:hidden;
}
h1 span:after,
h1 span:before{
content:"";
height:1px;
width:100%;
position:absolute;
bottom:0px;
left:0;
transition: 3s;
}
h1 span:before{
background:#ccc;
}
/* We'll animate this one to -75% */
h1 span:after{
background:#000;
left:100%;
}
h1 span.animateLine:after{
left: -75%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1><span>This is title 1</span></h1>
<p>1 Scroll down to find more titles</p>
<h1><span>This is title 2</span></h1>
<p>2 Scroll down to find more titles</p>
<h1><span>This is title 3</span></h1>
<p>3 Scroll down to find more titles</p>
<h1><span>This is title 4</span></h1>
<p>4 Scroll down to find more titles</p>
<h1><span>This is title 5</span></h1>
<p>5 Scroll down to find more titles</p>

基本上将伪 :after 设置为初始 100% 左侧,并触发 CSS3 类,该类将使用演示中的 jQ 插件应用左侧 -75% 过渡。

https://stackoverflow.com/a/26831113/383904
CSS3-Animate elements if visible in viewport (Page Scroll)

关于javascript - 给标题下划线css动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32813990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com