html
<div id="shake" class="shape">horizontal shake</div>
复制
js(vue3)
function shake(elemId) { const elem = document.getElementById(elemId) console.log('获取el', elem) if (elem) { elem.classList.add('shake') setTimeout(() => { elem.classList.remove('shake') }, 800) } } onMounted(() => { setTimeout(() => { console.log('进来settimeout') shake('shake') }, 5000) })
复制
css
.shape { margin: 50px; width: 200px; height: 50px; line-height: 50px; text-align: center; border: 1px solid black; } .shake { animation: shake 800ms ease-in-out; } @keyframes shake { /* 水平抖动,核心代码 */ 10%, 90% { transform: translate3d(-1px, 0, 0); } 20%, 80% { transform: translate3d(+2px, 0, 0); } 30%, 70% { transform: translate3d(-4px, 0, 0); } 40%, 60% { transform: translate3d(+4px, 0, 0); } 50% { transform: translate3d(-4px, 0, 0); } }
复制
参考链接:https://juejin.cn/post/6957517187049324552