CSS Shapes:打破矩形设计的限制
HTML5和CSS3的功能完全超越5年前我们在web上所能做的事。CSS Shapes Module Level 1(CSS形状模块标准1)规范有可能打破web中矩形盒模型的限制而且将网页设计提升到新的高度。它允许元素设计成不同的形状(圆形或五边形的div
),并且用更自然的方式让文字环绕着元素(文字可以环绕着你的曲线设计而不一定要有直角边界)。本文将通过一些小演示来检测CSS Shapes的可能性,并且帮助你开始探索之旅!
![尤小博同学](https://static.fequan.com/vueconf/img/default_avatar.png)
HTML5和CSS3的功能完全超越5年前我们在web上所能做的事。CSS Shapes Module Level 1(CSS形状模块标准1)规范有可能打破web中矩形盒模型的限制而且将网页设计提升到新的高度。它允许元素设计成不同的形状(圆形或五边形的div
),并且用更自然的方式让文字环绕着元素(文字可以环绕着你的曲线设计而不一定要有直角边界)。本文将通过一些小演示来检测CSS Shapes的可能性,并且帮助你开始探索之旅!
CSS Shapes是用来定义内容环绕的路径,这些路径都是通过形状函数来定义,比如:circle()
、 ellipse()
、 inset()
或 polygon()
,他们都被定位在一个虚拟盒子(virtual box)中,也就是引用框(reference box)。引用框定义了形状的坐标系统,因此它影响了形状如何绘制和定位。他有四种引用框可供选择:margin-box
, padding-box
, border-box
和 content-box
。每种引用框都会产生不同的结果。请继续往下阅读,了解他们是如何工作。
我最近听了JEN Simmons在 Boagworld播客的关于CSS Shapes的采访,虽然我之前已经听说过CSS Shapes好久了,但是我还没有亲自尝试过。因为某些原因,这个采访强迫我坐下来好好看一下CSS Shapes的出色之处(好吧,很大一部分原因是我认为Jen Simmons太帅了,我已经收听她的The Web Ahead一年多了,真的太精彩了)。
布局一般都是遵循按行和列等线性原则,Web网站的布局到今天为止很大程度上受到这些原则的影响。虽然CSS Grid的出现让布局变得更好,更灵活,但相对于印刷媒体而言,Web布局总体上还是受到很好的限制,特别是内容流上。杂志和报纸一直有很好的办法来安排内容。比如文本绕着非矩形排列。
在前面的教程中,看到了怎么创建CSS Shapes,即在元素定认一个规则图形。里面都是些基础的知识,比如说创建一个圆,然后多行文本围绕这个圆。在这篇文章中,我们将探索一些更复杂的图形,让你的布局不在局限于四四方方的图形中。
在CSS中有些属性是允许CSS绘制图形形状,比如常见的是使用border
或者box-shadow
来绘制图形或者形状。除此之外,在CSS中还有类似circle()
函数也可以绘制圆形。除此之外,在CSS中有一些形状是为CSS其它属性服务,比如clip-path
为mask
服务和在shape-outside
让文本围绕形状排版。还有一些CSS属性使用像SVG中的图形做一些事情,比如offset-path
中使用path()
函数实现路径动画。而其中path()
是一个非常棒的功能,可以绘制任何图形。在接下来的内容中,来介绍一下CSS中的基本图形和路径。希望对大家有所帮助。