使用bindingx,没有margin,通过height实现
在需要margin地方中间插入一个空view,修改高度来实现同样的动画效果
<template>
<view class="content">
<view ref="empty"></view>
<button @tap="handleStart">开始动画</button>
<button @tap="handleStop">停止动画</button>
</view>
</template>
<script>
const Binding = uni.requireNativePlugin('bindingx')
export default {
data() {
return {
steps: [32,0,16,0],
animationStatus: false,
}
},
methods: {
handleStart() {
if(this.animationStatus) return
this.animationStatus = true
this.startAnimation(0)
},
handleStop() {
this.animationStatus = false
},
startAnimation(i) {
const current = this.steps[i]
const prev = this.steps[i - 1] || this.steps[this.steps.length - 1]
const token = Binding.bind({
eventType: 'timing',
exitExpression: 't>125',
props: [
{
element: this.$refs.empty.ref,
property: 'height',
expression: `easeInOutQuint(t,${prev},0+${current - prev},125)`
},
],
},(result) => {
if(result.state == 'exit') {
Binding.unbind(token)
i++
this.animationStatus && this.startAnimation(i == this.steps.length ? 0 : i)
}
})
}
}
}
</script>
3 个回复
传播星球 (作者)
试了好多种方法都不行,有什么方式能代替吗
爱豆豆 - 办法总比困难多
animation没有marginBottom属性 用height代替了 效果差不多 你试试
参考文档:https://uniapp.dcloud.net.cn/api/ui/animation.html
传播星球 (作者)
我用你提供的代码,没有任何效果啊
2024-07-02 16:02
爱豆豆
回复 传播星球: 测错了 测的h5 不好意思 下面有人回答了 你看下
2024-07-02 16:46
爱豆豆
回复 传播星球: 直接控制样式也可以实现类似效果的
2024-07-02 17:18
十二112
使用bindingx,没有margin,通过height实现
在需要margin地方中间插入一个空view,修改高度来实现同样的动画效果