css冒泡效果,使用动画实现

javascript 复制代码
<template>
  <div class="center">
    <div class="top">
      <div v-for="(i, index) in list" :key="index" class="top-box">
        <div class="bubble-box">
          <img :src="i.img" alt="" />
          <div class="bubbles">
            <div
              class="bubble"
              v-for="item in 10"
              :key="item"
              :style="{
                backgroundColor: i.color,
                animationDelay: getRandom() * 2 + 's',
                left: getRandom() * 10 + '%',
              }"
            ></div>
          </div>
        </div>
        <div class="text">
          <div class="num" :style="{ color: i.numColor }">{{ i.num }}</div>
          <div>{{ i.name }}</div>
        </div>
      </div>
    </div>
    
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: [
        {
          img: "/img/dataCockpit/center1.png",
          num: 1643,
          numColor: "#2AD9F2",
          name: "名称1",
          color: "#aef5da",
        },
        {
          img: "/img/dataCockpit/center2.png",
          num: 22,
          numColor: "#53EA8C",
          name: "名称2",
          color: "#9efcff",
        },
        {
          img: "/img/dataCockpit/center3.png",
          num: 311,
          numColor: "#ffae00",
          name: "名称3",
          color: "#f5e88a",
        },
      ],
    };
  },
  methods: {
    getRandom() {
      return (Math.floor(Math.random() * 10) * 100) / 100;
    },
  },
};
</script>
<style lang="scss" scoped>
.center {
  padding-top: 35px;
  box-sizing: border-box;
  height: 100%;
  .top {
    background-image: url(/img/dataCockpit/centerTop.png);
    width: 856px;
    height: 115px;
    margin-bottom: 34px;
    color: #ffffff;
    font-size: 16px;
    display: flex;
    justify-content: space-between;
    padding: 0 70px;
    padding-bottom: 36px;
    padding-right: 88px;
    box-sizing: border-box;
    background-size: 100% 100%;
    align-items: center;
    margin-top: 20px;

    &-box {
      // position: relative;
      // top: -20px;
      display: flex;
      img {
        width: 105px;
        // height: 66px;
      }
      .text {
        height: 100%;
        padding-left: 15px;
        padding-bottom: 10px;
        box-sizing: border-box;
        // position: relative;
        // top: -10px;
        .num {
          font-size: 36px;
          font-weight: bold;
        }
      }
    }
  }
  .map {
    background-image: url(/img/dataCockpit/map.png);
    width: 892px;
    height: 656px;
    background-size: contain;
    position: relative;

    
  }
}
@keyframes flying {
  0% {
    bottom: 15px;
    transform: translateX(0);
  }
  50% {
    transform: translateX(50%);
  }
  100% {
    bottom: 200px;
    transform: translateX(-50%);
  }
}
.bubble-box {
  position: relative;
}
.bubbles {
  position: absolute;
  width: 100%;
  height: 100%;
  z-index: 0;
  overflow: hidden;
  top: 0;
  left: 0;
}
.bubble {
  position: absolute;
  bottom: 0;
  background: #f1f1f1;
  border-radius: 50%;
  opacity: 0.5;
  animation: flying 14s infinite ease-in;
  width: 5px;
  height: 5px;
  filter: blur(1px);
}
</style>
相关推荐
夏幻灵2 小时前
HTML5里最常用的十大标签
前端·html·html5
程序员猫哥_2 小时前
HTML 生成网页工具推荐:从手写代码到 AI 自动生成网页的进化路径
前端·人工智能·html
杨超越luckly2 小时前
HTML应用指南:利用GET请求获取中国500强企业名单,揭秘企业增长、分化与转型的新常态
前端·数据库·html·可视化·中国500强
夏幻灵4 小时前
CSS三大特性:层叠、继承与优先级解析
前端·css
会编程的土豆21 小时前
新手前端小细节
前端·css·html·项目
周航宇JoeZhou21 小时前
JB2-7-HTML
java·前端·容器·html·h5·标签·表单
代码小库1 天前
【课程作业必备】Web开发技术HTML静态网站模板 - 校园动漫社团主题完整源码
前端·html
云计算DevOps-韩老师1 天前
HTML 中的行级元素(inline)、块级元素(block)、行内块元素(inline-block)
html
珹洺1 天前
Bootstrap-HTML(二)深入探索容器,网格系统和排版
前端·css·bootstrap·html·dubbo
BillKu1 天前
VS Code HTML CSS Support 插件详解
前端·css·html