第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > html如何设置滚动动画 滚动条触发CSS3动画

html如何设置滚动动画 滚动条触发CSS3动画

时间:2020-08-23 11:59:16

相关推荐

html如何设置滚动动画 滚动条触发CSS3动画

在这篇教程中,我将为你介绍如何在页面滚动时触发CSS动画。这种效果使用JavaScript和CSS就能做到。

Jeet Grid System website 就是使用这种小技巧的例子,当你向下滚动的时候,CSS的transform、animation就被触发了。

想要达到这种目的,有很多Javascript/jQuery 插件可以用,比如WOW,在这篇教程中,我将为你展示如何不适用插件做到这种效果。

模板

那么我们开始了,首先是写好HTML标签,revealOnScroll类必须家在需要在滚动时触发的元素上面。

...some content here...

data-animation这个属性声明了将会触发animation.css中animation的名字,当然添加额外的timeout参数也可以使用同样的方法,这样做当你有很多元素在同个位置被触发时很有用。

Javascript 和 CSS animation

然后,我们需要定义一些变量在JavaScript文件的顶部,(不要忘记加载jQuery和Modernizr需要检查是否为触摸设备)。还有为了实现动画效果,我加载了animation.css

var $window = $(window),

win_height_padded = $window.height() * 1.1,

isTouch = Modernizr.touch;

然后我们需要监听滚动事件,并触发我们的函数。

$window.on('scroll', revealOnScroll);

在revealOnScroll函数里面我们检查元素是否需要执行动画,如果是,animation类就会添加,并触发了CSS animation。

function revealOnScroll() {

var scrolled = $window.scrollTop();

$(".revealOnScroll:not(.animated)").each(function () {

var $this = $(this),

offsetTop = $this.offset().top;

if (scrolled + win_height_padded > offsetTop) {

if ($this.data('timeout')) {

window.setTimeout(function(){

$this.addClass('animated ' + $this.data('animation'));

}, parseInt($this.data('timeout'),10));

} else {

$this.addClass('animated ' + $this.data('animation'));

}

}

});

是不是很容易就完成了~ 还有另一个小技巧,当元素不可见的时候,animation类被移掉,这样在一次请求里面多次animate动画。

我是周晓楷,华南师范大学在校本科生,有轻微强迫症,拖延症,正在努力学习前端知识!微博@Helkyle。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。