🔥 认识我们的新项目 t0ggles - 您终极的项目管理工具! 🔥
JavaScriptReactVueSvelteElement

Atropos 元素文档

浏览器兼容性

Atropos 兼容支持以下功能的浏览器

安装

我们可以从 NPM 安装 Atropos

npm i atropos

样式

要为 Atropos 组件设置样式,您可以使用 part 属性定位和自定义组件的各个部分。以下部分可用于设置样式

  • scale:此部分表示用于缩放组件的容器。您可以将样式应用于此部分以控制缩放行为。
  • rotate:此部分表示用于旋转组件的容器。您可以定位此部分以应用与旋转相关的样式。
  • inner:此部分表示组件的内部内容。您可以设置此部分的样式以修改内部内容的外观。

以下是如何编写 CSS 规则来设置 atropos-component 内部部分样式的示例

atropos-component::part(inner) {
/* Your styles for the inner part */
}

组件用法

<script>
// import Atropos component
import AtroposComponent from 'atropos/element';
// register Atropos component
customElements.define('atropos-component', AtroposComponent);
</script>
<atropos-component class="my-atropos">
<!-- ... -->
</atropos-component>

除了 Atropos 的主要 CSS 样式外,我们可能还需要添加一些自定义样式,例如设置 Atropos 的大小

.my-atropos {
width: 320px;
height: 160px;
}

组件属性

名称类型默认值描述
active-offset数字50激活(悬停)时主容器的偏移量,基本上表示 translateZ
always-active布尔值false启用 Atropos 始终处于活动状态
duration数字300激活、离开和旋转期间的过渡持续时间(以毫秒为单位)
rotate布尔值true定义是否在指针移动时旋转容器(激活时)
rotate-touch布尔值 | 字符串true定义是否在触摸移动时旋转容器(激活时),必须启用 rotate。还接受特殊值
  • scroll-y - 在初始垂直触摸移动(垂直滚动)时不会旋转容器,基本上不会阻止页面垂直滚动
  • scroll-x - 在初始水平触摸移动(水平滚动)时不会旋转容器,基本上不会阻止页面水平滚动
rotate-x-max数字15沿 X 轴的最大旋转角度(以度为单位)
rotate-y-max数字15沿 Y 轴的最大旋转角度(以度为单位)
rotate-x-invert布尔值false反转沿 X 轴的旋转角度(以度为单位)
rotate-y-invert布尔值false反转沿 Y 轴的旋转角度(以度为单位)
stretch-x数字0沿 X 轴移动(平移)atropos 容器到此值(以百分比表示)。例如,值 50 会将容器移动其宽度的 +-50%。仅适用于多个 Atropos,当多个 Atropos 使用相同的父级 eventsEl 容器时
stretch-y数字0沿 Y 轴移动(平移)atropos 容器到此值(以百分比表示)。例如,值 50 会将容器移动其高度的 +-50%。仅适用于多个 Atropos,当多个 Atropos 使用相同的父级 eventsEl 容器时
stretch-z数字0沿 Z 轴移动(平移)atropos 容器到此值(以百分比表示)。例如,值 50 会将容器移动其高度的 +-50%。仅适用于多个 Atropos,当多个 Atropos 使用相同的父级 eventsEl 容器时
common-origin布尔值true将为所有具有相同父级的 Atropos 组件动态设置 transform-origin 到相同点(通常是指针位置)。仅适用于多个 Atropos,当多个 Atropos 使用相同的父级 eventsEl 容器时
shadow布尔值true启用阴影
shadow-offset数字50阴影偏移量,基本上是阴影元素的 translateZ
shadow-scale数字1阴影缩放因子
highlight布尔值true启用高亮
事件
enter函数事件当 Atropos 激活(悬停)时触发
leave函数事件当 Atropos 失效(指针移出)时触发
rotatefunction(event)事件在旋转时触发。
插槽
root此处传递的元素将添加到 atropos 根元素
scale此处传递的元素将添加到 atropos-scale 元素
rotate此处传递的元素将添加到 atropos-rotate 根元素

例如

<script>
import AtroposComponent from 'atropos/element';
customElements.define('atropos-component', AtroposComponent);
</script>
<atropos-component class="my-atropos"
active-offset="40"
shadow-scale="1.05"
>
</atropos-component>
<script>
const atroposComponent = document.querySelector('.my-atropos');
atroposComponent.addEventListener('enter', function() {
console.log('Enter');
});
atroposComponent.addEventListener('leave', function() {
console.log('Leave');
});
atroposComponent.addEventListener('rotate', function(event) {
console.log('Rotate', event.detail);
</script>

获取实例

我们可以访问 Atropos 实例,如下所示

const atroposComponent = document.querySelector('atropos-component');
const atroposInstance = atroposComponent.atroposRef;

控制元素偏移量

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(最大旋转角度)。

例如

<atropos-component>
<!--
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" />
</atropos-component>

接下来是什么?

如您所见,将 Atropos 集成到您的网站或应用程序中非常容易。以下是一些后续步骤