仅使用 CSS 旋转制作八卦迷惑动画 🧘‍♀️

简介: 我之所以将其拿出来分享,一方面觉得它看起来比较酷,也像原作者所说的那样:看起来是个令人生畏的病毒,另一方面觉得作者的编码思路和代码值得了解学习下。

image.png


声明:本文并非原创


实现的效果如下:


image.png


我之所以将其拿出来分享,一方面觉得它看起来比较酷,也像原作者所说的那样:看起来是个令人生畏的病毒,另一方面觉得作者的编码思路和代码值得了解学习下。


步骤一:制作八卦图


第一步是使用 CSS 创建阴阳八卦图,如下:

image.png


上面仅使用一个 div 元素,配合 ::before::after 创建伪元素完成。看下面的代码,你应该就懂了:


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>yinyang</title>
  <style>
    body {
      background-color: #eee;
    }
    .yinyang {
      position: relative;
      background-color: #fff;
      height: 100px;
      width: 100px;
      border-radius: 50%;
      background-image: linear-gradient(to left, #fff, #fff 50%, #000 50%, #000);
    }
    .yinyang::before {
      content: '';
      position: absolute;
      top: 0;
      left: 50%;
      transform: translateX(-50%);
      background: #fff;
      border: 18px solid #000;
      border-radius: 50%;
      width: 14px;
      height: 14px;
    }
    .yinyang::after {
      content: '';
      position: absolute;
      bottom: 0;
      left: 50%;
      transform: translateX(-50%);
      background: #000;
      border: 18px solid #fff;
      border-radius: 50%;
      width: 14px;
      height: 14px;
    }
  </style>
</head>
<body>
  <div class="yinyang"></div>
</body>
</html>
复制代码


你可以运行上面的代码进行验证


步骤二:整合八卦图


我们需要一个外部的元素 div 对我们生成的两个八卦图进行管理。其实我们相当于又制作了一个大的八卦图,如下:


image.png


这里制作的方法跟步骤一的方法大同小异,这里就不进行赘述了。


步骤三:添加动画


下面我们让图动起来。为八卦图添加 animation 动画。


@keyframes roll {
  from {
    transform: rotate(0deg); // 从零度开始
  }
  to {
    transform: rotate(-360deg); // 旋转一周
  }
}
复制代码


当然,我们需要它循环旋转,要在 .yinyang 类中操作:


.yinyang {
  animation: roll 4s linear infinite; // 4秒中完成一次匀速动画,并循环播放
}
复制代码


完结


我们来整合下代码:


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>yinyang</title>
  <style>
    body {
      background-color: #eee;
    }
    .circle {
      margin-top: 3rem;
      box-sizing: border-box;
      height: 200px;
      width: 200px;
      border-radius: 50%;
      padding-left: 50px;
      background-image: linear-gradient(to left, #fff, #fff 50%, #000 50%, #000);
      animation: roll 10s linear infinite;
      /* 反向旋转 */
      animation-direction: reverse;
    }
    .yinyang {
      position: relative;
      background-color: #fff;
      height: 100px;
      width: 100px;
      border-radius: 50%;
      background-image: linear-gradient(to left, #fff, #fff 50%, #000 50%, #000);
      /* 4秒中完成一次匀速动画,并循环播放 */
      animation: roll 4s linear infinite; 
    }
    .yinyang::before {
      content: '';
      position: absolute;
      top: 0;
      left: 50%;
      transform: translateX(-50%);
      background: #fff;
      border: 18px solid #000;
      border-radius: 50%;
      width: 14px;
      height: 14px;
    }
    .yinyang::after {
      content: '';
      position: absolute;
      bottom: 0;
      left: 50%;
      transform: translateX(-50%);
      background: #000;
      border: 18px solid #fff;
      border-radius: 50%;
      width: 14px;
      height: 14px;
    }
    @keyframes roll {
      from {
        /* 从零度开始 */
        transform: rotate(0deg); 
      }
      to {
        /* 旋转一周 */
        transform: rotate(-360deg); 
      }
    }
  </style>
</head>
<body>
  <div class="circle">
    <div class="yinyang"></div>
    <div class="yinyang"></div>
  </div>
</body>
</html>
复制代码


至此,整个案例的实现已经完成✅。


相关文章
|
1月前
|
机器学习/深度学习 前端开发 JavaScript
|
3月前
|
前端开发
2s 利用 HTML+css动画实现企业官网效果
2s 利用 HTML+css动画实现企业官网效果
|
14天前
|
前端开发 搜索推荐 UED
实现 CSS 动画效果的兼容性
【10月更文挑战第16天】实现 CSS 动画效果的兼容性需要对不同浏览器的特性有深入的了解,并采取适当的策略和方法。通过不断的实践和优化,你可以在各种浏览器上创造出流畅、美观且兼容的动画效果,为用户带来更好的体验。在实际开发中,要密切关注浏览器的发展动态,及时掌握最新的兼容性技巧和解决方案,以确保你的动画设计能够在广泛的用户群体中得到良好的呈现。
|
18天前
|
前端开发 JavaScript API
探索 CSS Houdini:轻松构建酷炫的 3D 卡片翻转动画
本文通过构建一个 3D 翻卡动画深入探讨了 CSS Houdini 的强大功能,展示了如何通过 Worklets、自定义属性、Paint API 等扩展 CSS 的能力,实现高度灵活的动画效果。文章首先介绍了 Houdini 的核心概念与 API,并通过构建一个动态星空背景、圆形进度条以及交互式 3D 翻卡动画的实际示例,展示了如何利用 CSS Houdini 赋予网页设计更多创造力。最后,还演示了如何将这种 3D 翻卡效果集成到公司网站中,提升用户体验。CSS Houdini 的创新能力为网页设计带来了前所未有的灵活性,推动了前端开发迈向新的高度。
21 0
探索 CSS Houdini:轻松构建酷炫的 3D 卡片翻转动画
|
23天前
|
前端开发
运用CSS伪类与属性,巧妙实现背景图片旋转效果
运用CSS伪类与属性,巧妙实现背景图片旋转效果
16 0
|
2月前
|
JavaScript 前端开发
JS配合CSS3实现动画和拖动小星星小Demo
本文通过代码示例展示了如何使用JavaScript和CSS3实现动画效果和拖动小星星的交互效果,包括文字掉落动画和鼠标拖动产生小星星动画的实现方法。
39 0
JS配合CSS3实现动画和拖动小星星小Demo
|
29天前
|
前端开发 容器
CSS实现旋转圆角叠加样式,你学会了吗?
CSS实现旋转圆角叠加样式,你学会了吗?
32 0
|
30天前
|
前端开发
CSS 动画介绍及语法
CSS 动画介绍及语法
26 0
|
3月前
|
前端开发 UED 开发者
有趣的CSS - 文字加载动画效果
这个文本加载动画简单而有趣,可以在网站标题、广告标语或者关键信息的展示上吸引用户的注意力。开发者可以根据需要调整动画的持续时间、步骤数,或者光标颜色等,来适应特定的设计需求。使用这种动态元素,增强网站的互动性和用户体验,同时也为网站增添了一抹活泼的风格。
57 5
|
3月前
|
前端开发 JavaScript
HTML+CSS如何打造撒花动画效果?3分钟学会,炫酷到爆!
HTML+CSS如何打造撒花动画效果?3分钟学会,炫酷到爆!