老衲前端在之前的文章中介绍过如何使用css绘制一个等腰直角三角形(有需要的朋友,可以猛点几下),本文沿着这个思路扩展一下,可以总结出各种CSS多边形写法。最终效果也是受到群里基佬的启发,以及一些demo的演示。

基本的CSS多边形写法,如正方形、长方形、等腰三角形(也可以任意三角),就不在此赘述了。注:之前的文中提到,可以通过同时设置两个边框的border-color属性来绘制三角形,还可以只设置一边的border-color属性为transparent或者背景颜色,这样就可以输出下面这种形状的三角形(左下角三角形)。

CSS代码如下:

.triangle{
    width:0;
    height: 0;
    border-bottom: 100px solid #E56212;
    border-right: 100px solid transparent;
}

通过以上CSS(CSS多边形写法)代码不再边框的变换,我们是可以得到这种4个不角度的三角形状的。下面就一一列出我们今天的主题:CSS多边形写法,所绘制出的各种形状,好处自不必多说,减少了图片文件请求,可调整性强,特别是对如今,大为流行的扁平化的易用性更强。下面用到的CSS伪元素after和before,在IE8以下的不适用的,弥补的办法就是使用标签替换after和before。

一、绘制梯形:

.triangle {
    border-bottom: 100px solid #F36823;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    height: 0;
    width: 100px;
}

二、六角星:

.triangle{
    width: 0;
    height: 0;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-bottom: 100px solid red;
    position: relative;
}

.triangle:after {
    width: 0;
    height: 0;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-top: 100px solid red;
    position: absolute;
    content: "";
    top: 30px;
    left: -50px;
}

三、五角星:

.triangle{
    margin: 50px 0;
    position: relative;
    display: block;
    color: #F36823;
    width: 0px;
    height: 0px;
    border-right:  100px solid transparent;
    border-bottom: 70px  solid #F36823;
    border-left:   100px solid transparent;
    -moz-transform:    rotate(35deg);
    -webkit-transform: rotate(35deg);
    -ms-transform:     rotate(35deg);
    -o-transform:      rotate(35deg);
}

.triangle:before {
    border-bottom: 80px solid #F36823;
    border-left: 30px solid transparent;
    border-right: 30px solid transparent;
    position: absolute;
    height: 0;
    width: 0;
    top: -45px;
    left: -65px;
    display: block;
    content: '';
    -webkit-transform: rotate(-35deg);
    -moz-transform:    rotate(-35deg);
    -ms-transform:     rotate(-35deg);
    -o-transform:      rotate(-35deg);
}

.triangle:after {
    position: absolute;
    display: block;
    color: #F36823;
    top: 3px;
    left: -105px;
    width: 0px;
    height: 0px;
    border-right: 100px solid transparent;
    border-bottom: 70px solid #F36823;
    border-left: 100px solid transparent;
    -webkit-transform: rotate(-70deg);
    -moz-transform:    rotate(-70deg);
    -ms-transform:     rotate(-70deg);
    -o-transform:      rotate(-70deg);
    content: '';
}

四、五角形:

.triangle{
    position: relative;
    width: 54px;
    border-width: 50px 18px 0;
    border-style: solid;
    border-color: #F36823 transparent;
}

.triangle:before {
    content: "";
    position: absolute;
    height: 0;
    width: 0;
    top: -85px;
    left: -18px;
    border-width: 0 45px 35px;
    border-style: solid;
    border-color: transparent transparent #F36823;
}

五、六边形:

.triangle{
    width: 100px;
    height: 55px;
    background: #F36823;
    position: relative;
}

.triangle:before {
    content: "";
    position: absolute;
    top: -25px;
    left: 0;
    width: 0;
    height: 0;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-bottom: 25px solid #F36823;
}

.triangle:after {
    content: "";
    position: absolute;
    bottom: -25px;
    left: 0;
    width: 0;
    height: 0;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-top: 25px solid #F36823;
}

六、八边形

.triangle{
    width: 100px;
    height: 100px;
    background: #F36823;
    position: relative;
}

.triangle:before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    border-bottom: 29px solid #F36823;
    border-left: 29px solid #E3DED2;
    border-right: 29px solid #E3DED2;
    width: 42px;
    height: 0;
}

.triangle:after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    border-top: 29px solid #F36823;
    border-left: 29px solid #E3DED2;
    border-right: 29px solid #E3DED2;
    width: 42px;
    height: 0;
}

七、心形:

#heart {
    position: relative;
    width: 100px;
    height: 90px;
} 

#heart:before, #heart:after {
    position: absolute;
    content: "";
    left: 50px;
    top: 0;
    width: 50px;
    height: 80px;
    background: #F36823;
    -moz-border-radius: 50px 50px 0 0;
    border-radius: 50px 50px 0 0;
    -webkit-transform: rotate(-45deg);
    -moz-transform: rotate(-45deg);
    -ms-transform: rotate(-45deg);
    -o-transform: rotate(-45deg);
    transform: rotate(-45deg);
    -webkit-transform-origin: 0 100%;
    -moz-transform-origin: 0 100%;
    -ms-transform-origin: 0 100%;
    -o-transform-origin: 0 100%;
    transform-origin: 0 100%;
}

#heart:after {
    left: 0;
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
    -webkit-transform-origin: 100% 100%;
    -moz-transform-origin: 100% 100%;
    -ms-transform-origin: 100% 100%;
    -o-transform-origin: 100% 100%;
    transform-origin :100% 100%;
}

八、无穷大符号:

#infinity {
    position: relative;
    width: 212px;
    height: 100px;
}

#infinity:before, #infinity:after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 60px;
    height: 60px;
    border: 20px solid #F36823;
    -moz-border-radius: 50px 50px 0 50px;
    border-radius: 50px 50px 0 50px;
    -webkit-transform: rotate(-45deg);
    -moz-transform: rotate(-45deg);
    -ms-transform: rotate(-45deg);
    -o-transform: rotate(-45deg);
    transform: rotate(-45deg);
}  

#infinity:after {
    left: auto;
    right: 0;
    -moz-border-radius: 50px 50px 50px 0;
    border-radius: 50px 50px 50px 0;
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
}

九、食人豆:

#pacman {
    width: 0px;
    height: 0px;
    border-right: 60px solid transparent;
    border-top: 60px solid #F36823;
    border-left: 60px solid #F36823;
    border-bottom: 60px solid #F36823;
    border-top-left-radius: 60px;
    border-top-right-radius: 60px;
    border-bottom-left-radius: 60px;
    border-bottom-right-radius: 60px;
}

十、提示对话框

#talkbubble {
    width: 120px;
    height: 80px;
    background: red;
    position: relative;
    -moz-border-radius:    10px;
    -webkit-border-radius: 10px;
    border-radius:         10px;
}

#talkbubble:before {
    content:"";
    position: absolute;
    right: 100%;
    top: 26px;
    width: 0;
    height: 0;
    border-top: 13px solid transparent;
    border-right: 26px solid red;
    border-bottom: 13px solid transparent;
}

十一、12角星:

#burst-12 {
    background: red;
    width: 80px;
    height: 80px;
    position: relative;
    text-align: center;
} 

#burst-12:before, #burst-12:after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    height: 80px;
    width: 80px;
    background: red;
} 

#burst-12:before {
    -webkit-transform: rotate(30deg);
    -moz-transform: rotate(30deg);
    -ms-transform: rotate(30deg);
    -o-transform: rotate(30deg);
    transform: rotate(30deg);
} 

#burst-12:after {
    -webkit-transform: rotate(60deg);
    -moz-transform: rotate(60deg);
    -ms-transform: rotate(60deg);
    -o-transform: rotate(60deg);
    transform: rotate(60deg);
}

十二、8角星:

#burst-8 {
    background: #F36823;
    width: 80px;
    height: 80px;
    position: relative;
    text-align: center;
    -webkit-transform: rotate(20deg);
    -moz-transform: rotate(20deg);
    -ms-transform: rotate(20deg);
    -o-transform: rotate(20eg);
    transform: rotate(20deg);
} 

#burst-8:before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    height: 80px;
    width: 80px;
    background: #F36823;
    -webkit-transform: rotate(135deg);
    -moz-transform: rotate(135deg);
    -ms-transform: rotate(135deg);
    -o-transform: rotate(135deg);
    transform: rotate(135deg);
}

十三、钻石:

#cut-diamond {
    border-style: solid;
    border-color: transparent transparent #F36823 transparent;
    border-width: 0 25px 25px 25px;
    height: 0;
    width: 50px;
    position: relative;
    margin: 20px 0 50px 0;
}

#cut-diamond:after {
    content: "";
    position: absolute;
    top: 25px;
    left: -25px;
    width: 0;
    height: 0;
    border-style: solid;
    border-color: #F36823 transparent transparent transparent;
    border-width: 70px 50px 0 50px;
}

十四、阴阳八卦

#yin-yang {
    width: 96px;
    height: 48px;
    background: #eee;
    border-color: #F36823;
    border-style: solid;
    border-width: 2px 2px 50px 2px;
    border-radius: 100%;
    position: relative;
}  

#yin-yang:before {
    content: "";
    position: absolute;
    top: 50%;
    left: 0;
    background: #eee;
    border: 18px solid #F36823;
    border-radius: 100%;
    width: 12px;
    height: 12px;
} 

#yin-yang:after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    background: #F36823;
    border: 18px solid #eee;
    border-radius:100%;
    width: 12px;
    height: 12px;
}

本文地址 http://laoono.com/2014-04/front-end-web-laona-laboratory-various-css-polygon-wording.html