阴阳图html代码

admin 105 0
该阴阳图通过HTML与CSS实现,以div容器包裹两个半圆(黑白各半)及中心小圆(阴阳鱼眼),利用border-radius绘制圆形,position定位元素,形成经典阴阳鱼造型,黑白对比鲜明,通过transform实现旋转动画,象征阴阳平衡与动态转化,代码简洁,兼容性强,可直接嵌入网页作为文化装饰元素,兼具视觉美感与哲学寓意。

如何用HTML和CSS绘制传统阴阳图

阴阳图,又称太极图,是中华传统文化的经典符号,象征着阴阳对立统一、循环往生的哲学思想,它以简洁的黑白两色、流畅的曲线勾勒出宇宙万物的动态平衡,在前端开发中,我们可以用纯HTML和CSS轻松绘制出这一传统图形,既能展示技术能力,又能传递文化内涵,本文将详细介绍如何通过HTML结构和CSS样式实现阴阳图的绘制,并加入动态效果让图形更生动。

阴阳图的构成与设计思路

传统阴阳图由三个核心部分组成:

  1. 外圆:整体轮廓,代表宇宙的完整性;
  2. 阴阳鱼:一大一小两个对称的"S"形区域,黑白各半,象征阴阳对立与互根;
  3. 鱼眼:阴阳鱼内部各有一个小圆,阴中有阳(白鱼眼),阳中有阴(黑鱼眼),寓意"阴中有阳,阳中有阴"。

实现思路:

  • 用HTML构建基础结构(容器、阴阳鱼、鱼眼);
  • 用CSS的border-radiuspositiontransform等属性绘制圆形和曲线;
  • 通过绝对定位调整各元素位置,确保对称与比例;
  • 添加CSS动画,让阴阳图缓慢旋转,强化"循环"的意境。

HTML结构搭建

我们需要一个容器来包裹整个阴阳图,内部包含阴阳鱼主体和鱼眼元素,HTML结构如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">阴阳图HTML实现</title>
    <style>
        /* 样式将在下一部分添加 */
    </style>
</head>
<body>
    <div class="taiji-container">
        <!-- 阴阳鱼主体 -->
        <div class="fish">
            <!-- 阴鱼(黑色部分) -->
            <div class="fish-yin"></div>
            <!-- 阳鱼(白色部分) -->
            <div class="fish-yang"></div>
        </div>
        <!-- 阴鱼眼(白色小圆) -->
        <div class="fish-eye-yin"></div>
        <!-- 阳鱼眼(黑色小圆) -->
        <div class="fish-eye-yang"></div>
    </div>
</body>
</html>

结构说明:

  • .taiji-container:最外层容器,用于居中图形并控制整体大小;
  • .fish:阴阳鱼的父容器,包含.fish-yin(阴鱼)和.fish-yang(阳鱼);
  • .fish-eye-yin.fish-eye-yang:分别对应阴鱼中的白眼和阳鱼中的黑眼。

CSS样式实现细节

容器与基础样式

首先设置容器居中、固定宽高,并隐藏默认的body边距:

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
body {
    min-height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #f0f0f0; /* 浅灰背景,突出阴阳图 */
}
.taiji-container {
    width: 300px; /* 容器宽度,可调整大小 */
    height: 300px; /* 容器高度 */
    position: relative; /* 为内部绝对定位元素提供参考 */
}

绘制阴阳鱼主体

阴阳鱼的核心是两个"S"形区域,我们可以通过两个半圆旋转拼接实现,具体步骤:

  • 阴鱼(黑色):用一个半圆(border-radius: 50% 50% 0 0)向下旋转,形成左侧黑色区域;
  • 阳鱼(白色):用一个半圆(border-radius: 0 0 50% 50%)向上旋转,形成右侧白色区域;
  • 两个半圆通过绝对定位重叠,组合成"S"形。
.fish {
    width: 100%;
    height: 100%;
    position: relative;
    overflow: hidden; /* 隐藏超出容器部分 */
}
.fish-yin, .fish-yang {
    width: 50%;
    height: 100%;
    position: absolute;
    top: 0;
}
.fish-yin {
    left: 0;
    background-color: #000; /* 黑色阴鱼 */
    border-radius: 100% 0 0 100%; /* 左半圆 */
    transform: rotate(45deg); /* 旋转45度,形成S形曲线 */
    transform-origin: right center; /* 以右侧中心为旋转轴 */
}
.fish-yang {
    right: 0;
    background-color: #fff; /* 白色阳鱼 */
    border-radius: 0 100% 100% 0; /* 右半圆 */
    transform: rotate(-45deg); /* 反向旋转45度 */
    transform-origin: left center; /* 以左侧中心为旋转轴 */
}

添加鱼眼

鱼眼是两个小圆,分别位于阴鱼和阳鱼的"头部"位置,通过绝对定位精确定位:

.fish-eye-yin, .fish-eye-yang {
    width: 20%; /* 鱼眼大小,约为容器直径的1/5 */
    height: 20%;
    border-radius: 50%; /* 圆形 */
    position: absolute;
    top: 10%; /* 垂直位置,靠近顶部 */
}
.fish-eye-yin {
    left: 65%; /* 水平位置,在阳鱼区域内 */
    background-color: #fff; /* 白色鱼眼(阴中有阳) */
}
.fish-eye-yang {
    right: 65%; /* 水平位置,在阴鱼区域内 */
    background-color: #000; /* 黑色鱼眼(阳中有阴) */
}

添加旋转动画

为了让阴阳图体现"循环"的动态感,我们可以用CSS动画让整个容器缓慢旋转:

.taiji-container {
    animation: rotate 10s linear infinite; /* 10秒一圈,无限循环 */
}
@keyframes rotate {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

完整CSS代码

将上述样式整合,完整CSS如下:

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
body {
    min-height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #f0f0f0;
}
.taiji-container {
    width: 300px;
    height: 300px;
    position: relative;
    animation: rotate 10s linear infinite;
}
.fish {
    width: 100%;
    height: 100%;
    position: relative;
    overflow: hidden;
}
.fish-yin, .fish-yang {
    width: 50%;
    height: 100%;
    position: absolute;
    top: 0;
}
.fish-yin {
    left: 0;
    background-color: #000;
    border-radius: 100% 0 0 100%;
    transform: rotate(45deg);
    transform-origin: right center;
}
.fish-yang {
    right: 0;
    background-color: #fff;
    border-radius: 0 100% 100% 0;
    transform: rotate(-45deg);
    transform-origin: left center;
}
.fish-eye-yin, .fish-eye-yang {
    width: 20%;
    height: 20%;
    border-radius: 50%;
    position: absolute;
    top: 10%;
}
.fish-eye-yin {
    left: 65%;
    background-color: #fff;
}
.fish-eye-yang {
    right: 65%;
    background-color: #000;
}
@keyframes rotate {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

进阶优化

响应式设计

为了使阴阳图在不同设备上都能良好显示,我们可以添加响应式设计:

/* 媒体查询,适配不同屏幕尺寸 */

标签: #图HTML #图代码