拟液态加载器

效果展示

在这里插入图片描述

CSS 知识点

  • SVG 的 feGaussianBlur、feColorMatrix 属性运用
  • animation 属性运用
  • filter 联合 SVG 使用

整体页面结构

<div class="container">
  <h2>Milk</h2>
  <!-- 加载器的圆点部分 -->
  <div class="loader">
    <span style="--i: 0"></span>
    <span style="--i: 1"></span>
    <span style="--i: 2"></span>
    <span style="--i: 3"></span>
    <span style="--i: 4"></span>
    <span style="--i: 5"></span>
    <span style="--i: 6"></span>
    <span style="--i: 7"></span>
  </div>
</div>
<!-- SVG 链接各个圆点,形成拟液态部分的样式 -->
<svg>
  <filter id="Gooey">
    <feGaussianBlur in="SourceGraphic" stdDeviation="10" />
    <feColorMatrix
      Values="
        1 0 0 0 0
        0 1 0 0 0
        0 0 1 0 0
        0 0 0 20 -10
      "
    />
  </filter>
</svg>

编写容器的样式

.container {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
}

.container h2 {
  position: absolute;
  color: #fff;
  font-size: 1.75em;
  font-weight: 500;
}

编写加载器的圆点和圆点动画

.loader {
  position: relative;
  width: 300px;
  height: 300px;
  display: flex;
  justify-content: center;
  align-items: center;
  background: rgba(0, 0, 0, 0.25);
  filter: url(#Gooey);
}

.loader span {
  position: absolute;
  left: 0;
  transform-origin: 150px;
  width: 100px;
  height: 100px;
  background: #fff;
  border-radius: 50%;
  animation: animate 5s ease-in-out infinite;
  animation-delay: calc(0.15s * var(--i));
}

@keyframes animate {
  0%,
  10% {
    width: 100px;
    height: 100px;
    transform: rotate(0deg) translateX(120px);
  }
  40%,
  70% {
    width: 40px;
    height: 40px;
    transform: rotate(calc(360deg / 8 * var(--i)));
    box-shadow: 0 0 0 10px #fff;
  }
  90%,
  100% {
    width: 100px;
    height: 100px;
    transform: rotate(0deg) translateX(120px);
  }
}

完整代码下载

完整代码下载

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值