仅使用 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 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
transform变形 css3在原来的基础上新增了变形和动画相关属性,通过这些属性可以实现以前需要大段JavaScript才能实现的 功能。 CSS3的变形功能可以对HTML组件执行位移、旋转、缩放、倾斜4种几何变换,这样的变换可以控制HTML组件 呈现出丰富的外观。 借助于位移、旋转、缩放、倾斜这4种几何变换,CSS3提供了transition动画。 transition动画比较简单,只要指定HTML组件的哪些CSS属性需要使用动画效果来执行变化,并指定动画时间,就可保证动画播放。 比transitio
117 0
|
4月前
|
自然语言处理 前端开发 JavaScript
用 通义灵码 一键生成“水波纹按钮”,连 CSS 动画都不用自己写了!
通义灵码是一款智能编程辅助工具,它可以根据自然语言指令自动生成高质量的代码。例如,只需输入“生成一个按钮,点击时带水波纹动画,模拟 Material Ripple 效果”,它就能生成具备完整交互逻辑、CSS 动画和良好性能的按钮组件。不仅如此,它还支持拓展功能,如长按触发提示、添加图标等,并能自动优化样式适配不同场景。通过通义灵码,开发者可以大幅提升效率,专注于创意实现,而不必纠结于繁琐的代码细节。
|
9月前
|
前端开发 JavaScript
CSS 过渡和动画
CSS过渡和动画是用于为网页元素添加动态效果的两种重要技术
472 143
|
1月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
Animation属性 css3为Animation动画提供的几个属性如下: 属性名 属性值 animation-name 指定动画名称,该属性指定一个已有的关键帧定义。 animation-duration 指定动画持续时间。 animation-timing-funtion 指定动画变化速度。 animation-delay 指定动画延迟多长时间才开始执行。 animation-iteration-count 指定动画的循环执行次数。 animation:这是一个复合属性。
145 0
|
10月前
css3 svg制作404页面动画效果HTML源码
css3 svg制作404页面动画效果HTML源码
198 34
|
12月前
|
移动开发 前端开发 JavaScript
除了 CSS3,还有哪些技术可以实现动画效果?
除了 CSS3,还有哪些技术可以实现动画效果?
355 63
|
12月前
|
JavaScript 前端开发
CSS3 动画和 JavaScript 动画的性能比较
具体的性能表现还会受到许多因素的影响,如动画的复杂程度、浏览器的性能、设备的硬件条件等。在实际应用中,需要根据具体情况选择合适的动画技术。
|
Web App开发 前端开发 JavaScript
如何在不牺牲动画效果的前提下,优化 CSS3 动画的性能?
如何在不牺牲动画效果的前提下,优化 CSS3 动画的性能?
620 58
|
10月前
jQuery+CSS3实现404背景游戏动画源码
jQuery+CSS3实现404背景游戏动画源码
165 22
|
前端开发 搜索推荐 UED
实现 CSS 动画效果的兼容性
【10月更文挑战第16天】实现 CSS 动画效果的兼容性需要对不同浏览器的特性有深入的了解,并采取适当的策略和方法。通过不断的实践和优化,你可以在各种浏览器上创造出流畅、美观且兼容的动画效果,为用户带来更好的体验。在实际开发中,要密切关注浏览器的发展动态,及时掌握最新的兼容性技巧和解决方案,以确保你的动画设计能够在广泛的用户群体中得到良好的呈现。
323 58

热门文章

最新文章