VaporCSS animation样式写法参考
过渡属性
控制哪些 CSS 属性应该参与过渡效果:
| 类名 | 说明 | 生成的 CSS | 备注 |
|---|---|---|---|
atp-a | 全部属性过渡 | transition-property: all; | |
atp-n | 无属性过渡 | transition-property: none; | |
atp-w | 宽度过渡 | transition-property: width; | |
atp-h | 高度过渡 | transition-property: height; | |
atp-m | 外边距过渡 | transition-property: margin; | |
atp-mt | 上外边距过渡 | transition-property: margin-top; | |
atp-mb | 下外边距过渡 | transition-property: margin-bottom; | |
atp-ml | 左外边距过渡 | transition-property: margin-left; | |
atp-mr | 右外边距过渡 | transition-property: margin-right; | |
atp-l | 左位置过渡 | transition-property: left; | |
atp-r | 右位置过渡 | transition-property: right; | |
atp-t | 上位置过渡 | transition-property: top; | |
atp-b | 下位置过渡 | transition-property: bottom; | |
atp-p | 内边距过渡 | transition-property: padding; | |
atp-pl | 左内边距过渡 | transition-property: padding-left; | |
atp-pr | 右内边距过渡 | transition-property: padding-right; | |
atp-pt | 上内边距过渡 | transition-property: padding-top; | |
atp-pb | 下内边距过渡 | transition-property: padding-bottom; | |
atp-o | 透明度过渡 | transition-property: opacity; | |
atp-bc | 背景颜色过渡 | transition-property: background-color; | |
atp-boc | 边框颜色过渡 | transition-property: border-color; | |
atp-btc | 上边框颜色过渡 | transition-property: border-top-color; | |
atp-bbc | 下边框颜色过渡 | transition-property: border-bottom-color; | |
atp-blc | 左边框颜色过渡 | transition-property: border-left-color; | |
atp-brc | 右边框颜色过渡 | transition-property: border-right-color; | |
atp-tr | 变换过渡 | transition-property: transform; |
过渡 timing 函数
控制过渡效果的速度变化曲线:
| 类名 | 说明 | 生成的 CSS | 备注 |
|---|---|---|---|
attf-e | ease 过渡效果 | transition-timing-function: ease; | 默认值,缓入缓出 |
attf-ei | ease-in 过渡效果 | transition-timing-function: ease-in; | 缓入 |
attf-eo | ease-out 过渡效果 | transition-timing-function: ease-out; | 缓出 |
attf-eio | ease-in-out 过渡效果 | transition-timing-function: ease-in-out; | 缓入缓出 |
attf-l | 线性过渡效果 | transition-timing-function: linear; | 匀速 |
attf-cb | 自定义三次贝塞尔曲线过渡效果 | transition-timing-function: cubic-bezier(); | 需要指定具体的贝塞尔曲线参数 |
过渡持续时间
控制过渡效果的持续时间:
| 类名 | 说明 | 生成的 CSS | 备注 |
|---|---|---|---|
atd-500 | 动画时间 | transition-duration: 500ms; | 支持不同时间值 |
变换系统
旋转
| 类名 | 说明 | 生成的 CSS | 备注 |
|---|---|---|---|
atr-90 | 顺时针旋转 90 度 | transform: rotate(90deg); | 支持不同角度值 |
atr-n90 | 逆时针旋转 90 度 | transform: rotate(-90deg); | 支持不同角度值 |
atrx-90 | X 轴旋转 90 度 | transform: rotateX(90deg); | 支持不同角度值 |
atrx-n90 | X 轴逆时针旋转 90 度 | transform: rotateX(-90deg); | 支持不同角度值 |
atry-90 | Y 轴旋转 90 度 | transform: rotateY(90deg); | 支持不同角度值 |
atry-n90 | Y 轴逆时针旋转 90 度 | transform: rotateY(-90deg); | 支持不同角度值 |
atrz-90 | Z 轴旋转 90 度 | transform: rotateZ(90deg); | 支持不同角度值 |
atrz-n90 | Z 轴逆时针旋转 90 度 | transform: rotateZ(-90deg); | 支持不同角度值 |
缩放
| 类名 | 说明 | 生成的 CSS | 备注 |
|---|---|---|---|
ats-0.5 | 缩放 0.5 倍 | transform: scale(0.5); | 支持不同缩放值 |
atsx-0.5 | X 轴缩放 0.5 倍 | transform: scaleX(0.5); | 支持不同缩放值 |
atsy-0.5 | Y 轴缩放 0.5 倍 | transform: scaleY(0.5); | 支持不同缩放值 |
平移
| 类名 | 说明 | 生成的 CSS | 备注 |
|---|---|---|---|
att-50 | 平移 50rpx | transform: translate(50rpx); | 支持不同距离值 |
att-n50 | 反向平移 50rpx | transform: translate(-50rpx); | 支持不同距离值 |
attx-50 | X 轴平移 50rpx | transform: translateX(50rpx); | 支持不同距离值 |
attx-n50 | X 轴反向平移 50rpx | transform: translateX(-50rpx); | 支持不同距离值 |
atty-50 | Y 轴平移 50rpx | transform: translateY(50rpx); | 支持不同距离值 |
atty-n50 | Y 轴反向平移 50rpx | transform: translateY(-50rpx); | 支持不同距离值 |
变换原点
| 类名 | 说明 | 生成的 CSS | 备注 |
|---|---|---|---|
ato-top,left | 变换原点在左上角 | transform-origin: top left; | 支持不同位置值 |
ato-100%,50% | 变换原点在水平居中偏右 | transform-origin: 100% 50%; | 支持不同位置值 |
使用示例
基本过渡效果
vue
<template>
<view class="atp-bc attf-e atd-500 bg-red-500 hover:bg-blue-500 w-40 h-40 rounded-lg flex items-center justify-center text-white">
悬停变色
</view>
</template>变换效果
vue
<template>
<view class="w-40 h-40 bg-green-500 rounded-lg flex items-center justify-center text-white atp-tr attf-e atd-500 hover:atr-180">
悬停旋转
</view>
</template>复杂动画组合
vue
<template>
<view class="w-40 h-40 bg-purple-500 rounded-lg flex items-center justify-center text-white atp-tr attf-e atd-500 hover:atr-360 hover:ats-1.2">
悬停旋转缩放
</view>
</template>最佳实践
- 组合使用:将过渡属性、timing 函数和持续时间类组合使用,创建流畅的动画效果
- 性能优化:优先使用
transform和opacity属性进行动画,它们的性能更好 - 适度使用:过度的动画可能会影响用户体验,使用时要适度
- 响应式设计:在不同屏幕尺寸上测试动画效果,确保在所有设备上都能正常工作
- 可访问性:考虑添加减少动画的选项,以满足不同用户的需求
自定义动画
除了内置的过渡和变换效果,你还可以通过 theme.json 配置文件添加自定义动画:
json
{
"animations": {
"bounce": "animation: bounce 1s infinite",
"pulse": "animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite"
}
}然后在你的组件中使用这些自定义动画类:
vue
<template>
<view class="w-40 h-40 bg-yellow-500 rounded-lg flex items-center justify-center text-white animation-bounce">
弹跳动画
</view>
</template>