CSS 发展到今天已经越来越强大了。其语法的日新月异,让很多以前完成不了的事情,现在可以非常轻松的做到。今天就向大家介绍几个比较新的强大的 CSS 功能:

clip-path
shape-outside
shape 的意思是图形,CSS shapes 也就是 CSS 图形的意思,也就是使用 CSS 生成各种图形(圆形、矩形、椭圆、多边形等几何图形)。

CSS3之前,我们能做的只有矩形,四四方方,条条框框。

CSS3
CSS3出来后,我们有了更广阔的施展空间,通过

border-radius
border
transform
伪元素配合
gradient 渐变
我们能够作出非常多的几何图形。

除去最常见的矩形,圆形(border-radius),下面稍微列举一些其他几何图形:

三角形
通常会使用透明的border模拟出一个三角形:

代码片段
8 行
<style>.traingle {
    width: 0;
    height: 0;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-bottom: 100px solid yellowgreen;
}
</style><div class="traingle "></div>

切角
《CSS Secret》里面的方法,采用多重线性渐变实现切角。

代码片段
11 行
<style>.notching {
    width: 40px;
    height: 40px;
    padding: 40px;
    background: linear-gradient(135deg, transparent 15px, yellowgreen 0) top left,
        linear-gradient(-135deg, transparent 15px, yellowgreen 0) top right,
        linear-gradient(-45deg, transparent 15px, yellowgreen 0) bottom right,
        linear-gradient(45deg, transparent 15px, yellowgreen 0) bottom left;
    background-size: 50% 50%;
    background-repeat: no-repeat;
}</style><div class="notching"></div>

梯形
利用伪元素加旋转透视实现梯形:

当然,还有另一种更简单的方法是利用border实现,借助上面的构造三角形的方法,在矩形两侧构造两个透明的三角形:

代码片段
9 行
<style>
.trapezoid {
    position: relative;
    width: 60px;
    border-top: 60px solid yellowgreen;
    border-left: 40px solid transparent;
    border-right: 40px solid transparent;
}
</style><div class="trapezoid"></div>

五边形
梯形加上三角形,很容易就组合成一个五边形,这里需要借助一个伪元素实现:

六边形
看看上面的梯形,如果两个反方向且底边同样大小的梯形,叠加在一起,是不是就能得到一个六边形呢?

八边形
六边形都解决了,八边形也不在话下,一个矩形加上两个梯形,可以合成一个八边形。

五角星
好的,探索完多边形,我们继续探索X角星。
先来看看五角星,要怎么实现呢?当然是直接打出来啦 -- ★☆
开个玩笑,这里使用 3 个三角形叠加旋转在一起实现。

六角星
六角星呢?想象一下,一个向上的三角形 ▲,叠加上一个向下的三角形 ▼,就可以得到一个六边形:

八角星
八角星呢?八个角那么多呢。其实使用两个矩形进行旋转拼接就可以了。

十二角星
好。最后多角星再来一个十二级角星。在八角星的基础上,再增加一个矩形,就能得到十二角啦。也就是要过第一个伪元素。

椭圆
最后,再来使用传统的方法画一个椭圆,过去 CSS3 画椭圆,基本上只能借助 border 实现。
这里使用 border 画一个蛋的形状:

代码片段
8 行
<style>
.ellipse {
   width: 120px;
   height: 160px;
   background-color: yellowgreen;
   border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
}
</style><div class="ellipse"></div>

CodePen -- CSS Shapes(CSS 几何图形)
上面所讲述的是使用传统 CSS3 的方式绘制几何图形,接下来我们将要了解一些更高级的绘制几何图形的方法。