css3实现页面元素抖动效果

html

html 复制代码
<div id="shake" class="shape">horizontal shake</div>

js(vue3)

javascript 复制代码
  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

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

相关推荐
DaMu2 分钟前
Cesium & Three.js 【移动端手游“户外大逃杀”】 还在“画页面的”前端开发小伙伴们,是时候该“在往前走一走”了!我们必须摆脱“画页面的”标签!
前端·gis
非专业程序员2 分钟前
一文读懂Font文件
前端
Asort5 分钟前
JavaScript 从零开始(七):函数编程入门——从定义到可重用代码的完整指南
前端·javascript
Johnny_FEer5 分钟前
什么是 React 中的远程组件?
前端·react.js
我是日安8 分钟前
从零到一打造 Vue3 响应式系统 Day 10 - 为何 Effect 会被指数级触发?
前端·vue.js
知了一笑8 分钟前
「AI」网站模版,效果如何?
前端·后端·产品
艾小码11 分钟前
用了这么久React,你真的搞懂useEffect了吗?
前端·javascript·react.js
知觉12 分钟前
实现@imput支持用户输入最多三位整数,最多一位小数的数值
前端
RoyLin12 分钟前
TypeScript设计模式:状态模式
前端·后端·typescript
RoyLin15 分钟前
TypeScript设计模式:观察者模式
前端·后端·typescript