动画插件之Animate.css, WOW.js与scrollRevealjs08-15

动画插件之Animate.css, WOW.js与scrollRevealjs

1.Animate.css

  • <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>01-AnimateCSS使用</title>
        <link rel="stylesheet" href="css/animate.css">
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            div{
                width: 200px;
                height: 200px;
                background: red;
                margin: 100px auto;
                /*animation-iteration-count: 3;*/
                /*animation-delay: 6s;*/
            }
            @keyframes myFadeIn {
                from {
                    opacity: 0;
                    transform: scale(2);
                }
    
                to {
                    opacity: 1;
                    transform: scale(1);
                }
            }
    
            .myFadeIn {
                -webkit-animation-name: myFadeIn;
                animation-name: myFadeIn;
            }
        </style>
    </head>
    <body>
    <!--animated这个类名是animated.css的基类, 但凡需要通过animated.css来添加动画, 都需要添加这个基类-->
    <!--<div class="animated"></div>-->
    <!--<div class="animated bounce"></div>-->
    <!--<div class="animated bounce infinite delay-3s"></div>-->
    <!--<div class="animated bounce"></div>-->
    <div class="animated myFadeIn"></div>
    <script>
        /*
            1.什么是Animate.css?
            其实swiper-animate就是参考Animate.css演变出来的一个插件,
            Animate.css和swiper-animate一样都是用于快速添加动画的,
            所以会用swiper-animate就会用Animate.css
    
            2.Animate.css的使用:
            2.1引入animate.css的文件
            2.2给需要执行动画的元素添加类名
        */
    </script>
    </body>
    </html>
    

2.WOW.js

2.1 基本使用
  • <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>02-WOWJS使用</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            .box{
                width: 400px;
                height: 200px;
                border: 1px solid #000;
                margin: 100px auto;
            }
            .box1{
                width: 200px;
                height: 200px;
                background: red;
                float: left;
            }
            .box2{
                width: 200px;
                height: 200px;
                background: blue;
                float: right;
            }
        </style>
        <link rel="stylesheet" href="css/animate.css">
        <script src="js/wow.js"></script>
    </head>
    <body>
    <div class="box">
        <!--
        wow这个类名是一个基类, 如果想通过wow.js添加动画, 那么就必须写上这个基类
        这里的slideInLeft就是Animate.css中的动画名称, 只要是Animate.css中的动画再wow.js中都可以使用
        -->
        <div class="box1 wow slideInLeft" data-wow-duration="5s"></div>
        <div class="box2 wow slideInRight" data-wow-delay="5s" data-wow-iteration="2"></div>
    </div>
    <script>
        /*
        1.什么是WOW.js?
        WOW.js是对animate.css的扩充, 让页面滚动更有趣
        通过WOW.js,可以在页面滚动的过程中逐渐释放动画效果。
        简单点理解: (wow.js + animate.css) 约等于  (swiper.js + swiper.animate.css)
        只不过swiper更加强大, 企业中使用频率更高, 所以重点掌握swiper
    
        2.wow.js使用
        2.1引入animate.css
        2.2引入wow.js
        2.3给需要执行动画的元素添加类名
        2.4在JavaScript中初始化wow.js
         */
        new WOW().init();
    </script>
    </body>
    </html>
    
2.2 位置计算
  • <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>03-WOWJS位置计算</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            .box{
                width: 400px;
                height: 800px;
                margin: 0 auto;
                border: 1px solid #000;
                overflow: auto;
                overflow-x: hidden;
                background: #fff !important;
            }
            div{
                width: 400px;
                height: 200px;
                line-height: 200px;
                text-align: center;
                margin: 0 auto;
            }
            div:nth-child(odd){
                background: red;
            }
            div:nth-child(even){
                background: blue;
            }
        </style>
        <link rel="stylesheet" href="css/animate.css">
        <script src="js/wow.js"></script>
    </head>
    <body>
    <!--
    <div class="wow slideInLeft">我是第1个div</div>
    <div class="wow slideInRight">我是第2个div</div>
    <div class="wow slideInLeft">我是第3个div</div>
    <div class="test wow slideInRight" data-wow-offset="600">我是第4个div</div>
    -->
    <!--这里的data-wow-offset属性的作用, 是告诉wow.js从什么位置开始执行动画
    那么这个位置是参照谁的呢
    // (window的高度 + 网页滚动出去的距离) - 元素距离body的偏移位
    如下面js中所写
    -->
    
    <div class="box">
        <div class="wow slideInLeft">我是第1个div</div>
        <div class="wow slideInRight">我是第2个div</div>
        <div class="wow slideInLeft">我是第3个div</div>
        <div class="test wow slideInRight" data-wow-offset="600">我是第4个div</div>
        <div>我是第5个div</div>
        <div>我是第6个div</div>
        <div>我是第7个div</div>
        <div>我是第8个div</div>
        <div>我是第9个div</div>
        <div>我是第10个div</div>
        <div>我是第11个div</div>
        <div>我是第12个div</div>
        <div>我是第13个div</div>
        <div>我是第14个div</div>
        <div>我是第15个div</div>
        <div>我是第16个div</div>
    </div>
    <script>
        // 1.拿到window的高度
        let windowHeight = window.innerHeight;
        // 2.拿到元素距离body的偏移位
        let oDiv = document.querySelector(".test");
        let divOffsetTop = oDiv.offsetTop;
        // 3.拿到网页滚动出去的距离
        window.onscroll = function () {
            let offsetTop = document.documentElement.scrollTop;
            // (window的高度 + 网页滚动出去的距离) - 元素距离body的偏移位
            let result = (windowHeight + offsetTop) - divOffsetTop;
            console.log(result);
        }
        let wow = new WOW({
            /*告诉wow.js, data-wow-offset参数谁进行计算偏移位 本来是以body*/
            scrollContainer: ".box"
        });
        wow.init();
    </script>
    </body>
    </html>
    
2.3 其他使用
  • <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>04-WOWJS高级使用</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            div{
                width: 400px;
                height: 200px;
                line-height: 200px;
                text-align: center;
                margin: 0 auto;
            }
            div:nth-child(odd){
                background: red;
            }
            div:nth-child(even){
                background: blue;
            }
        </style>
        <link rel="stylesheet" href="css/animate.css">
        <script src="js/wow.js"></script>
    </head>
    <body>
    <div class="nj slideInLeft">我是第1个div</div>
    <div class="nj slideInRight">我是第2个div</div>
    <div class="nj slideInLeft">我是第3个div</div>
    <div class="test nj slideInRight" data-wow-offset="600">我是第4个div</div>
    <div>我是第5个div</div>
    <div>我是第6个div</div>
    <div>我是第7个div</div>
    <div>我是第8个div</div>
    <div>我是第9个div</div>
    <div>我是第10个div</div>
    <div>我是第11个div</div>
    <div>我是第12个div</div>
    <div>我是第13个div</div>
    <div>我是第14个div</div>
    <div>我是第15个div</div>
    <div>我是第16个div</div>
    <div>我是第17个div</div>
    <script>
        let wow = new WOW({
            boxClass:     'nj',      // 自定义基类的名称
            animateClass: 'animated', // 指定需要使用的动画库的名称,一般不会变
            offset:       0,          // 在全局统一的设置元素的data-wow-offset
            mobile:       true,       // 在移动端是否需要执行动画
            live:         true,       // 是否需要开启异步加载内容
            callback:     function(box) {
                // 只要有元素执行动画就会调用这个回调函数, 并且会将正在执行动画的元素传递给我们
                console.log(box);
            },
            /*告诉wow.js, data-wow-offset参数谁进行计算偏移位*/
            scrollContainer: ".box",
        });
        wow.init();
    </script>
    </body>
    </html>
    

3.scrollRevealjs

  • <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>05-ScrollRevealJS</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            div{
                width: 400px;
                height: 200px;
                line-height: 200px;
                text-align: center;
                margin: 0 auto;
            }
            div:nth-child(odd){
                background: red;
            }
            div:nth-child(even){
                background: blue;
            }
        </style>
        <script src="js/scrollreveal.js"></script>
    </head>
    <body>
    <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</div>
    <div>我是第10个div</div>
    <div>我是第11个div</div>
    <div>我是第12个div</div>
    <div>我是第13个div</div>
    <div>我是第14个div</div>
    <div>我是第15个div</div>
    <div>我是第16个div</div>
    <div>我是第17个div</div>
    <div>我是第17个div</div>
    <script>
        /*
        1.什么是scrollReveal?
        scrollReveal是一个兼容PC端和移动设备的滚动动画库。不同的是 WOW.js 的动画只播放一次,而 scrollReveal.js 的动画可以播放一次或无限次;
    
        2.scrollReveal特点:
        2.1 同时兼容PC端和移动端
        2.2 0依赖(不依赖于jQuery,也不依赖于animate.css)
        2.3 定制性高,使用简单方便快捷
        2.4 和animte.css, WoW一样, 不支持低版本浏览器(IE10+)
    
        3.使用步骤:
        1.引入框架
        2.搭建结构体
        3.创建ScrollReveal对象
        4.调用ScrollReveal对象的reveal方法, 将需要执行动画的元素给它
         */
        /*
        4.scrollReveal配置
        reset     boolean true / false元素是否在容器边界内来回滚动时都产生动画效果
        duration  number  500 动画持续时间,单位毫秒
        delay     number  0   动画的延迟时间,单位毫秒
        rotate        object/number   { x: 0, y: 0, z: 0 }    开始的角度,单位degrees
        opacity       number  0   开始的透明度
        scale     number  0.9 开始的缩放值
        distance  string  可用任何CSS单位值,如:’20px’,’10vw’,’5%’ 动画的距离
        origin        string  ‘top’,’right’,’bottom’,’left’   动画的方向
        easing        string  ‘ease’ ‘ease-out’‘ease-in-out’‘ease-in-out’ 动画的easing效果,可以是任何有效的CSS easing值
    
        5.scrollReveal事件
        beforeReveal    动画开始之前的回调
        afterReveal     动画结束时放的回调
        beforeReset     动画开始被重置
        afterReset      动画重置结束
        什么是动画重置?
        执行动画的元素离开屏幕之后就会被重置
        重置就是重新设置为动画开始之前的默认样式
        * */
        let sr = ScrollReveal({
            reset: true,
            duration: 5000,
            // delay: 5000,
            rotate: {x: 0, y: 0, z: 45},
            opacity: 0.5,
            scale: 2,
            distance: "500px",
            origin: "left",
            easing: "ease-in-out",
            beforeReveal: function (ele) {
                // 动画开始之前的回调
                // console.log("动画开始之前", ele);
            },
            afterReveal: function (ele) {
                // 动画结束之后的回调
                // console.log("动画结束之后", ele);
            },
            beforeReset: function (ele) {
                // 动画元素被重置之前的回到
                // console.log("动画元素被重置", ele);
            },
            afterReset: function (ele) {
                // 动画元素被重置之后的回到
                console.log("动画元素被重置", ele);
            },
        });
        sr.reveal('div');
    </script>
    </body>
    </html>
    
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,072评论 0 3
  • 本节目录 WOW.js简介 WOW.js基础用法 【简介】 WOW.js的出现,让Animate.css有更多可玩...
    德育处主任阅读 3,142评论 0 13
  • 第一部分HTML&CSS整理答案1.什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HTML5...
    Programmer客栈阅读 1,994评论 0 12
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,301评论 0 11
  • 手机在这个快速发达的时代,成了必需品 几乎人手一部。手机的品牌儿也是琳琅满目,什么苹果,中兴,OPPO等等,数...
    佳鑫红阅读 182评论 2 8