方案一:使用 CSS Transition(推荐简单场景)
WXSS
.transition-effect {
transition: all 0.4s ease-in-out;
will-change: bottom;
}
WXML
<view
class="transition-effect"
style="position: absolute;bottom: {{refreshBottomHeight}}rpx;left: 50%;transform: translateX(-50%);"
bindtap="rightBtn">
</view>
方案二:使用小程序动画API(推荐复杂动画)
JS
Page({
data: {
animationData: {}
},
onReady() {
this.animation = wx.createAnimation({
duration: 400,
timingFunction: 'ease-out',
delay: 0
})
},
updatePosition(newHeight) {
this.animation.bottom(newHeight + 'rpx').step()
this.setData({
animationData: this.animation.export()
})
}
})
WXMl
<view
animation="{{animationData}}"
style="position: absolute;left: 50%;transform: translateX(-50%);"
bindtap="rightBtn">
</view>
方案对比
特性 | CSS Transition | 小程序动画API |
---|
实现难度 | ⭐(简单) | ⭐⭐(需要API调用) |
性能 | ⭐⭐⭐(GPU加速) | ⭐⭐(部分机型有优化) |
控制精度 | 基于样式变化 | 可编程控制 |
兼容性 | 全平台支持 | 需要基础库2.9.0+ |
复杂动画支持 | 仅支持简单过渡 | 支持多属性复合动画 |