CSS之卡片抖动

CSS之卡片抖动

由于我点保存时,右侧卡片必填信息提示不明细,想要增加动画抖动效果

在这里插入图片描述

具体的css代码如下:

.shake-constant {
	animation-name: shake-hard;
	animation-duration: 0.8s; //动画持续时间
	animation-timing-function: ease-in-out;
	// animation-iteration-count: infinite; /*定义循环资料,infinite为无限次*/
}
@keyframes shake-hard {
	2% {
		transform: translate(3px, -8px) rotate(-0.5deg);
	}
	4% {
		transform: translate(-9px, 5px) rotate(-0.5deg);
	}
	6% {
		transform: translate(-6px, 9px) rotate(2.5deg);
	}
	8% {
		transform: translate(-8px, 9px) rotate(0.5deg);
	}
	10% {
		transform: translate(-6px, -1px) rotate(0.5deg);
	}
	12% {
		transform: translate(-9px, 2px) rotate(2.5deg);
	}
	14% {
		transform: translate(-2px, 9px) rotate(-1.5deg);
	}
	16% {
		transform: translate(0px, 10px) rotate(-0.5deg);
	}
	18% {
		transform: translate(-3px, -3px) rotate(3.5deg);
	}
	20% {
		transform: translate(8px, -1px) rotate(3.5deg);
	}
	22% {
		transform: translate(10px, -4px) rotate(-0.5deg);
	}
	24% {
		transform: translate(0px, -8px) rotate(0.5deg);
	}
	26% {
		transform: translate(-1px, 2px) rotate(-1.5deg);
	}
	28% {
		transform: translate(8px, 8px) rotate(-1.5deg);
	}
	30% {
		transform: translate(-9px, 5px) rotate(-0.5deg);
	}
	32% {
		transform: translate(1px, 10px) rotate(1.5deg);
	}
	34% {
		transform: translate(7px, -4px) rotate(3.5deg);
	}
	36% {
		transform: translate(2px, -8px) rotate(-1.5deg);
	}
	38% {
		transform: translate(6px, 10px) rotate(-2.5deg);
	}
	40% {
		transform: translate(3px, -1px) rotate(0.5deg);
	}
	42% {
		transform: translate(-5px, -4px) rotate(-0.5deg);
	}
	44% {
		transform: translate(-3px, 10px) rotate(-2.5deg);
	}
	46% {
		transform: translate(-7px, 2px) rotate(-2.5deg);
	}
	48% {
		transform: translate(-5px, -1px) rotate(3.5deg);
	}
	50% {
		transform: translate(-7px, -1px) rotate(1.5deg);
	}
	52% {
		transform: translate(2px, 8px) rotate(-1.5deg);
	}
	54% {
		transform: translate(7px, -9px) rotate(0.5deg);
	}
	56% {
		transform: translate(-4px, 1px) rotate(1.5deg);
	}
	58% {
		transform: translate(-2px, -8px) rotate(1.5deg);
	}
	60% {
		transform: translate(-7px, 1px) rotate(-0.5deg);
	}
	62% {
		transform: translate(-5px, -2px) rotate(-0.5deg);
	}
	64% {
		transform: translate(-2px, 5px) rotate(-2.5deg);
	}
	66% {
		transform: translate(-2px, 7px) rotate(3.5deg);
	}
	68% {
		transform: translate(-7px, -1px) rotate(-0.5deg);
	}
	70% {
		transform: translate(-5px, 8px) rotate(-2.5deg);
	}
	72% {
		transform: translate(-3px, -9px) rotate(-2.5deg);
	}
	74% {
		transform: translate(-2px, -7px) rotate(3.5deg);
	}
	76% {
		transform: translate(-5px, -4px) rotate(2.5deg);
	}
	78% {
		transform: translate(-2px, 10px) rotate(-1.5deg);
	}
	80% {
		transform: translate(4px, 9px) rotate(3.5deg);
	}
	82% {
		transform: translate(3px, -1px) rotate(-1.5deg);
	}
	84% {
		transform: translate(4px, -6px) rotate(0.5deg);
	}
	86% {
		transform: translate(-1px, 4px) rotate(-0.5deg);
	}
	88% {
		transform: translate(10px, -5px) rotate(3.5deg);
	}
	90% {
		transform: translate(-3px, 7px) rotate(-0.5deg);
	}
	92% {
		transform: translate(5px, -2px) rotate(2.5deg);
	}
	94% {
		transform: translate(-2px, -7px) rotate(-0.5deg);
	}
	96% {
		transform: translate(0px, 10px) rotate(-2.5deg);
	}
	98% {
		transform: translate(-4px, 3px) rotate(2.5deg);
	}
	0%,
	100% {
		transform: translate(0, 0) rotate(0);
	}
}

如何去控制抖动显示 隐藏

  • 动态控制类
    :class="[isShake ? 'shake-constant' : '']"
  • 何时触发isShake=true/false
this.$refs.submitRef.validate((validate) => {
	if (validate) {
		this.isShake = false; //停止抖动
	} else {
		this.isShake = true;
		setTimeout(() => {
			this.isShake = false;
		}, 1000 * 0.8); //0.8秒后抖动恢复原值(因为动画持续时间0.8秒,0.8秒后取消动画)
	}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现 CSS 元素的 3D 抖动效果,可以使用 CSS3 的动画和 transform 属性,具体步骤如下: 1. 首先,需要将元素设置为 3D 空间,可以通过设置 perspective 属性实现: ```css .container { perspective: 1000px; } ``` 2. 接着,使用 CSS3 的动画和 transform 属性来实现抖动效果: ```css @keyframes shake { 0% { transform: translate3d(0, 0, 0) rotate3d(0, 0, 0, 0); } 10% { transform: translate3d(-10px, 0, 0) rotate3d(0, 0, 1, -5deg); } 20% { transform: translate3d(10px, 0, 0) rotate3d(0, 0, 1, 5deg); } 30% { transform: translate3d(-10px, 0, 0) rotate3d(0, 0, 1, -5deg); } 40% { transform: translate3d(10px, 0, 0) rotate3d(0, 0, 1, 5deg); } 50% { transform: translate3d(-10px, 0, 0) rotate3d(0, 0, 1, -5deg); } 60% { transform: translate3d(10px, 0, 0) rotate3d(0, 0, 1, 5deg); } 70% { transform: translate3d(-10px, 0, 0) rotate3d(0, 0, 1, -5deg); } 80% { transform: translate3d(10px, 0, 0) rotate3d(0, 0, 1, 5deg); } 90% { transform: translate3d(-10px, 0, 0) rotate3d(0, 0, 1, -5deg); } 100% { transform: translate3d(0, 0, 0) rotate3d(0, 0, 0, 0); } } .element { animation: shake 0.8s; animation-iteration-count: infinite; } ``` 这段代码中,我们定义了一个名为 shake 的动画,它包含多个关键帧,每个关键帧都使用 translate3d 和 rotate3d 方法来实现元素的平移和旋转。然后,将这个动画应用到需要抖动的元素上,使用 animation-iteration-count 属性来让动画无限循环。 这样,就可以实现 CSS 元素的 3D 抖动效果了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值