JS 流行库(八):ScrollReveal

JS 流行库(八):ScrollReveal

WOW.js + Animate.css 虽然可以实现有趣的网页滚动动画效果,唯一的缺陷是效果只能执行一次,而 ScrollReveal.js 可以弥补此缺陷,特点如下:

  • 兼容 PC 和移动端
  • 不依赖于 jQuery,也不依赖于 Animate.css
  • 不支持低版本浏览器(Animate 和 WOW 同样也不支持)

基本使用

  1. 导入 ScrollReveal 库

示例如下:

<script src="./scrollreveal.js"></script>
  1. HTML 代码

示例如下:

<style>
    * {
        margin: 0;
        padding: 0;
    }

    div {
        width: 100px;
        height: 80px;
        border: 1px solid black;
        color: orangered;
        font-size: 20px;
        font-weight: bold;
        text-align: center;
        line-height: 80px;
        border-radius: 5px;
        box-shadow: 0 0 10px black;
        margin: 50px auto;
    }

    div:nth-of-type(odd) {
        background-color: black;
        color: white;
    }
</style>
<div>Div 1</div>
<div>Div 2</div>
<div>Div 3</div>
<div>Div 4</div>
<div>Div 5</div>
<div>Div 6</div>
<div>Div 7</div>
<div>Div 8</div>
<div>Div 9</div>
  1. JavaScript 代码

示例如下:

ScrollReveal().reveal('div');

ScrollReveal 库默认的动画为淡入效果

高级使用

ScrollReveal 库可以在初始化 ScrollReveal 实例时配置选项,以实现某种特定的动画效果

选项类型描述
resetboolean元素是否在容器来回滚动时都释放动画效果
durationnumber动画的持续事件、单位毫秒
delaynumber动画的延迟时间、单位毫秒
rotateobject/number动画开始时的角度、单位 degree
opacitynumber动画开始时的透明度
scalenumber动画开始时的缩放值
distancestring动画的距离,示例:20px10vw
originstring动画的方向,示例:lefttopbottom
easingstring动画的效果,示例:easeease-out

示例如下:

let sr = new ScrollReveal({
    reset: true,
    duration: 1000,
    delay: 500,
    rotate: {x: 0, y: 0, z: 45},
    opacity: 0.5,
    scale: 1.5,
    distance: "200px",
    origin: "left",
    easing: "ease"
});
sr.reveal("div");

事件响应

在 ScrollReveal 中有 4 种自定义事件,如下所示:

事件描述
beforeReveal在动画效果开始之前调用此回调函数
afterReveal在动画效果结束之后调用此回调函数
beforeReset在动画效果恢复初始状态之前调用此回调函数
afterReset在动画效果恢复初始状态之后调用此回调函数

之所以恢复动画初始状态是由于,当元素移出容器时,为了准备下一次动画效果,所以必须恢复至执行动画时的初始状态,此外,每一次回调将执行动画的元素传入此回调函数

示例如下:

let sr = new ScrollReveal({
    reset: true,
    duration: 1000,
    delay: 500,
    rotate: { x: 0, y: 0, z: 45 },
    opacity: 0.5,
    scale: 1.5,
    distance: "200px",
    origin: "left",
    easing: "ease",
    beforeReveal: function (ele) {
        console.log("Before Reveal");
    },
    afterReveal: function (ele) {
        console.log("After Reveal");
    },
    beforeReset: function (ele) {
        console.log("Before Reset");
    },
    afterReset: function (ele) {
        console.log("After Reset");
    }
});
sr.reveal("div");
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值