meface/docs/article/web/css/aos.md

237 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 页面滚动动画库(aos)
date: 2020-10-26
author: ac
tags:
- aos
- CSS3
categories:
- Web
---
> aos.js是一款用于页面滚动动画效果的js库。该动画库可以在页面滚动时提供28种不同的动画效果以及多种easing效果在页面滚动时给元素添加动画过渡到原来的状态。
<!-- more -->
## 页面滚动动画库(aos)
[[aos的github地址](https://github.com/michalsnik/aos)] `https://github.com/michalsnik/aos`
### 安装
1. CDN 的方式
引用aos的样式文件
```html
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
```
在`body`标签 中添加`aos`库
```html
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
```
2. npm 的方式
```shell
npm insatll aos
```
在入口文件`main.js`中引入`AOS`库
```javascript
import AOS from 'aos';
import 'aos/dist/aos.css';
```
### 使用
#### 1.初始化`AOS`
执行`AOS.init(option)`函数,`AOS`会在`<body>`元素中添加一些`option`配置项内容,通常配置页面整体的一些动画过渡属性和全局的配置。
```javascript
AOS.init({
// Global settings:
disable: false, // 设置AOS禁用的条件: 'phone', 'tablet', 'mobile', boolean, expression or function
startEvent: 'DOMContentLoaded', // 初始化监听事件
initClassName: 'aos-init', // 每个aos渲染的元素初始化的class样式默认是aos-init
animatedClassName: 'aos-animate', // 每个aos渲染的元素的动态属性的样式
useClassNames: false, //当为true时进行或完成动画的元素的`data-aos`属性的值会添加到class属性中
disableMutationObserver: false, // disables automatic mutations' detections (advanced)
debounceDelay: 50, // the delay on debounce used while resizing window (advanced)
throttleDelay: 99, // the delay on throttle used while scrolling the page (advanced)
// Settings that can be overridden on per-element basis, by `data-aos-*` attributes:
offset: 120, //初始触发点的(Y轴)偏移量(单位:px)
delay: 0, // 动画的延迟时间,取值[0,3000]步长50ms
duration: 400, // 动画的持续时间,取值[0,3000], 步长50ms
easing: 'ease', // default easing for AOS animations
once: false, // 动画是否只渲染一次
mirror: false, // 当滚动经过元素时,是否应该将其动画化
anchorPlacement: 'top-bottom', // 元素触发动画的位置
});
```
#### 2.配置动画元素属性
```html
<div
data-aos="fade-up"
data-aos-offset="200"
data-aos-delay="50"
data-aos-duration="1000"
data-aos-easing="ease-in-out"
data-aos-mirror="true"
data-aos-once="false"
data-aos-anchor-placement="top-center"
>
</div>
```
| **属性** | **属性** | **属性** | **默认值** |
| -------------------- | -------------------------------------------------- | ------------ | ---------- |
| aos-offset | 触发元素动画的位置在Y轴上的偏移量 | 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 |
**淡入淡出动画:**
- 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
#### 3.示例
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>AOS示例</title>
<style>
* {
box-sizing: border-box;
}
.item {
width: 200px;
height: 200px;
margin: 50px auto;
padding-top: 75px;
background: #ccc;
text-align: center;
color: #FFF;
font-size: 3em;
}
</style>
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
<body>
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
<script>
AOS.init({
duration: 1200,
})
</script>
<div class="item" data-aos="fade-up">1</div>
<div class="item" data-aos="fade-down">2</div>
<div class="item" data-aos="fade-right">3</div>
<div class="item" data-aos="fade-left">4</div>
<div class="item" data-aos="zoom-in">5</div>
<div class="item" data-aos="zoom-out">6</div>
<div class="item" data-aos="slide-up">7</div>
<div class="item" data-aos="flip-up">8</div>
<div class="item" data-aos="flip-down">9</div>
<div class="item" data-aos="flip-right">10</div>
<div class="item" data-aos="flip-left">11</div>
</body>
</html>
```
### 参考文章
[1] aos.js超赞页面滚动元素动画jQuery动画库 https://www.jq22.com/jquery-info8150
[2] aos https://github.com/michalsnik/aos#animations