用纯CSS实现八卦太极图

4 篇文章 0 订阅
订阅专栏

用CSS3制作旋转的太极图
得益于CSS3的加持,页面动画可以在脱离JS的情况下实现。本人在逆战班进行了为期三个星期的H5大前端学习后,开始决定运用所学的内容写一些自己希望实现的效果。

结构分析

要写出这样的八卦太极动态图,对于老手来说应该是不费吹灰之力,而我的写法或许还有不少赘余的地方,如有朋友有更好的办法,还望友善地批评指导,我一定好好学习。
太极图片
对于才入门前端不久的小白而言,分析好结构几乎是最为重要的一点。接下来,我将分内外两部分,对太极图进行结构分析。

太极结构分析

太极图案由黑白两仪图形组成,且两仪头部中心有反色小圆,如若直接信手绘制,这个结构还是有一定的难度,但在实际上只要稍做拆解,便会显得十分简单。
太极结构拆解
从上图中可以看出,太极结构由一个左右反色的大圆,两个颜色相反的中号圆以及两个颜色相反的小圆组成。中号圆的半径是大圆的一半,对称轴与大圆的对称轴重合,一黑一白沿竖直方向并排摆放,与大圆内切。小号圆半径约中号圆的三分之一,摆放于中号圆的正中心,与自身外部的中号圆颜色相反。
由此我们可以编写以下代码

/*大圆的格式代码*/
.Taichi{	
            width: 300px;height: 300px;
            border: 5px solid #000;
            border-radius: 150px;
            position: absolute;
            box-shadow: 0px 5px 15px gray;
            background-image: linear-gradient(to right, white 50% , black 50%, black 75%);/*用CSS3渐变可以只写一个圆而不用再写两个半圆*/
        }
/*中圆的格式代码*/
.Taichi .middle_round{
            width: 150px;height: 150px;
            border-radius: 75px;
            position: absolute;
            left: 75px;
        }
.Taichi .middle_round:first-of-type{background-color: #fff;top: 0px;}
.Taichi .middle_round:last-of-type{background-color: #000;top: 150px;}
/*小圆的格式代码*/
.Taichi .small_round{
            width: 50px;height: 50px;
            border-radius: 25px;
            position: absolute;
            left: 50px;top: 50px;
        }
.Taichi .middle_round:first-of-type .small_round{background-color: #000;}
.Taichi .middle_round:last-of-type .small_round{background-color: #fff;}

八卦结构分析

单卦结构分析

单卦结构拆解
八卦的每一卦可以看作是由黑色的梯形和白色的矩形遮挡组成,横向的两个矩形是每一卦的必备,而中心的白色矩形则根据那一卦是否中间断开而添加或删除。所以可以写出以下代码。

/*梯形代码*/
.Taichi_outside .Eight_Diagrams .trapezoid{
                    border-bottom: 102px solid black;
                    border-left: 32px solid transparent;
                    border-right: 32px solid transparent;
                    width: 113px;
                    position: absolute;
                    animation: mylight 4s linear infinite;}
        
/*横向白色矩形*/
.Eight_Diagrams .ED_white{
            background-color: #fff;
            position: absolute;
            height: 20px;width: 177px;
            left: -30px;top: 21px;
        }
.Eight_Diagrams .ED_white:nth-of-type(2){top: 63px;}

/*中心白色矩形*/      
.Eight_Diagrams .ED_center1{width: 25px;height: 25px;position: absolute;background-color: white;left: 44px;}
.Eight_Diagrams .ED_center2{width: 25px;height: 25px;position: absolute;background-color: white;left: 44px;top: 40px;}
.Eight_Diagrams .ED_center3{width: 25px;height: 25px;position: absolute;background-color: white;left: 44px;top: 80px;}

八卦整体结构分析

八卦图结构分析
当写好八卦中的一卦以后,便可以以八卦正中为旋转中心做一个旋转,笔者在此处使用的办法是将梯形与矩形的父元素定位到中心与太极图重合,再复制7个这样的父元素进行旋转,CSS代码如下。

/*第一个八卦图的定位*/
.Taichi_outside .Eight_Diagrams{position: absolute;width: 530px;height: 530px;}
/*剩余7个八卦图的定位*/
.Taichi_outside .Eight_Diagrams:nth-of-type(2){transform: rotate(45deg);}
        .Taichi_outside .Eight_Diagrams:nth-of-type(3){transform: rotate(90deg);}
        .Taichi_outside .Eight_Diagrams:nth-of-type(4){transform: rotate(135deg);}
        .Taichi_outside .Eight_Diagrams:nth-of-type(5){transform: rotate(180deg);}
        .Taichi_outside .Eight_Diagrams:nth-of-type(6){transform: rotate(225deg);}
        .Taichi_outside .Eight_Diagrams:nth-of-type(7){transform: rotate(270deg);}
        .Taichi_outside .Eight_Diagrams:nth-of-type(8){transform: rotate(315deg);}

最终可以得到这样的成果图
平面成果图

动画制作

在完成了平面的布局以后,就可以开始动画制作了,动画利用CSS3中的animation属性,以下分两部分进行展示。

太极动画

太极的动画就是一个简单的转动动画,只要中规中矩地给0%,50%,100%分别加上0度,180度和360度,再在animation属性中加上linear(匀速)和infinite(无限循环),太极就可以匀速转动了,以下是CSS代码。

/*太极代码*/
.Taichi{animation: myrotate 4s linear infinite;}
/*动画代码*/
@keyframes myrotate{
            0%{transform: rotate(0deg);}
            50%{transform: rotate(180deg);}
            100%{transform: rotate(360deg);}
        }

太极转动

八卦动画

八卦的动画较太极的动画相对复杂,但是可以拆解为3个部分,颜色改变、匀速、延迟,匀速变化和太极一样,只需要在animation属性中加上linear(匀速)和infinite(无限循环)即可,但是为了和太极转动同步,可以将不同方位的卦延迟设置到太极刚好转动过来的时间,即太极转动(笔者设置的4秒)的时间的八分之一(0.5秒)为间隔,并且在八卦离开后的剩余周期时间内,要保持不亮,所以笔者用如下代码做了实现。

/*每一卦动画*/
.Eight_Diagrams .trapezoid{animation: mylight 4s linear infinite;}
/*每一卦的延迟*/
.Eight_Diagrams:nth-of-type(2) .trapezoid{animation-delay: 0.5s;}
.Eight_Diagrams:nth-of-type(3) .trapezoid{animation-delay: 1s;}
.Eight_Diagrams:nth-of-type(4) .trapezoid{animation-delay: 1.5s;}
.Eight_Diagrams:nth-of-type(5) .trapezoid{animation-delay: 2s;}
.Eight_Diagrams:nth-of-type(6) .trapezoid{animation-delay: 2.5s;}
.Eight_Diagrams:nth-of-type(7) .trapezoid{animation-delay: 3s;}
.Eight_Diagrams:nth-of-type(8) .trapezoid{animation-delay: 3.5s;}

最终效果如下
最终效果
最终HTML代码如下

<body>
    <div class="Taichi_outside">
        <div class="Taichi">
            <div class="middle_round">
                <div class="small_round"></div>
            </div>
            <div class="middle_round">
                <div class="small_round"></div>
            </div>
        </div>
        <div class="Eight_Diagrams">
            <div class="trapezoid">
                <div class="ED_white"></div>
                <div class="ED_white"></div>
                <div class="ED_center1"></div>
                <div class="ED_center2"></div>
            </div>
        </div>
        <div class="Eight_Diagrams">
            <div class="trapezoid">
                <div class="ED_white"></div>
                <div class="ED_white"></div>
                <div class="ED_center2"></div>
                <div class="ED_center3"></div>
            </div>
        </div>
        <div class="Eight_Diagrams">
            <div class="trapezoid">
                <div class="ED_white"></div>
                <div class="ED_white"></div>
                <div class="ED_center2"></div>
                <div class="ED_center3"></div>
            </div>
        </div>
        <div class="Eight_Diagrams">
            <div class="trapezoid">
                <div class="ED_white"></div>
                <div class="ED_white"></div>
                <div class="ED_center2"></div>
            </div>
        </div>
        <div class="Eight_Diagrams">
            <div class="trapezoid">
                <div class="ED_white"></div>
                <div class="ED_white"></div>
                <div class="ED_center1"></div>
                <div class="ED_center2"></div>
                <div class="ED_center3"></div>
            </div>
        </div>
        <div class="Eight_Diagrams">
            <div class="trapezoid">
                <div class="ED_white"></div>
                <div class="ED_white"></div>
                <div class="ED_center1"></div>
                <div class="ED_center2"></div>
            </div>
        </div>
        <div class="Eight_Diagrams">
            <div class="trapezoid">
                <div class="ED_white"></div>
                <div class="ED_white"></div>
            </div>
        </div>
        <div class="Eight_Diagrams">
            <div class="trapezoid">
                <div class="ED_white"></div>
                <div class="ED_white"></div>
                <div class="ED_center1"></div>
                <div class="ED_center3"></div>
            </div>
        </div>
    </div>
</body>

总结

这是我自学以来第一次尝试着做自己想做的案例,虽然略显简陋,且缺少JavaScript的辅佐,代码整体略显冗余,但是最后做到了却是对自身学习成果一次成功的检验,以后还会继续努力,也希望网友们多多指点。

css实现太极图
我一点也不皮的博客
04-04 1224
css实现太极图动画概览步骤划分区域绘制样式动画源码 概览 这是最终的效果 如何通过纯粹的css样式去实现这一动画呢?让我们一步一步来完成。 步骤 划分区域 我们先需要在html中绘制一个静止的太极图,这就需要将太极图划分成不同的区域,然后为每个区域添加相应的样式。 我们可以按照下图的方式来划分太极图区域: 其中,每个不同的区域以不同的颜色填充,这样一来可以看出,我们将太极图划分为了六个区域,为了方便区分,我们为每个区域添加独特的class名称,分别为:taichi–left、taichi–right
css太极图(阴阳八卦)
09-25
css太极图,样式很简单,大家看下面的代码吧
HTMLCSS实现JD轮播图效果
09-24
主要介绍了纯HTMLCSS实现JD轮播图效果,需要的朋友可以参考下
CSS3实现太极图形样式代码.zip
11-25
CSS3实现太极图形样式代码.zip
css实现太极八卦
最新发布
前端码农
03-07 1345
css实现太极八卦
CSS实现图片前后翻页效果
01-23
CSS实现图片前后翻页效果
用纯CSS实现饼状Loading等待图效果
09-24
主要介绍了用纯CSS实现饼状Loading等待图效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
ITFriend-用CSS实现八卦图等图形
06-06
ITFriend-用CSS实现八卦图等图形
css实例——太极八卦
xiao_jie_jie1的博客
06-26 786
css实例——太极八卦图 分析: 可以看成是三个类型的圆组成,分别是大的圆,中等大小的圆,小的圆。这是一个整体的思路,具体的话就是去调整各个圆的位置 HTML代码部分 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>太极八卦图案例</title> <link rel="stylesheet" type="text/css" href="bugua
CSS 画一个八卦
weixin_30500289的博客
10-30 337
效果图: 实现原理: 设置高度为宽度的2倍的一个框,利用 border 补全另一半的宽度,设置圆角 用两个 div 设置不同的颜色,定位到圆的上下指定位置。 最后只剩下里面的小圆圈了。设个宽高,圆角即可。 CSS 1 body{ 2 height: 100%; 3 margin: 0 a...
旋转的八卦图,纯CSS实现
Altaba的博客
01-16 4152
欢迎来到Altaba的博客不废话,直接上源码,旋转八卦图的核心在于CSS代码的编写,所有首先呈上CSS代码: .yang-yin2{ width: 198px; height: 396px; border: solid black; border-width: 2px 200px 2px 2px;
css设计实现太极八卦图的效果
dreamgetting的博客
06-27 157
<div></div> <style> div{ position:relative; width:150px; height:300px; background-color:#fff; border-left:150px solid #000; border-radius:50%; } div::before{ content:''; position:absolute; top:0; left:-75px; width:30px;.
CSS实现美观大方的网页柱状图效果
09-25
主要为大家介绍了纯CSS实现美观大方的网页柱状图效果的方法,可以直观鲜明的显示数据统计的效果,非常具有实用价值,需要的朋友可以参考下
手把手教你用纯css3实现轮播图效果实例
09-27
本篇文章主要介绍了纯css3实现轮播图效果实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
html5 css3八卦图,CSS动画-八卦
weixin_39756416的博客
06-10 107
该楼层疑似违规已被系统折叠隐藏此楼查看此楼Document#in>div{width:150px;height:80px;border:1pxsolid #ddd;position:absolute;top:310px;left:425px;}#c1{transform:rotatey(0deg)translatez(200px);}#c2{transform:rotatey(180deg...
绘制太极图CSS
weixin_47340917的博客
09-22 1649
绘制太极图CSS)预览图思路html布局代码部分CSS样式部分 Hello!大家好,这里是万物之恋。今天给大家带来的是CSS3动画制作一个旋转的太极图案。 预览图 貌似有些卡顿 是录制软件的锅。。。 思路 先在页面中绘制出一个大的白色圆形,再将其分为两个一黑一白的半圆。然后各自延伸出一个大小适合的同颜色小圆,里面居中绘制一个对立颜色的中心圆,最后利用css3动画让其旋转。 html布局代码部分 <body> <!-- 先是html代码部分 --> <div cla
CSS3使用边框实现太极图(三个div)
wangzhneg123的博客
03-05 512
效果展示: 源码展示: &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;纯CSS3使用边框实现太极图(三个div)&lt;/title&gt; &lt;!--border 太
利用css实现太极图的制作(带旋转动画) (课程实践教学项目)
老板别放辣椒!!的博客
03-31 1856
实现旋转的太极图
css八卦
c2635222586的博客
02-16 232
<!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>八卦图</ti.
HTML+css实现太极八卦
06-07
好的,以下是一个用HTMLCSS实现太极八卦图的代码: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>太极八卦图</title> <style> #taiji { width: 200px; height: 200px; border-radius: 50%; background: linear-gradient(90deg, #000000, #ffffff, #000000); position: relative; transform: rotate(45deg); } #taiji:before { content: ''; display: block; width: 100px; height: 100px; border-radius: 50%; background-color: #ffffff; position: absolute; top: 0; left: 50%; margin-left: -50px; } #taiji:after { content: ''; display: block; width: 100px; height: 100px; border-radius: 50%; background-color: #000000; position: absolute; bottom: 0; left: 50%; margin-left: -50px; } #taiji .yin { width: 50px; height: 50px; border-radius: 50%; background-color: #ffffff; position: absolute; top: 25px; left: 50%; margin-left: -25px; } #taiji .yang { width: 50px; height: 50px; border-radius: 50%; background-color: #000000; position: absolute; bottom: 25px; left: 50%; margin-left: -25px; } #taiji .left { width: 50px; height: 50px; border-radius: 50% 0 0 50%; background-color: #000000; position: absolute; top: 75px; left: 0; } #taiji .right { width: 50px; height: 50px; border-radius: 0 50% 50% 0; background-color: #ffffff; position: absolute; top: 75px; right: 0; } #taiji .left:before { content: ''; display: block; width: 25px; height: 50px; background-color: #ffffff; position: absolute; top: 0; left: 0; } #taiji .right:before { content: ''; display: block; width: 25px; height: 50px; background-color: #000000; position: absolute; top: 0; right: 0; } #taiji .left:after { content: ''; display: block; width: 50px; height: 50px; background-color: #000000; position: absolute; top: 0; left: 25px; border-radius: 50%; transform: rotate(45deg); } #taiji .right:after { content: ''; display: block; width: 50px; height: 50px; background-color: #ffffff; position: absolute; top: 0; right: 25px; border-radius: 50%; transform: rotate(45deg); } </style> </head> <body> <div id="taiji"> <div class="yin"></div> <div class="yang"></div> <div class="left"></div> <div class="right"></div> </div> </body> </html> ``` 这段代码会生成一个200*200大小的太极八卦图,使用了CSS3的渐变、旋转、倾斜等属性来实现。同时,八卦图内部的阴、阳两极和四个小半圆也使用了CSS来绘制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 用JavaScript实现星座判断 2988
  • 用纯CSS实现八卦太极图 2801
  • 用纯CSS实现简易翻书效果 2785
  • The request has no preview available 1353
  • SVN报错:Cleanup with an older 1.7 client before upgrading with this client Proevious operation... 682

分类专栏

  • 开发踩坑 4篇
  • 笔记 4篇
  • 个人观点 4篇
  • 代码实现 1篇

最新评论

  • 用纯CSS实现简易翻书效果

    柒刖: 博主,这个怎么选择页面呢?

  • 用纯CSS实现八卦太极图

    xuxb000: 请问大佬,mylight和myrotate这个两个是啥?

  • 用纯CSS实现八卦太极图

    m0_69079561: 求源码表情包

  • 用JavaScript实现星座判断

    为你声沙。: 太麻烦了,日期可以用数字代替的不用月份日期分开判断,比如日期在狮子座0723-0822之间就是狮子座

  • 用纯CSS实现简易翻书效果

    R红茶: 要是可以把项目传上git和贴出地址就好啦 就可以下载下来看看效果了~

最新文章

  • mysql修改密码报错
  • Could not create directory ‘/c/Users/\345\264\224/.ssh‘.
  • The request has no preview available
2021年3篇
2020年9篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源八字算命起名店名以源字起名女孩起名叫六月顺风车平台flash教程江门家具在线评书网虎口脱险电影爱的被告女孩子起什么名字好又时尚丰字辈起名edg成员用若字给女孩起名puffin你图runaway逃离漫画在线观看高校龙中龙2电脑不识别u盘三衢道中拼音版大红灯笼高高挂电视剧车臣战争电影小厂子起名大全男孩起名测试打分免费顶楼闵雪雅是谁推下去的win7密钥黄梅莹吃胎盘周易起名网vip专用姓雷男孩起名大全罗克佳华淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化