UNIAPP为分别多个元素添加动画

	.scale{
		animation: scale 300ms;
	}
	@keyframes scale{
		0% {transform: scale(1);}
		50% {transform: scale(1.2);}
		100% {transform: scale(1);}
	}

我们知道上面是css动画,

当一个元素被加上.scale这个样式名时,就会产生动画

uniapp中我们可以为元素动态绑定class

<view :class="sclae:isTue" @click="viewClick">some.text</view>

当点击时运行viewClick函数,在函数中设置isTue变量为true,就可以添加上.scale

<view :class="sclae:isTue" @click="viewClick">some.text</view>
<script setup>
const isTrue=ref(false)
function viewClick(){
    isTrue.value=True
}
</script>

这样有一个问题,如果很多元素需要添加,

则需要定义很多的变量,

我们可以这样变通下:

<template>
<view class="box boxcontent" :class="{scale:isClick[11]}" @click="clickState(11)">
 1111
</view>
<view class="box boxcontent" :class="{scale:isClick[12]}" @click="clickState(12)">
 222
</view>

</template>

<script setup>

const isClick=ref({})

   	function clickState(e){
		isClick.value[e]=true;
		setTimeout(()=>{
			isClick.value[e]=false;
		},300)
	}
</script>

<style lang="scss" scoped>
	.scale{
		animation: scale 300ms;
	}
	@keyframes scale{
		0% {transform: scale(1);}
		50% {transform: scale(1.2);}
		100% {transform: scale(1);}
	}
</style>

变量定义成对象,函数传入一个数字,点击时把这个数字存入对象中,

这样的话,我们只需要定义一个变量,用不同的数字就可以为不周的元素添加动画了.

同样,

也可以为列表项批量添加动画,如

<view v-for="(item,index) in orderList" :key="index">
		<view @togo="click(key)" :class="{scale:isClick[item._id]}>
        </view>
</view>
<script setup>
    const isClick = ref({}) //动画钩子

	function click(e) {
		isClick.value[e] = true
		console.log(e);
		setTimeout(() => {
			isClick.value[e] = false;
			uni.navigateTo({
				url: '/pages/myorderPsList/myorderPsList?id=' + e
			})
		}, 300)
}

</script>
<style lang="scss" scoped>
	.scale {
		animation: scale 300ms;
	}

	@keyframes scale {
		0% {
			transform: scale(1);
		}

		50% {
			transform: scale(1.2);
		}

		100% {
			transform: scale(1);
		}
	}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值