Image placeholder

AOS – 超赞页面滚动元素动画

Image placeholder
F2EX 2016-07-18

aos

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

安装 AOS

  • 使用 bower
    bower install aos --save
  • 使用 npm
    npm install aos --save
  • 直接下载 -> 点这里

添加 styles

<link rel="stylesheet" href="bower_components/aos/dist/aos.css" />

添加 scripts

<script src="bower_components/aos/dist/aos.js"></script>

AOS 1.2.0版本,可作为UMD模块,你可以使用它作为 AMD, Global, Node or ES6 模块.

初始化

<script>
  AOS.init();
</script>

基本用法

要使用aos动画库,你需要做的就是在需要动画的元素上添加aos属性,例如:

<div data-aos="animation_name">

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

下面是一个所有可用的动画列表:)

高级设置

在元素上还可以添加以下一些属性:

属性 描述 示例值 默认值
data-aos-offset 是立刻触发动画还是在指定时间之后触发动画 200 120
data-aos-duration 动画持续时间 600 400
data-aos-easing 动画的easing动画效果 ease-in-sine ease
data-aos-delay 动画的延迟时间 300 0
data-aos-anchor 锚元素。使用它的偏移来取代实际元素的偏移来触发动画 #selector null
data-aos-anchor-placement 锚位置,触发动画时元素位于屏幕的位置 top-center top-bottom
data-aos-once 动画是否只会触发一次,或者每次上下滚动都会触发 true false

*注意,aos-duration的动画持续时间的范围从50-3000毫秒,如果你想设置更大的值,可以在页面中添加下面的CSS代码

body[data-aos-duration='4000'] [data-aos], [data-aos][data-aos][data-aos-duration='4000']{
    transition-duration: 4000ms;
}

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

数据 AOS 锚的位置,你可以为每一个元素设置不同的配置选项,原理很简单,每个锚放置的选项包含两个位置,即顶和中心。这意味着,动画将被触发时,顶部的元素将达到中心的窗口。底部顶部意味着动画将被触发时,底部的一个元素到达顶部的窗口,等等。下面你可以找到所有的锚定位置选项列表。

示例

<div data-aos="fade-zoom-in" data-aos-offset="200" data-aos-easing="ease-in-sine" data-aos-duration="600">
<div data-aos="flip-left" data-aos-delay="100" data-aos-anchor=".example-selector">
<div data-aos="fade-up" data-aos-anchor-placement="top-center">

API

AOS对象为一个全局变量,现在有三种方法可用:

  • init – 初始化AOS
  • refresh – 重新计算所有的偏移量和位置的元素(称为窗口大小调整)
  • refreshHard – 重新初始化数组元素与AOS和触发更新(称为DOM的变化,AOS元素相关的)

举个栗子:

AOS.refresh();

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

全局配置

如果你不想单独每个元素做一个动画配置,你可以通过 init() 方法来统一配置所有元素的动画效果。

额外配置

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

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

禁用AOS

如果你想在小屏幕设备中禁用AOS,可以:

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

你也可以设置自己的禁用条件,例如在屏幕小于1024像素时禁用AOS:

disable: window.innerWidth < 1024

或者传入一个函数,返回true或false:

disable: function () {
    var maxWidth = 1024;
    return window.innerWidth < maxWidth;
  }

开始动画事件

如果你不想滚动动画从页面加载(DOMContentLoaded)后就开始执行,可以使用startEvent来设置自己的事件,AOS会在document上监听这个事件:

动画

  • 淡入淡出动画:
    • 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