AOS 页面滚动动画库的使用
Github 地址:AOS - Animate on scroll library
演示,这个是用了 AOS 滚动动画库的一个网站

1 安装
基本的
在 html 文件的 标签中引入 AOS-CSS 文件
| 1 | < link rel =“ stylesheet ” href =“ https://unpkg.com/aos@next/dist/aos.css ” /> | 
在关闭 标签之前添加脚本,并初始化AOS
| 1 | <script src="https://unpkg.com/aos@next/dist/aos.js"></script> | 
包管理器
在项目根目录下安装 aos 包
- yarn add aos@next
- 或者 npm install --save aos@next
导入脚本,样式并初始化AOS
| 1 | import AOS from 'aos'; | 
为了 AOS 生效,必须确保在编写过程中配置了样式加载器,并正确绑定。
2 页面中怎样使用
2.1 初始化 AOS
| 1 | AOS.init(); | 
2.2 使用 data-aos 属性设置动画
| 1 | <div data-aos="fade-in"></div> | 
使用 data-aos-* 来调整行为
| 1 | <div | 
注释:点击跳转有时需要按住 Ctrl
锚点
还有一个配置属性可以用,不过只能用在每个元素基础上
data-aos-anchor - 元素的偏移量 offset 将用来触发动画,代替实际的
举例:
| 1 | <div data-aos="fade-up" data-aos-anchor=".other-element"></div> | 
这样可以在滚动到另一元素时触发某一元素动画,对固定位置元素很有用。
3 API
三种方式使 AOS 对象成为全局变量:
- init- 初始化
- refresh- 重新计算元素的所有偏移量和位置(在窗口调整大小时调用)
- refreshHard- 使用 AOS 元素和触发器重新初始化数组 refresh(调用与 DOM 变化相关的 aos 元素)
4 JS Events
元素在进行动画处理时,AOS 可以在文档上调度两个事件:aos:in和aos:out 用来实现一些额外的功能。
| 1 | document.addEventListener('aos:in', ({ detail }) => { | 
也可以设置 data-aos-id 属性来告诉 AOS 触发自定义事件:
| 1 | <div data-aos="fade-in" data-aos-id="super-duper"></div> | 
此时可以监听两个自定义事件:
- aos:in:super-duper
- aos:out:super-duper
5 其他方法
- 添加自定义动画 - 有时仅靠内置动画不能实现想要的功能,比如根据分辨率不同在一个盒子中需要两种不同的动画。这时就添加自定义动画,步骤如下,首先在 JS 中自定义动画: - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16- [data-aos="new-animation"] { 
 opacity: 0;
 transition-property: transform, opacity;
 &.aos-animate {
 opacity: 1;
 }
 @media screen and (min-width: 768px) {
 transform: translateX(100px);
 &.aos-animate {
 transform: translateX(0);
 }
 }
 }- 然后在 HTML 使用: - 1 - <div data-aos="new-animation"></div> - 该元素将只为移动设备上的 - opacity设置动画,但是从768px宽度开始,该元素也会从右向左滑动。
- 添加自定义 easing - 与添加自定义动画类似: - 1 
 2
 3
 4
 5
 6- [data-aos] { 
 body[data-aos-easing="new-easing"] &,
 &[data-aos][data-aos-easing="new-easing"] {
 transition-timing-function: cubic-bezier(.250, .250, .750, .750);
 }
 }
- 自定义默认动画距离 - 内置动画的默认距离是100px,只要使用 SCSS 就可以重写默认距离: - 1 
 2- $aos-distance: 200px; // It has to be above import 
 @import 'node_modules/aos/src/sass/aos.scss';- 必须配置构建过程以允许其 - node_modules预先导入样式。
- 集成外部 CSS 动画库(例如 Animation.css) - 使用 - animatedClassName改变 AOS 默认行为,将放置在 data-aos 中的 class 类名在页面滚动时生效。- 1 - <div data-aos="fadeInUp"></div> - 1 
 2
 3
 4
 5- AOS.init({ 
 useClassNames: true,
 initClassName: false,
 animatedClassName: 'animated',
 });- 上面的元素将获得两个类: - animated和- fadeInUp。使用以上三个设置的不同搭配方式,能够集成任何外部 CSS 动画库。外部库在实际动画之前并不太在意动画状态,因此,若想这些元素在滚动前不可见,需要添加下面这样的样式:- 1 
 2
 3
 4
 5
 6- [data-aos] { 
 visibility: hidden;
 }
 [data-aos].animated {
 visibility: visible;
 }
6 注意事项
设置:duration, delay
编写简单的 CSS 来增加另一个持续时间,如:
| 1 | body[data-aos-duration='4000'] [data-aos], | 
此代码将添加 4000ms 的 duration 时间,可供在 AOS 元素上设置,或在初始化 AOS 脚本时设置为全局 duration 时间。
注意 [data-aos][data-aos] 不是语法错误,而是一个技巧,可以使单个配置比全局配置更重要,这样就不需要标明 “!important”。
用法示例:
| 1 | <div data-aos="fade-in" data-aos-duration="4000"></div> | 
7 所有动画,easings 和锚点位置的完整列表
- 动画:- 淡入淡出动画- fade
- 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-do- wn
- 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 函数:- 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
 






