dom元素+CSS实现阶梯动画效果

1.效果

2.代码实现

javascript 复制代码
<template>
  <div class="container">
    <div class="Box">
      <div class="box" style="background-color: red;"></div>
      <div class="box" style="background-color: orange;"></div>
      <div class="box" style="background-color: yellow;"></div>
      <div class="box" style="background-color: green;"></div>
      <div class="box" style="background-color: skyblue;"></div>
      <div class="box" style="background-color: blue;"></div>
    </div>
  </div>
</template>
<script>

export default {
  mounted () {
    this.setActions()
  },
  methods: {
    setActions () {
      //选中所有盒子
      const arr = document.querySelectorAll('.box')
 
 	  //循环添加事件监听
      arr.forEach(e => {
        e.addEventListener('mouseenter', () => {
          //通过添加类名实现盒子上移
          e.classList.add('boxMoveTwoStep')
          //判断前后的兄弟节点是否存在
          if (e.previousElementSibling) {//上一个节点
            e.previousElementSibling.classList.add('boxMoveOneStep')
          }
          if (e.nextElementSibling) {//下一个节点
            e.nextElementSibling.classList.add('boxMoveOneStep')
          }
        })
		//鼠标移除恢复盒子位置
        e.addEventListener('mouseleave', () => {
          e.classList.remove('boxMoveTwoStep')
          if (e.previousElementSibling) {
            e.previousElementSibling.classList.remove('boxMoveOneStep')
          }
          if (e.nextElementSibling) {
            e.nextElementSibling.classList.remove('boxMoveOneStep')
          }
        })
      })
    }
  }
}
</script>
<style lang='scss' scoped>
.container {
  width: 100%;
  height: 100%;
  overflow-y: hidden;
  position: relative;

  .Box {
    position: absolute;
    bottom: -50px;
    width: 100%;
    height: 100px;
  }

  .box {
    width: 50px;
    height: 100px;
    display: inline-block;
    background-color: pink;
    transition: 0.3s;
  }
}

.boxMoveOneStep {
  transform: translate(0px, -30px);
}

.boxMoveTwoStep {
  transform: translate(0px, -50px);
}
</style>
相关推荐
2501_920931705 分钟前
React Native鸿蒙跨平台使用useState管理健康记录和过滤状态,支持多种健康数据类型(血压、体重等)并实现按类型过滤功能
javascript·react native·react.js·ecmascript·harmonyos
打小就很皮...10 分钟前
dnd-kit 实现表格拖拽排序
前端·react.js·表格拖拽·dnd-kit
Ulyanov15 分钟前
从静态到沉浸:打造惊艳的Web技术发展历程3D时间轴
前端·javascript·html5·gui开发
打小就很皮...25 分钟前
React 19 + Vite 6 + SWC 构建优化实践
前端·react.js·vite·swc
Highcharts.js27 分钟前
使用Highcharts与React集成 官网文档使用说明
前端·react.js·前端框架·react·highcharts·官方文档
这是个栗子27 分钟前
AI辅助编程(二) - 通译千问
前端·ai·通译千问
VT.馒头38 分钟前
【力扣】2625. 扁平化嵌套数组
前端·javascript·算法·leetcode·职场和发展·typescript
数研小生1 小时前
Full Analysis of Taobao Item Detail API taobao.item.get
java·服务器·前端
Shirley~~1 小时前
Vue-skills的中文文档
前端·人工智能
毎天要喝八杯水1 小时前
搭建vue前端后端环境
前端·javascript·vue.js