太极图css实现

admin 105 0
太极图可通过CSS实现,核心是利用圆形、半圆与旋转组合,外层容器设为正方形,overflow:hidden;内部用两个半圆(通过border-radius:50%切分)旋转180°形成阴阳鱼,再通过伪元素添加黑白小圆点(阴阳眼),关键点:用position:absolute定位元素,transform:rotate()调整角度,border-radius控制圆弧,确保黑白区域对称且S形曲线流畅,整个过程无需图片,纯CSS绘制,可结合动画实现旋转效果,简洁高效。

用纯CSS绘制太极图:从原理到代码实现

太极图,作为中华传统文化的璀璨瑰宝,以其简洁而深邃的黑白对称、阴阳相生的哲学意蕴,跨越千年,广为流传,在前端开发的奇妙世界里,仅用CSS(层叠样式表)来复刻这一经典符号,不仅是对图形布局能力的绝佳锻炼,更是对CSS强大表现力的一次生动展示,本文将深入剖析太极图的几何结构原理,逐步拆解其纯CSS实现路径,并分享关键技巧与富有启发性的扩展思路。

太极图的结构原理

要精准绘制太极图,首先必须理解其精妙的几何构成,以标准的“阴阳鱼”形态为例,其核心要素包括:

  1. 外圆:一个完整的圆形,是整个太极图的边界与载体。
  2. 阴阳鱼身:外圆被纵向平分为左右两部分,左侧为阴(黑色),右侧为阳(白色),或反之,形成两条首尾相衔的“鱼”轮廓。
  3. 阴阳鱼眼:在阴鱼(黑色部分)的头部区域(即右侧),嵌套着一个白色小圆(阳眼);在阳鱼(白色部分)的头部区域(即左侧),嵌套着一个黑色小圆(阴眼),这两点睛之笔是阴阳互含、循环往复的具象化体现。
  4. 完美对称:整个图形关于圆心呈现中心对称,阴阳两部分通过180度旋转可以相互转换,体现了动态平衡的哲学思想。

CSS实现的核心思路

基于上述结构,纯CSS实现的核心策略在于:巧妙运用“嵌套容器”与“精确定位”组合图形元素,利用`border-radius`属性绘制圆形及半圆,并借助`transform`属性进行位置微调与旋转操作,具体可分解为以下关键步骤:

  • 外圆容器:设置一个具有`width`和`height`的正方形元素,通过`border-radius: 50%`将其塑造成圆形,同时设置`position: relative`作为内部绝对定位元素的参考系,并应用`overflow: hidden`确保所有子元素严格限制在外圆边界内。
  • 半圆元素:创建两个子元素(如`.half-circle`),分别设置它们的`width: 50%`、`height: 100%`,并利用`border-radius`属性精确控制其圆角方向(左半圆使用`border-radius: 100% 0 0 100%`,右半圆使用`border-radius: 0 100% 100% 0`),形成左右半圆效果,通过`position: absolute`和`left`/`right`属性将它们分别定位到容器的左右两侧。
  • 小圆元素(鱼眼):创建两个代表鱼眼的子元素(如`.small-circle`),同样使用`border-radius: 50%`绘制圆形,关键在于精确定位:阴眼(黑色小圆)应位于阳鱼(白色半圆)的头部区域(即左半圆的右侧中间),阳眼(白色小圆)应位于阴鱼(黑色半圆)的头部区域(即右半圆的左侧中间),这通常需要结合`top`、`left`/`right`以及`transform: translate()`进行精确对齐。

详细代码实现

HTML结构

首先构建清晰、语义化的DOM结构,使用一个容器(`.taiji`)包裹所有图形元素,确保层级关系明确:

<div class="taiji">
  <!-- 左半圆(阴鱼身) -->
  <div class="half-circle left"></div>
  <!-- 右半圆(阳鱼身) -->
  <div class="half-circle right"></div>
  <!-- 阴眼(在阳鱼身内) -->
  <div class="small-circle yin-eye"></div>
  <!-- 阳眼(在阴鱼身内) -->
  <div class="small-circle yang-eye"></div>
</div>

CSS样式

逐步实现每个元素的样式,重点处理形状、颜色与精确定位。

(1)外圆容器

定义基础尺寸、形状和定位上下文:

.taiji {
  width: 200px;          /* 宽度 */
  height: 200px;         /* 高度(确保正方形) */
  border-radius: 50%;    /* 圆角50%形成正圆 */
  position: relative;    /* 作为内部绝对定位元素的参考 */
  overflow: hidden;      /* 裁剪超出外圆的内容 */
  background-color: #000; /* 初始背景色(会被半圆覆盖) */
}
(2)半圆元素

创建并定位左右半圆,控制其圆角方向和颜色:

.half-circle {
  position: absolute;    /* 绝对定位 */
  width: 50%;            /* 宽度为容器的一半 */
  height: 100%;          /* 高度占满容器 */
  top: 0;                /* 顶部对齐容器顶部 */
}

/ 左半圆(阴鱼身):白色 / .half-circle.left { left: 0; / 左侧对齐容器左侧 / border-radius: 100% 0 0 100%; / 左上、左下圆角,右上、右下直角 / background-color: #fff; / 白色背景 / }

/ 右半圆(阳鱼身):黑色 / .half-circle.right { right: 0; / 右侧对齐容器右侧 / border-radius: 0 100% 100% 0; / 右上、右下圆角,左上、左下直角 / background-color: #000; / 黑色背景 / }

(3)小圆元素(阴眼与阳眼)

绘制并精确定位代表阴阳互含的小圆:

        	        		标签:        		    #太极
        		        		    #图CSS
        		        		    #实现