最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Border-radius50%vs100%_html/css

来源:懂视网 责编:小采 时间:2020-11-27 16:20:27
文档

Border-radius50%vs100%_html/css

Border-radius50%vs100%_html/css_WEB-ITnose:最近我在回顾曾经写过的代码。在过去写代码的时候,我似乎从未认真思考自己为什么要那么写,只是根据经验或者已有的代码写出来。或者是,我大概隐约知道那么写的原因,但是我从没有认真读过规范,所以并不了解具体的细节。所以我下定决心,尽可能多的问自己
推荐度:
导读Border-radius50%vs100%_html/css_WEB-ITnose:最近我在回顾曾经写过的代码。在过去写代码的时候,我似乎从未认真思考自己为什么要那么写,只是根据经验或者已有的代码写出来。或者是,我大概隐约知道那么写的原因,但是我从没有认真读过规范,所以并不了解具体的细节。所以我下定决心,尽可能多的问自己

最近我在回顾曾经写过的代码。在过去写代码的时候,我似乎从未认真思考自己为什么要那么写,只是根据经验或者已有的代码写出来。或者是,我大概隐约知道那么写的原因,但是我从没有认真读过规范,所以并不了解具体的细节。所以我下定决心,尽可能多的问自己“为什么”,“为什么要这么写”。现在我发现这样频繁地询问自己,让我拥有了很多“灵光一闪”的瞬间,现在我就要把其中一个分享给你们。

用 CSS 画一个完美的圆

在 Web 上我们常常会看到很多用到圆形的地方,比如带背景色的或者图片是圆形的。

通常我们都是用 CSS 的 border-radius 属性实现圆形:先画一个方形,然后将它的 border-radius 设置成50%。但是为什么偏偏是50%呢?我从来没有思考过这个问题,只是单纯地认为把顶角的半径设置成方形的高度或者宽度的一半就可以得到一个圆形。

这是一个 150px x 150px 大小的方形,将它的四个角的半径都设置成 50%。根据 W3C border-radius 的规范定义,如果 border-radius 的值是百分比的话,就是相对于 border box 的宽度和高度的百分比。在我们的例子中,盒子的宽高都是 150px,所以 50% 对应的就是 75px。

border-radius 的工作原理

但是有时候我看到有的人会用 border-radius: 100%; 实现圆形的效果,在前段时间的一个项目中我想都没想就这么使用了,看起来和 50% 并没有什么区别。是什么原因呢?

在 Lea Verou 的演讲 The Humble Border Radius 中,她说到 W3C 对于重合曲线有这样的规范:如果两个相邻的角的半径和超过了对应的盒子的边的长度,那么浏览器要重新计算保证它们不会重合。

如果左上角的圆角半径被设置成了100%,那么圆角就会从这个方形左下角跨到右上角,相当于把圆角半径设置成为150px(也就是方形的大小)。如果同时把右上角的圆角半径也设置成为100%,则两个相邻圆角合起来就有200%。这种情况自然是不允许出现的,所以浏览器就会重新就算,匀出空间给右边的圆角,同时缩放两个圆角的半径直到它们可以刚好符合这个方形,所以半径就变成了50%。

同样的,浏览器会对其他的圆角应用相同的计算,计算的结果是每个圆角的半径变成了50%,所以我们看到了一个原型。即使将border-radius设置为150px,浏览器还是会按照75px画圆角,75px是浏览器所允许的这个方形能够拥有的最大的圆角半径。

结论

如果所有圆角的半径都被设置成了100%,浏览器会根据图形的实际情况做一些计算,保证圆角能够刚好适应图形。不过我不确定将所有图形的 border-radius 设置成100%对性能会不会有影响。

好了,现在我要去整理一下上周写的乱七八糟的 CSS 了…

原文链接:Border-radius 50% vs 100%

关注微博:前端外刊评论

文档

Border-radius50%vs100%_html/css

Border-radius50%vs100%_html/css_WEB-ITnose:最近我在回顾曾经写过的代码。在过去写代码的时候,我似乎从未认真思考自己为什么要那么写,只是根据经验或者已有的代码写出来。或者是,我大概隐约知道那么写的原因,但是我从没有认真读过规范,所以并不了解具体的细节。所以我下定决心,尽可能多的问自己
推荐度:
标签: 100% 50 html
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top