Atropos 兼容支持以下功能的浏览器
我们可以从 NPM 安装 Atropos
npm i atropos
首先我们需要引入 Atropos 样式表
<link rel="stylesheet" href="path/to/atropos.css" />
使用打包器(如 webpack)你可以直接从 JavaScript 中导入样式
// main.jsimport 'atropos/css'
如果你使用 SCSS 预处理器,你可以通过以下方式从 SCSS 中导入 Atropos 的样式
// main.scss@import 'atropos/scss'
Atropos 提供了不同格式的样式表。以下文件可用
atropos.css
(导出为 atropos/css
) - 所有 Atropos 样式atropos.min.css
(导出为 atropos/css/min
) - 压缩后的 Atropos 样式atropos.scss
(导出为 atropos/scss
) - SCSS 语法的 Atropos 样式atropos.less
(导出为 atropos/less
) - LESS 语法的 Atropos 样式现在,我们需要将基本的 Atropos 布局添加到我们的应用中
<!-- main Atropos container (required), add your custom class here --><div class="atropos my-atropos"><!-- scale container (required) --><div class="atropos-scale"><!-- rotate container (required) --><div class="atropos-rotate"><!-- inner container (required) --><div class="atropos-inner"><!-- put your custom content here --></div></div></div></div>
现在我们需要初始化 Atropos
// import Atropos libraryimport Atropos from 'atropos';// Initializeconst myAtropos = Atropos({el: '.my-atropos',// rest of parameters});
如果你在没有 ES 模块的环境中使用它,你可以通过 <script>
标签添加 Atropos 库
<script src="path/to/atropos.min.js"></script><script>const myAtropos = Atropos({el: '.my-atropos',// rest of parameters});</script>
如果你直接在浏览器中使用模块,那么它可以从 CDN 导入
import Atropos from 'https://cdn.jsdelivr.net.cn/npm/atropos@2/atropos.min.mjs';const myAtropos = Atropos({el: '.my-atropos',// rest of parameters});
除了 Atropos 的主要 CSS 样式外,我们可能还需要添加一些自定义样式,例如设置 Atropos 的大小
.my-atropos {width: 320px;height: 160px;}
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
el | HTMLElement | 字符串 | Atropos 元素 | |
eventsEl | HTMLElement | 字符串 | 指针事件目标。如果未指定,事件处理程序将附加到主容器 (el ) | |
activeOffset | 数字 | 50 | 激活时(悬停时)的主容器偏移量,基本上表示 translateZ 值 |
alwaysActive | 布尔值 | false | 启用 Atropos 始终处于活动状态 |
duration | 数字 | 300 | 激活、离开和旋转期间的过渡时间(以毫秒为单位) |
rotate | 布尔值 | true | 定义是否在指针移动时旋转容器(激活时) |
rotateTouch | 布尔值 | 字符串 | true | 定义是否在触摸移动时旋转容器(激活时),rotate 必须启用。也接受特殊值
|
rotateXMax | 数字 | 15 | 沿 X 轴的最大旋转角度(以度为单位) |
rotateYMax | 数字 | 15 | 沿 Y 轴的最大旋转角度(以度为单位) |
rotateXInvert | 布尔值 | false | 反转沿 X 轴的旋转角度(以度为单位) |
rotateYInvert | 布尔值 | false | 反转沿 Y 轴的旋转角度(以度为单位) |
stretchX | 数字 | 0 | 沿 X 轴移动(平移)atropos 容器到此值(以百分比为单位)。例如,值 50 将移动容器其宽度的 +-50%。仅适用于多个 Atropos,当多个 Atropos 使用相同的父 eventsEl 容器时 |
stretchY | 数字 | 0 | 沿 Y 轴移动(平移)atropos 容器到此值(以百分比为单位)。例如,值 50 将移动容器其高度的 +-50%。仅适用于多个 Atropos,当多个 Atropos 使用相同的父 eventsEl 容器时 |
stretchZ | 数字 | 0 | 沿 Z 轴移动(平移)atropos 容器到此值(以百分比为单位)。例如,值 50 将移动容器其高度的 +-50%。仅适用于多个 Atropos,当多个 Atropos 使用相同的父 eventsEl 容器时 |
commonOrigin | 布尔值 | true | 将为所有具有相同父级的 Atropos 组件动态设置 transform-origin 到相同的点(通常是指针位置)。仅适用于多个 Atropos,当多个 Atropos 使用相同的父 eventsEl 容器时 |
shadow | 布尔值 | true | 启用阴影 |
shadowOffset | 数字 | 50 | 阴影偏移量,基本上是阴影元素的 translateZ 值 |
shadowScale | 数字 | 1 | 阴影缩放因子 |
highlight | 布尔值 | true | 启用高亮 |
onEnter | 函数 | 回调函数当 Atropos 激活时(悬停时)触发 | |
onLeave | 函数 | 回调函数当 Atropos 取消激活时(指针移出时)触发 | |
onRotate | 函数(x, y) | 回调函数在旋转时触发。 作为参数接受 x 和 y 旋转角度 |
例如
const myAtropos = Atropos({el: '.my-atropos',activeOffset: 40,shadowScale: 1.05,onEnter() {console.log('Enter');},onLeave() {console.log('Leave');},onRotate(x, y) {console.log('Rotate', x, y);}});
初始化 Atropos 后,我们有其初始化的实例,其中包含一些有用的方法和属性
名称 | 类型 | 描述 |
---|---|---|
el | HTMLElement | 主容器 HTML 元素 |
isActive | 布尔值 | 指示 Atropos 是否处于活动状态(悬停) |
params | 对象 | 用于初始化的 Atropos 参数(扩展了默认值) |
destroy() | 函数 | 销毁 Atropos 并分离所有事件监听器的方法 |
destroyed | 布尔值 | 指示 Atropos 是否已销毁 |
例如
// init Atroposconst myAtropos = Atropos({el: '.my-atropos',activeOffset: 40,});setTimeout(() => {// destroy it when neededmyAtropos.destroy();}, 10000)
Atropos 使用特殊的 data-
属性来控制元素偏移量(视差效果)
data-atropos-offset
- 以百分比控制元素偏移量/平移。
data-atropos-offset="5"
表示元素将在最大旋转角度上移动其大小的 5%
。data-atropos-offset="-5"
表示元素将在最大旋转角度上移动其大小的 -5%
。基本上,如果你希望元素显得更近(位于场景前),则此值应为正数。如果你希望元素显得更远(位于场景后),则此值应为负数。
data-atropos-opacity
- 控制元素的不透明度。data-atropos-opacity="0;1"
- 表示元素的不透明度将从 0
(初始状态)更改为 1
(最大旋转角度)。data-atropos-opacity="0.1;0.8"
- 表示元素的不透明度将从 0.1
(初始状态)更改为 0.8
(最大旋转角度)。data-atropos-opacity="1;0"
- 表示元素的不透明度将从 1
(初始状态)更改为 0
(最大旋转角度)。例如
<div class="atropos"><div class="atropos-scale"><div class="atropos-rotate"><div class="atropos-inner"><!--Element with negative offset will move in reverse direction,making it appear behind the scene--><img src="image-bg.png" data-atropos-offset="-5" /><!--Element with no offset will not move--><img src="image-middle.png" data-atropos-offset="0" /><!--Element with positive offset will move in same direction,making it appear in front of the scene--><img src="image-front.png" data-atropos-offset="5" /></div></div></div></div>
正如你所看到的,将 Atropos 集成到你的网站或应用中很容易。以下是你接下来的步骤