【Ten Mins Effect】 - 06 毛玻璃 Loader 效果

1,214 阅读2分钟

效果展示

大家好,这里是初心Yearth,欢迎来到 10 mins css,每天花 10 分钟,实现一个简单精美的 css 效果。

那么下面我们直接进入正题,先来看看今天的效果展示吧:

图片1
图片1

关键点

先来分析这个效果的关键点:

  • 遮罩层毛玻璃效果
  • 底层是四分之一的圆块,而不是一个整体

具体实现

这个效果不算复杂,接下来我们具体分析实现上述关键点即可。

毛玻璃效果

在 css 中,我们可以借助 backdrop-filter 实现滤镜效果,具体可以看看这篇文章:backdrop-filter | CSS-Tricks

此外,再给这个遮罩层加一个淡淡的背景色即可:

.loader .cover {
  position: absolute;
  top10px;
  left10px;
  right10px;
  bottom10px;
  backgroundrgba(23330990.05);
  border-radius50%;
  backdrop-filterblur(10px);
  border1px solid rgba(2552552550.1);
  z-index2;
}

效果如下:

图片2
图片2

色块

要实现最终效果中那样的四分之一圆,方案其实不少,这里大致讲两种简单的。

  • clip-path
  • 伪类

首先看看 clip-path,我们知道,理论上来讲,clip-path 是是能实现任意图形的,这里推荐一个工具网站:Clippy

.loader .block {
  position: absolute;
  top50%;
  left50%;
  width100%;
  height100%;
  z-index1;
  backgroundvar(--loader-color);
  clip-pathcircle(50% at 0 0);
}

效果如下:

图片3
图片3

让其旋转起来很简单,transform: rotate 即可,需要注意的是,需要把 transform-origin 设定到色块的左上角:

.loader .block {
 /* ... */
  animation: rotate 1s linear infinite;
  transform-origin: top left;
}

@keyframes rotate {
  0% {
    transformrotate(0deg);
  }
  100% {
    transformrotate(360deg);
  }
}

效果如下:

图片4
图片4

而通过伪类实现这个效果,需要注意的细节是:我们可以用 block 实现轮廓,随后用伪类去填充颜色,具体实现如下:

.loader .block {
  position: absolute;
  top0;
  left0;
  width100%;
  height100%;
  border-radius50%;
  z-index1;
  overflow: hidden;
  animation: rotate 1s linear infinite;
}
.loader .block::before {
  content"";
  position: absolute;
  top: -50%;
  left: -50%;
  width100%;
  height100%;
  backgroundvar(--loader-color);
}

效果如下:

图片5
图片5

说在后面的

今天的效果还是比较简单的,感兴趣的读者可以看看在线 demo:毛玻璃 Loader 效果