概述
之前看了一篇关于用CSS来画小猪佩奇的文章,抱着锻炼自己的心态造了个轮子,画了个佩奇的小弟乔治,效果可以看这里,源码在这里。
开发过程中也让我对border-radius这个属性有了更深刻的理解。
border-radius
以前我在使用这个属性时,只知道这个是表示圆角,常用border-radius: 5px
实现圆角长方形或者border-radius: 50%
来画圆形。在开发小猪的过程中,会需要使用许多不太规则的形状,因此需要了解该属性更深入的原理,才能满足我的开发需求。
完全体
该属性的完全体如下:
border-radius: x1 x2 x3 x4 / y1 y2 y3 y4;
即任何值都可以转为该种形式。例如,border-radius: 50%
等价于border-radius: 50% 50% 50% 50% / 50% 50% 50% 50%
。name这8个值分别代表什么含义呢?
矩形的四个圆角我们可以分别进行控制,例如矩形的左上圆角由x1
和y1
来控制,将一个水平半径为x1
,垂直半径为y1
的椭圆与矩形左上角相切,相切的两个点之间的圆弧就是最终的圆角曲线。如下图所示。
同理,x2
和y2
控制右上角,x3
和y3
控制右下角,x4
和y4
控制左上角。控制的方式与左上角的类似。
小Tips
- 如果对应的
x
和y
值相等,则可以省略成border-radius: x1 x2 x3 x4
的形式;如果这些x
也都相等,则可以省略成border-radius: x1
的形式。 - 当值使用百分比时,
x
取值是参照矩形的宽度,y
是参照矩形的高度。比如宽200px,高100px的矩形,如果设置border-radius: 10% 10% 10% 10% / 10% 10% 10% 10%
,转换成像素等价于border-radius: 20px 20px 20px 20px / 10px 10px 10px 10px
。 - 当设置
border-radius: 100%
时,发现其表现与border-radius: 50%
相同。这是因为如果水平方向的两个半径和(x1+x2
或者x3+x4
)大于宽度,或者垂直方向的两个半径和(y1+y3
或y2+y4
)大于高度时,浏览器会对它们进行等比例缩小,知道不再超出为止。
开始绘图
在了解了border-radius
的原理后,就可以开始绘制了。
主要有以下几个步骤:
- 找一张小猪乔治的图片参考
- 对图片中的部分进行分解,并逐一实现(废话)
其实掌握了border-radius
后,这些步骤都不难了,细心绘制就可以完成啦。
我绘制的小猪乔治如图
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。