【特效】页面滚动到相应位置运行css3动画
请到我的个人博客网站上浏览此文章,欢迎评论和建议。
文章链接:http://www.xiaoxianworld.com/archives/87
现在css3动画很常见了,实际项目中经常应用,特别是那种长长的信息展示类的页面。于是产生一个问题,需要控制动画的运行,就像给其加一个开关,什么时候动,什么时候停,想随心所欲的控制。自然会用到animation-play-state属性,其两个属性值paused:规定动画已暂停,和running:规定动画正在播放,正好能满足要求。
对于那种长长的页面,给一些文字或图片添加了动画后,想实现其随着页面滚动而动画的效果,因为如果动画一开始就运行,那么处在不是第一屏的内容,就算其动画运行了,我们也看不到。所以,就要实现,当内容从页面底端滚动出来,也就是出现在视野范围内时,动画才运行。这就免不了用到js,来获取滚动条滚动的高度,和动画所在层的位置。
写了一个简单的demo来具体说明吧,只写了一个文字从右向左移动的动画,当其滚动出现时,才运行:
html:
<div class="con">内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</div>
<ul class="list">
<li>
<p>第1屏动画进入视线</p>
</li>
<li>
<p>第2屏动画进入视线</p>
</li>
<li>
<p>第3屏动画进入视线</p>
</li>
</ul>
css:
.con{ height:1200px;}
.list{ list-style:none; padding:0; margin:0; border-top:2px solid blue;}
.list li{ height:500px; border-bottom:1px solid green;}
.list li p{ opacity:0; animation:move 1s forwards; animation-play-state:paused;}
.list .move p{ animation-play-state:running;}
@keyframes move{
from{ opacity:0; margin-left:500px;}
to{ opacity:1; margin-left:0;}
}
js:
$(document).ready(function(){
var a,b,c;
a=$(window).height();
$(window).scroll(function(){
var b=$(this).scrollTop();
$(".list li").each(function(){
c=$(this).offset().top;
if(a+b>c){
$(this).addClass("move");
}
else{
$(this).removeClass("move");
}
});
});
});
- jQuery和CSS3炫酷滚动页面内容元素动画特效
- jQuery.smoove — jQuery和CSS3炫酷滚动页面内容元素动画特效插件
- 4种纯CSS3超酷页面切换过渡动画特效
- jQuery和CSS3超炫3D整屏垂直滚动页面特效
- 基于css3炫酷页面加载动画特效代码
- 基于jQ+CSS3页面滚动内容元素动画特效
- 15款fullpage.js鼠标滚动页面动画展示特效
- AOS – 另外一个独特的页面滚动动画库(CSS3)
- load-awesome 53种纯CSS3预加载页面loading指示器动画特效
- 30种CSS3炫酷页面预加载loading动画特效
- AOS – 另外一个独特的页面滚动动画库(CSS3)
- 滚动页面,然后再执行CSS3 动画
- 使用CSS3 will-change提高页面滚动、动画等渲染性能
- jQuery页面滚动元素进入视口发生动画特效插件
- 页面回发后,让页面自动滚动到指定位置的一种简单的方法
- 页面同一位置重叠多张图片,鼠标点击切换特效
- 解决Ext.Window放大关闭后滚动条消失和滚动页面时最大化Window位置的方法
- Scroll Page 表单提交后页面重新滚回原来滚动条所在位置
- ASP.NET小技巧——回传后保持页面的滚动位置
- 如何让DIV固定在页面的某个位置而不随着滚动条随意滚动