手把手教你实现一个阴阳🐟

473 阅读3分钟

前言

这次带大家来实现一个由 HTML 和 CSS 组合而成的效果,太极阴阳鱼。话不多说,我们直奔主题。

效果预览

接下来教大家如何使用 CSS 创建一个阴阳鱼的旋转动画,使用了变量、线性渐变和伪元素。

CSS 部分

首先我们看到.yin-yang类样式,相关代码如下。

 .yin-yang {
      width: 10em;
      height: 10em;
      font-size: 20px;
      --color1: white;
      --color2: black;
      background-image: linear-gradient(var(--color1) 50%, var(--color2) 50%);
      display: flex;
      align-items: center;
      box-shadow: 0 0 1em rgba(0, 0, 0, 0.3);
      animation: rotating linear 5s infinite;
    }

    @keyframes rotating {
      to {
        transform: rotate(1turn);
      }
    }

这里我们创建了一个阴阳鱼样式的旋转动画效果。在.yin-yang中,width: 10em; height: 10em;设置了阴阳鱼容器的宽度和高度为 10 个字体尺寸。font-size: 20px;设置了字体大小为 20px--color1: white; --color2: black;:自定义了两个颜色变量,用于表示阴阳鱼的两种部分颜色。background-image: linear-gradient(var(--color1) 50%, var(--color2) 50%);创建了一个线性渐变背景,将容器一分为二,并使用两种颜色填充。display: flex; align-items: center;表示采用弹性布局,在容器中垂直居中放置鱼形图案。box-shadow: 0 0 1em rgba(0, 0, 0, 0.3);则是给阴阳鱼容器添加了一个淡淡的阴影效果。

animation: rotating linear 5s infinite;则是应用了一个名为 rotating 的线性动画,使阴阳鱼进行无限旋转效果。该动画的作用是使阴阳鱼旋转 1 个完整的圈,使阴阳鱼进行无限旋转。

接着是伪元素的样式,相关代码如下。

 .yin-yang::before,
    .yin-yang::after {
      content: "";
      width: 50%;
      height: 50%;
      background-color: var(--inner-color);
      box-sizing: border-box;
      border: 1.5em solid var(--outer-color);
    }
    .yin-yang::before {
      --inner-color: var(--color1);
      --outer-color: var(--color2);
    }
    .yin-yang::after {
      --inner-color: var(--color2);
      --outer-color: var(--color1);
    }

这里使用了伪元素:before:after来创建阴阳鱼中的两个部分,并使用自定义变量来控制它们的颜色。

.yin-yang::before.yin-yang::after中,content: ""设置了伪元素的内容为空,这样它们就可以在页面中生成。width: 50%; height: 50%;定义了伪元素的宽度和高度,使其成为容器的一半大小。background-color: var(--inner-color);使用了var(--inner-color)来设置伪元素的背景颜色,这样通过外部的自定义变量来控制内部的颜色。box-sizing: border-box;设置了box-sizingborder-box,确保了边框的大小不会改变元素的尺寸。border: 1.5em solid var(--outer-color);则是创建了一个边框,通过var(--outer-color)使用自定义变量设置了边框的颜色。

.yin-yang::before.yin-yang::after 中的--inner-color--outer-color定义了两种不同的内外颜色组合作为自定义变量,以此来调出阴阳鱼两个部分的颜色。

通过使用自定义变量以及::before::after 伪元素被用来创建鱼形图案的两个部分,实现了通过 CSS 生成阴阳鱼中的两个部分,并结合颜色变量来灵活控制它们的样式和颜色。

到这里整个效果的实现就结束了,比较简单。

总结

以上就是整个效果的实现过程了,纯 CSS 实现,代码简单易懂。另外,感兴趣的小伙伴们还可以在现有基础上发散思维,比如增加点其他效果,或者更改颜色等等。关于该效果如果大家有更好的想法欢迎在评论区分享,互相学习。最后,完整代码在码上掘金里可以查看,如果有什么问题大家在评论区里讨论~