Keep on coding

HTML5 - ScrollReveal框架

框架三 —-> scrollReveal

介绍

  • scrollReveal是一个兼容PC端和移动设备的滚动动画库。不同的是WOW.js 的动画只播放一次,而 scrollReveal.js 的动画可以播放一次或无限次;

特点

  • scrollReveal同时兼容PC端和移动端;
  • 0依赖(不依赖于jQuery,也不依赖于animate.css);
  • 定制性高,使用简单方便快捷。

浏览器兼容

  • 虽然scrollReveal.js不依赖于animate.css,但是它也是用CSS3的动画创建的,所以需要对H5和C3支持比较好的浏览器,比如: IE10+、Firefox、Chrome、Opera、Safari。

  • 官网下载链接:https://scrollrevealjs.org/

使用方法

  • 引入文件
1
2
3
4
5
6
7
8
<script src="js/scrollReveal.js"></script>
<!-- HTML -->
<div class="box"></div>
// JavaScript
window.onload = function () {
window.sr = ScrollReveal();
sr.reveal('.box');
}
  • 常用参数 - 可以自己手动修改参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var config = {
reset: false, // 滚动鼠标时,动画开关
origin: 'bottom', // 动画开始的方向
duration: 500, // 动画持续时间
delay: 0, // 延迟
rotate: {x:0, y:0, z:0}, // 过度到0的初始角度
opacity: 0, // 初始透明度
scale: 0.9, //缩放
// 缓动'ease', 'ease-in-out','linear'
easing: 'cubic-bezier(0.6, 0.2, 0.2, 1)',
// 回调函数
beforeReveal: function(domEl){},
beforeReset: function(domEl){},
afterReveal: function(domEl){},
afterReset: function(domEl){}
};
window.sr = ScrollReveal();
sr.reveal('.sr', config);

附两个Demo,方便理解和使用 !

  • Demo1

    < ! ———- HTML ———— >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<div class="center">
<ul>
<li class="sr"><a href="javascript:;">![](images/01.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/02.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/03.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/04.jpg)</a></li>
<li class="sr self"><a href="javascript:;">![](images/05.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/06.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/07.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/08.jpg)</a></li>
</ul>
<ul>
<li class="sr"><a href="javascript:;">![](images/05.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/06.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/07.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/08.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/01.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/02.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/03.jpg)</a></li>
<li class="sr self"><a href="javascript:;">![](images/04.jpg)</a></li>
</ul>
<ul>
<li class="sr"><a href="javascript:;">![](images/09.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/10.jpg)</a></li>
<li class="sr self"><a href="javascript:;">![](images/11.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/12.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/13.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/14.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/15.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/16.jpg)</a></li>
</ul>
<ul>
<li class="sr"><a href="javascript:;">![](images/13.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/14.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/15.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/16.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/09.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/10.jpg)</a></li>
<li class="sr"><a href="javascript:;">![](images/11.jpg)</a></li>
<li class="sr self"><a href="javascript:;">![](images/12.jpg)</a></li>
</ul>
</div>

< ! ——— Style ————– >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<style>
* {
margin: 0;
padding: 0;
border: 0;
list-style-type: none;
}
div.center {
width: 1230px;
margin: 0 auto;
}
ul {
float: left;
}
ul {
margin-right: 10px;
}
ul:last-child {
margin-right: 0;
}
ul li {
margin-bottom: 10px;
}
</style>

< ! ——— JavaScript ——- >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<script>
window.onload = function () {
// 如果需要上下滚动每次都做动画 reset的值必须为true 默认为false
// 如果只需要做一次滚动动画的话,可以不要这句代码
var config = {
reset: true
}
// 自定义参数配置,让每一个动画多样化
var self = {
reset: true, // 滚动鼠标时,动画开关
origin: 'left', // 动画开始的方向
duration: 500, // 动画持续时间
delay: 0, // 延迟
rotate: {x: 100, y: 200, z: 300}, // 过度到0的初始角度
opacity: 0, // 初始透明度
scale: 0.2, //缩放
easing: 'linear', // 缓动'ease', 'ease-in-out','linear'
}
window.sr = ScrollReveal();
sr.reveal('.sr', config);
sr.reveal('.self', self);
}
</script>

< ! ——— 效果展示 ———- >

 **ScrollReveal Demo1**

  • Demo2

    < ! ———- HTML ———— >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<ul>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
<li class="sr"></li>
</ul>

< ! ——— Style ————– >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<style>
* {
margin: 0;
padding: 0;
border: 0;
list-style-type: none;
}
body {
padding-top: 100px;
background-color: #000;
}
ul {
width: 980px;
margin: 0 auto;
}
ul .sr {
float: left;
width: 50px;
height: 50px;
margin: 10px;
}
</style>

< ! ——— JavaScript ——- >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<script>
window.onload = function () {
// 设置参数
var config = {
reset: true, // 滚动鼠标时,动画开关
origin: 'left', // 动画开始的方向
duration: 1000, // 动画持续时间
delay: 0, // 延迟
rotate: {x: 0, y: 0, z: 0}, // 过度到0的初始角度
opacity: 0, // 初始透明度
scale: 0.2, //缩放
easing: 'linear', // 缓动'ease', 'ease-in-out','linear'
}
var lis = document.getElementsByTagName('li');
var r = 0, g = 0, b = 0;
function randomColor() {
for (var i = 0; i < lis.length; i++) {
r = parseInt(Math.random() * 255);
g = parseInt(Math.random() * 240);
b = parseInt(Math.random() * 245);
lis[i].style.background = 'rgb(' + r + ',' + g + ',' + b + ')';
}
}
// 引用
window.sr = ScrollReveal();
// 后面的50那个参数是代表每隔50毫米出现一个li,最后一个参数是调用随机颜色函数
sr.reveal('.sr', config, 50, randomColor());
}
</script>

< ! ——— 效果展示 ———- >

  • 这个小案例是结合前面给大家分享的那个随机颜色一起实现的

**scrollRevea Demo2**

ScrollReveal 和 WOW的区别和联系

  • 他们都不依赖jQuery;
  • wow依赖于animate.css ,ScrollReveal不依赖任何其他插件或者库;
  • wow的释放动画,只能够实现一次,而ScrollReveal可以无限次使用;
  • ScrollReveal 参数相对比较多,比较复杂些;
  • 实际工作中,用wow比较多。