正文 14053字数 1,018,522阅读

aos.js是一款效果超赞的页面滚动元素动画jQuery动画库插件。该动画库可以在页面滚动时提供28种不同的元素动画效果,以及多种easing效果。在页面往回滚动时,元素会恢复到原来的状态。

使用方法
在页面中引入aos.css文件,jquery和aos.js文件
<link rel="stylesheet" href="dist/aos.css" /> <script src="js/jquery.min.js"></script> <script src="dist/aos.js"></script>
Run code
Cut to clipboard

    文件打包下载

    HTML结构
    要使用aos动画库,你需要做的就是在需要动画的元素上添加aos属性,例如:
    1 <div aos="animation_name">
    Run code
    Cut to clipboard


      aos脚本将会在页面滚动时,在该元素上触发相应的动画。

      在元素上还可以添加以下一些属性:
      属性 属性 属性 默认值
      aos-offset 是立刻触发动画还是在指定时间之后触发动画 200 120
      aos-duration 动画持续时间 600 400
      aos-easing 动画的easing动画效果 ease-in-sine ease
      aos-delay 动画的延迟时间 300 0
      aos-anchor 锚元素。使用它的偏移来取代实际元素的偏移来触发动画 #selector null
      aos-anchor-placement 锚位置,触发动画时元素位于屏幕的位置 top-center top-bottom
      aos-once 动画是否只会触发一次,或者每次上下滚动都会触发 true false
      注意,aos-duration的动画持续时间的范围从50-3000毫秒,如果你想设置更大的值,可以在页面中添加下面的CSS代码:
      body[aos-duration='4000'] [aos], [aos][aos][aos-duration='4000']{ transition-duration: 4000ms; }
      Run code
      Cut to clipboard

        上面的代码将动画的持续时间修改为4000毫秒。

        示例代码:
        <div aos="fade-zoom-in" aos-offset="200" aos-easing="ease-in-sine" aos-duration="600"> <div aos="flip-left" aos-delay="100" aos-anchor=".example-selector"> <div aos="fade-up" aos-anchor-placement="top-center">
        Run code
        Cut to clipboard

          如果你担心HTML5校验的问题,可以为上面的属性添加data-前缀。
          <div data-aos="animation_name" data-aos-offset="200" data-aos-easing="ease-in-sine">
          Run code
          Cut to clipboard

            全局配置
            如果你不想单独每个元素做一个动画配置,你可以通过init()方法来统一配置所有元素的动画效果。
            AOS.init({ offset: 200, duration: 600, easing: 'ease-in-sine', delay: 100, });
            Run code
            Cut to clipboard

              额外配置
              AOS提供了2个额外的配置方法,这些方法只能够在初始化时使用。

              配置 描述 示例值 默认值
              disable AOS被禁用的条件 mobile false
              startEvent AOS被初始化的事件名称 exampleEvent DOMContentLoaded
              禁用AOS:

              如果你项在小屏幕设备中禁用AOS,可以:
              AOS.init({ disable: 'mobile' });
              Run code
              Cut to clipboard

                你可以传入3种设备的类型:mobile、phone或tablet。

                你也可以设置自己的禁用条件,例如在屏幕小于1024像素时禁用AOS:
                disable: window.innerWidth < 1024
                Run code
                Cut to clipboard

                  或者传入一个函数,返回true或false。
                  disable: function () { var maxWidth = 1024; return window.innerWidth < maxWidth; }
                  Run code
                  Cut to clipboard

                    开始动画的事件:
                    如果你不想滚动动画从页面加载(DOMContentLoaded)后就开始执行,可以使用startEvent来设置自己的事件,AOS会在document上监听这个事件:
                    AOS.init({ startEvent: 'someCoolEvent' });
                    Run code
                    Cut to clipboard

                      API
                      AOS对象有2个可用的方法:
                      init
                      refresh
                      AOS.refresh();
                      Run code
                      Cut to clipboard

                        上面的代码会重新计算元素的位置和偏移。

                        动画和锚位置
                        动画

                        淡入淡出动画:

                        fade-up

                        fade-down

                        fade-left

                        fade-right

                        fade-up-right

                        fade-up-left

                        fade-down-right

                        fade-down-left

                        翻转动画:

                        flip-up

                        flip-down

                        flip-left

                        flip-right

                        滑动动画:

                        slide-up

                        slide-down

                        slide-left

                        slide-right

                        缩放动画:

                        zoom-in

                        zoom-in-up

                        zoom-in-down

                        zoom-in-left

                        zoom-in-right

                        zoom-out

                        zoom-out-up

                        zoom-out-down

                        zoom-out-left

                        zoom-out-right

                        锚位置

                        top-bottom

                        top-center

                        top-top

                        center-bottom

                        center-center

                        center-top

                        bottom-bottom

                        bottom-center

                        bottom-top

                        easing动画

                        你可以使用以下的一些easing动画效果:

                        linear

                        ease

                        ease-in

                        ease-out

                        ease-in-out

                        ease-in-back

                        ease-out-back

                        ease-in-out-back

                        ease-in-sine

                        ease-out-sine

                        ease-in-out-sine

                        ease-in-quad

                        ease-out-quad

                        ease-in-out-quad

                        ease-in-cubic

                        ease-out-cubic

                        ease-in-out-cubic

                        ease-in-quart

                        ease-out-quart

                        ease-in-out-quart

                        Github项目 效果预览 Github下载搬运工

                        完整html代码示例
                        <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" type="text/css" href="css/normalize.css" /> <link rel="stylesheet" type="text/css" href="css/zzsc.css"> <link rel="stylesheet" href="dist/aos.css" /> <link rel="stylesheet" href="css/styles.css" /> </head> <body> <header class="hero"> <div class="hero-center"> <h1 style="font-family:Microsoft YaHei">aos.js-超赞页面滚动元素动画jQuery动画库</h1> <h2 class="hero__text" aos="fade-up" aos-easing="ease" aos-delay="400">Animate On Scroll <span>Library</span></h2> </div> <span class="hero__scroll" aos="fade-up" aos-easing="ease" aos-delay="800"> Scroll down <br> <i class="chevron bottom"></i> </span> </header> <section class="section section--code"> <div class="container"> <h2 class="section-title">Fade</h2> <div class="code code--small code--left" aos="fade-up">
                        <code class="html"><div aos="fade-up"></div></code>
                        </div> <div class="code code--small code--right" aos="fade-down">
                        <code><div aos="fade-down"></div></code>
                        </div> <div class="code code--small code--left" aos="fade-right">
                        <code><div aos="fade-right"></div></code>
                        </div> <div class="code code--small code--right" aos="fade-left">
                        <code><div aos="fade-left"></div></code>
                        </div> <div class="code code--small code--left" aos="fade-up-right">
                        <code><div aos="fade-up-right"></div></code>
                        </div> <div class="code code--small code--right" aos="fade-up-left">
                        <code><div aos="fade-up-left"></div></code>
                        </div> <div class="code code--small code--left" aos="fade-down-right">
                        <code><div aos="fade-down-right"></div></code>
                        </div> <div class="code code--small code--right" aos="fade-down-left">
                        <code><div aos="fade-down-left"></div></code>
                        </div> </div> </section> <section class="section section--code"> <div class="container"> <h2 class="section-title">Flip</h2> <div class="code code--small code--left" aos="flip-left">
                        <code><div aos="flip-left"></div></code>
                        </div> <div class="code code--small code--right" aos="flip-right">
                        <code><div aos="flip-right"></div></code>
                        </div> <div class="code code--small code--left" aos="flip-up">
                        <code><div aos="flip-up"></div></code>
                        </div> <div class="code code--small code--right" aos="flip-down">
                        <code><div aos="flip-down"></div></code>
                        </div> </div> </section> <section class="section section--code"> <div class="container"> <h2 class="section-title">Zoom</h2> <div class="code code--small code--left" aos="zoom-in">
                        <code><div aos="zoom-in"></div></code>
                        </div> <div class="code code--small code--right" aos="zoom-in-up">
                        <code><div aos="zoom-in-up"></div></code>
                        </div> <div class="code code--small code--left" aos="zoom-in-down">
                        <code><div aos="zoom-in-down"></div></code>
                        </div> <div class="code code--small code--right" aos="zoom-in-left">
                        <code><div aos="zoom-in-left"></div></code>
                        </div> <div class="code code--small code--left" aos="zoom-in-right">
                        <code><div aos="zoom-in-right"></div></code>
                        </div> <div class="code code--small code--right" aos="zoom-out">
                        <code><div aos="zoom-out"></div></code>
                        </div> <div class="code code--small code--left" aos="zoom-out-up">
                        <code><div aos="zoom-out-up"></div></code>
                        </div> <div class="code code--small code--right" aos="zoom-out-down">
                        <code><div aos="zoom-out-down"></div></code>
                        </div> <div class="code code--small code--left" aos="zoom-out-right">
                        <code><div aos="zoom-out-right"></div></code>
                        </div> <div class="code code--small code--right" aos="zoom-out-left">
                        <code><div aos="zoom-out-left"></div></code>
                        </div> </div> </section> <section class="section section--code"> <div class="container"> <h2 class="section-title">Different settings examples</h2> <div class="code code--left" aos="fade-up" aos-duration="3000">
                        <code><div aos="fade-up"
                             aos-duration="3000">
                        </div></code>
                        </div> <div class="code code--right" aos="fade-down" aos-easing="linear" aos-duration="1500">
                        <code><div aos="fade-down"
                             aos-easing="linear"
                             aos-duration="1500">
                        </div></code>
                        </div> <div id="example-anchor" class="code code--left" aos="fade-right" aos-offset="300" aos-easing="ease-in-sine">
                        <code><div aos="fade-right"
                             aos-offset="300"
                             aos-easing="ease-in-sine">
                        </div></code>
                        </div> <div class="code code--right" aos="fade-left" aos-anchor="#example-anchor" aos-offset="500" aos-duration="500">
                        <code><div aos="fade-left"
                             aos-anchor="#example-anchor"
                             aos-offset="500"
                             aos-duration="500">
                        </div></code>
                        </div> <div class="code code--left" aos="fade-zoom-in" aos-easing="ease-in-back" aos-delay="300" aos-offset="0">
                        <code><div aos="fade-zoom-in"
                             aos-easing="ease-in-back"
                             aos-delay="300"
                             aos-offset="0">
                        </div></code>
                        </div> <div class="code code--right" aos="flip-left" aos-easing="ease-out-cubic" aos-duration="2000">
                        <code><div aos="flip-left"
                             aos-easing="ease-out-cubic"
                             aos-duration="2000">
                        </div></code>
                        </div> </div> </section> <section class="section section--code"> <div class="container"> <h2 class="section-title">Anchor placement</h2> <div class="code code--wider code--left" aos="fade-up" aos-anchor-placement="top-bottom">
                        <code><div aos="fade-up"
                             aos-anchor-placement="top-bottom">
                        </div></code>
                        </div> <div class="code code--wider code--right" aos="fade-up" aos-anchor-placement="center-bottom">
                        <code><div aos="fade-up"
                             aos-anchor-placement="center-bottom">
                        </div></code>
                        </div> <div class="code code--wider code--left" aos="fade-up" aos-anchor-placement="bottom-bottom">
                        <code><div aos="fade-up"
                             aos-anchor-placement="bottom-bottom">
                        </div></code>
                        </div> <div class="code code--wider code--right" aos="fade-up" aos-anchor-placement="top-center">
                        <code><div aos="fade-up"
                             aos-anchor-placement="top-center">
                        </div></code>
                        </div> <div class="code code--wider code--left" aos="fade-up" aos-anchor-placement="center-center">
                        <code><div aos="fade-up"
                             aos-anchor-placement="center-center">
                        </div></code>
                        </div> <div class="code code--wider code--right" aos="fade-up" aos-anchor-placement="bottom-center">
                        <code><div aos="fade-up"
                             aos-anchor-placement="bottom-center">
                        </div></code>
                        </div> </div> </section> <script src="js/jquery-2.1.1.min.js" type="text/javascript"></script> <script src="js/highlight.min.js"></script> <script src="dist/aos.js"></script> <script> AOS.init({ easing: 'ease-out-back', duration: 1000 }); </script> <script> hljs.initHighlightingOnLoad(); $('.hero__scroll').on('click', function(e) { $('html, body').animate({ scrollTop: $(window).height() }, 1200); }); </script> </body> </html>
                        Run code
                        Cut to clipboard