Wow.js页面滚动时让元素动起来
⚠️ © 软件著作权归作者所有;本站所有软件均来源于网络,仅供学习使用,请支持正版!

在浏览一些网站的时候,总是能遇到一些页面元素随着滚动而出现的动画功能,引起了鸡西网站开发的设计人员的兴趣。有意把鸡西网站制作的页面也加上动画功能,针对使用性,轻量性,进行了一番探索。
Wow.js,外国人的作品,专门针对页面滚动时加载动画而写出的原生Javascript产物(不依赖Jquery),其动画效果需配合Animate.css产生。以下是鸡西网站设计在实际使用中整理的Wow.js实用性教程,如果有说错的地方,欢迎各路大神不吝赐教。
1、引入必要文件
[01]引入animate.css
<link rel="stylesheet" href="animate.css" type="text/css" />
[02]引入wow.js
<script type="text/javascript" src="wow.js"></script>
[03]为wow.js加入初始化代码
<script type="text/javascript"> new WOW().init(); </script>
注* 这两个文件可以放在页面源码中的任何位置调用,wow.js不依赖于jquery。当然,还是要遵守一些前端潜规则^_^
2、配置wow.js
[01]如在制作网站时对项目需要个性化配置,可以将初始化代码修改成以下内容,并根据相关说明详细配置
<script type="text/javascript"> var wow = new WOW({ boxClass: "wow", animateClass: "animated", offset: 0, mobile: true, live: true, callback: function(box) {}, scrollContainer: null }); wow.init(); </script>
wow.js变量参数属性说明
属性/方法 | 类型 | 默认值 | 说明 |
---|---|---|---|
boxClass | 字符串 | “wow” | 需要执行动画元素的 class |
animateClass | 字符串 | “animated” | 动画库的 class |
offset | 整数 | 0 | 距离可视区域多少开始执行动画 |
mobile | 布尔值 | true | 是否允许在移动设备上执行动画 |
live | 布尔值 | true | 页面中异步加载的内容是否有效 |
callback | 函数 | function(box) | 每次启动动画时都会触发回调的函数,传入的参数为正在运动的DOM节点 |
scrollContainer | 字符串 | null | 可选择滚动容器选择器,不选择使用窗口(body) |
[02]在css下方js上方为元素添加class类名
需要添加动画效果的元素必须为块状display:block
或者行内块状display:inline-block
,基本添加方法,如下所示:
<section class="wow slideInLeft" data-wow-duration="2s" data-wow-delay="5s" data-wow-offset="10" data-wow-iteration="10"></section>
详解:类名前面的wow是每一个需要添加动画的元素都要加的,slideInLeft就是说明动画样式。后面的data-wow-duration(动画持续时间)、data-wow-delay(动画延迟时间)、data-wow-offset(元素的位置露出后距离底部多少像素执行)和data-wow-iteration(动画执行次数)这四个属性可选可不选。
属性 | 说明 |
---|---|
data-wow-duration | 动画持续时间 |
data-wow-delay | 动画延迟时间 |
data-wow-offset | 元素的位置出现后距离底部多少像素执行 |
data-wow-iteration | 动画执行次数 |
以下是Animate.css常用的动画效果介绍,更多效果可前往Animate.css查看演示。
类名 | 说明 |
---|---|
wow rollIn | 从左到右、顺时针滚动、透明度从100%变化至设定值 |
wow bounceIn | 从原位置出现,由小变大超出设定值,再变小小于设定值,再回归设定值、透明度从100%变化至设定值 |
wow bounceInUp | 从下往上、窜上来以后会向上超出一部分然后弹回去、透明度为设定值不变 |
wow bounceInDown | 从上往下、掉下来以后会向下超出一部分然后弹跳一下、透明度为设定值不变 |
wow bounceInLeft | 从左往右、移过来以后会向右超出一部分然后往左弹一下、透明度为设定值不变 |
wow bounceInRight | 从右往左、移过来以后会向左超出一部分然后往右弹一下、透明度为设定值不变 |
wow slideInUp | 从下往上、上来后固定到设定位置、透明度为设定值不变(up是从下往上)(如果元素在最下面,会撑开盒子高度) |
wow slideInDown | 从上往下、上来后固定到设定位置、透明度为设定值不变 |
wow slideInLeft | 从左往右、上来后固定到设定位置、透明度为设定值不变(left却是从左往右) |
wow slideInRight | 从右往左、上来后固定到设定位置、透明度为设定值不变 |
wow lightSpeedIn | 从右往左、头部先向右倾斜,又向左倾斜,最后变为原来的形状、透明度从100%变化至设定值 |
wow pulse | 原位置放大一点点在缩小至原本大小、透明度为设定值不变(配合动画执行次数属性效果更佳) |
wow flipInX | 原位置后仰前栽、透明度从100%变化至设定值 |
wow flipInY | 原位置左右旋动、透明度从100%变化至设定值 |
wow bounce | 上下抖动、透明度为设定值不变(配合动画执行次数和动画持续时间属性可以实现剧烈抖动亦或是慢慢抖) |
wow shake | 左右抖动、透明度为设定值不变(配合动画执行次数和动画持续时间属性可以实现剧烈抖动亦或是慢慢抖) |
wow swing | 从右往左、头部先向右倾斜,又向左倾斜,最后变为原来的形状、透明度为设定值不变 |
wow bounceInU | 原位置不变、直接从不显示到显示(无过过渡效果) |
wow wobble | 原位置不变、类似于一个人站在那左右晃头、透明度为设定值不变 |
3、wow.js常见问题
为了写这篇wow.js的说明文章,鸡西做网站的设计人员专门测试了一下data-wow-offset和data-wow-iteration这两个属性,其中data-wow-offset=”数值”中的数值是动画完成后元素距离显示器底部的位置,而不是距离浏览器窗口底部的位置。
wow.js使用了querySelectorAll方法,IE低版本会报错。为了达到更好的兼容,最好加一个浏览器及版本判断。
<script src="wow.min.js"></script> <script> if (!(/msie [6|7|8|9]/i.test(navigator.userAgent))){ new WOW().init(); }; </script>
有的网站采用全屏滚动的fullpage插件与wow相结合的方法,实现的效果比较酷炫,我们完全可以仿写。但是使用fullpage.js下wow.js无效失效没动作问题出在fullpage隐藏了滚动条,将滚动条开启即可,把scrollBar设置为true,代码如下:
$('#fullpage').fullpage({ scrollBar:true; });
最后利用css将滚动条隐藏,将html添加overflow:hidden
,代码如下:
html{ overflow:hidden; }