html5 css3画八卦图,用纯CSS3绘制乾坤八卦图

乾坤八卦图衍生自中国古代的《河图》与《洛书》,伏羲根据燧人氏造设的这两幅星图所作。其形状经过抽象以后,成为对称感相当强的几何图形,无论是黑白两色还是形状,都非常地平衡和稳重。

c1a0df691eb7ac03f812ff312eeb025f.png

不难发现,乾坤八卦图的形状均为圆形。而css3绘制圆的方法也很简单,设置圆角半径等于50%即可,所以绘制起来十分方便。

大体结构就是两个半圆,左白右黑,然后上下分别绘制一个半径等于大圆一半的圆,上黑下白,最后加上两个圆点即可。

总的来说,这个八卦图包括三层共6个元素,为了不导致混淆,本教程不打算使用伪元素。

现在我们先来构建基础的html代码:

72d32b3a51739b23ecd364a862722d28.png

所有元素都包在big-circle里面,它们之间会相对重叠,所以需要设置相对定位,让内部元素使用绝对定位时以big-circle的左上角作为参考点。

.big-circle{

position:relative;

width:200px;

height:200px;

}

接下来,我们绘制左侧的半圆,整个圆我们可以用border-radius设置为50%。半圆的话,就需要有所区分,矩形的宽高比为1:2,右侧的两个角圆角半径为0。

左侧半圆的边框颜色为黑色,背景为白色,

总的CSS代码如下:

.SEMi-circle-left{

position:absolute;

width:100px;

height:200px;

top:0px;

left:0px;

background:#fff;

border:2px solid #000;

-webkit-border-radius:100px 0px 0px 100px;

-moz-border-radius:100px 0px 0px 100px;

-o-border-radius:100px 0px 0px 100px;

border-radius:100px 0px 0px 100px;

}

border-radius的4个圆角半径用英文空格分隔,依次为左上,右上,右下,左下(从左上开始顺时针数下来)。

border-radius需要用不同前缀兼容不同的浏览器。

运行效果如下图所示:

49aea52d5369180e881ef974117f2e56.png

类似地,右侧的样式如下。不同的部分已经用红色高亮标记出来了。

.semi-circle-right{

position:absolute;

width:100px;

height:200px;

top:0px;

left:100px;

background:#000;

border:2px solid #000;

-webkit-border-radius:0px 100px 100px 0px;

-moz-border-radius:0px 100px 100px 0px;

-o-border-radius:0px 100px 100px 0px;

border-radius:0px 100px 100px 0px;

}

运行效果如下图所示:

c1d4d00aab55eb61ed33d5a703923a24.png

现在我们绘制上下两个圆。

上面的圆样式如下:

.small-circle-top{

position:absolute;

width:100px;

height:100px;

top:0px;

left:50px;

background:#000;

-webkit-border-radius:50%;

-moz-border-radius:50%;

-o-border-radius:50%;

border-radius:50%;

}

由于我们是绘制完整的圆,因此直接设置border-radius=50%即可,无需像前面那样需要分开设置。

再次运行,效果如下图所示:

8affe509984d9aad26a90d8ae1f5dcce.png

看起来,下面的圆也没有任何问题了,只要改下位置和颜色即可。

.small-circle-bottom{

position:absolute;

width:100px;

height:100px;

top:100px;

left:50px;

background:#fff;

-webkit-border-radius:50%;

-moz-border-radius:50%;

-o-border-radius:50%;

border-radius:50%;

}

运行效果如下图所示:

ec072c37a3fae00af5ab78f82ed7178c.png

好了,就差两个小圆点。方法跟绘制第2层的两个圆没有大异。

.small-circle-bottom{

position:absolute;

width:100px;

height:100px;

top:100px;

left:50px;

background:#fff;

-webkit-border-radius:50%;

-moz-border-radius:50%;

-o-border-radius:50%;

-webkit-border-radius:50%;

-moz-border-radius:50%;

-o-border-radius:50%;

border-radius:50%;

}

.circle-point-top{

position:absolute;

width:25px;

height:25px;

top:37.5px;

left:87.5px;

background:#fff;

-webkit-border-radius:50%;

-moz-border-radius:50%;

-o-border-radius:50%;

border-radius:50%;

}

再次运行,效果如下图所示:

995ad9327683a311ce7958603e873ade.png

细心的朋友可能会发现一个瑕疵,在八卦图的正下方,白色小圆和白色大半圆的衔接不是那么光滑,好像凸起来了一点点,这其实是大半圆那两个像素的边框所引起的,要修正这个小“bug”,我们不妨让半圆的高度减小两个像素吧,与此同时,半圆的宽度也应该减小1像素。

.semi-circle-left{

/*其它样式代码省略*/

width:99px;

height:198px;

}

.semi-circle-right{

/*其它样式代码省略*/

width:99px;

height:198px;

}

运行效果如下图所示:

efde6464b88ddcab71fd8fb7922d6e79.png

这样,一个标准的乾坤八卦图就绘制完成了。

据说在古代,八卦图是除凶避灾的常用图案,又据说在现代,Web设计师最大的灾难就是无休止的加班。小编希望通过这篇八卦图教程,祝愿各位Web设计师日后都能在正常的工作时间内,完成老板交付给你们的任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值