前端Tips#3 - 简写的 border-radius 100% 和 50% 是等效的

本文同步自 JSCON简时空 - 技术博客,点击阅读

视频讲解

视频地址css

文字讲解

一、先讲结论

border-radius 这个 css 属性你们应该使用得很是娴熟,现实中用到的场景基本都是四个圆角一致的状况。html

好比实现一个圆形按钮,其中 border-radius 数值有些人写为 50%,有些人则写成 100%,不过你会发现二者效果是同样的:前端

测试 HTML 代码以下:
<style>
  .circle-btn {
    color: white;
    width: 100px;
    height: 100px;
    text-align: center;
    line-height: 100px;
  }
</style>

<div class="circle-btn" style="
    background: #8BC34A;
    border-radius: 100%;
">50%</div>

<div class="circle-btn" style="
    background: #E91E63;
    border-radius: 100%;
">100%</div>

result

其实不管是 50% 仍是 100%,只要将 border-radius 设置成 x%,且 x >= 50 都能得到和 50% 同样的效果。css3

若是不知道其中的缘由,能够继续往下看。git

二、缘由分析

第 1 个知识点是 border-radius 的写法,最全的写法是这样的,记住这张图就行:
示意图github

详细教程可参考《 CSS Border-Radius Can Do That?

第 2 个知识点是 border-radius 的标准,在border-radius 标准中 Overlapping Curves 章节里,有这么一段话:编程

曲线重叠

简单翻译为:角曲线不得重叠:当任意两个相邻边框半径的总和超过边框的长度时,UA(标准实现方)必须按比例减小全部边框半径的使用值,直到它们没有重叠微信

咱们知道两个前提:app

  • 每一条边最高可用长度也就 100%;
  • 每一条边最多能够设置两个圆角曲线(在边的两端)

这两端的椭圆半轴长度设置值之和存在二者状况:ide

  • 设置值加起来不超过 100%,那么大伙儿各自安好,互不干扰;
  • 设置值加起来若是超过 100%,那须要按比例从新划分:好比一个设置 100%,一个设置成 300%,加起来就 400% 了(超过 100% 了) —— 那么实际上一个真正分得长度的 1/4,另外一个真正分得长度的 3/4;

结合 知识点 1知识点 2 就能获得文章最开始的结论了。

三、小工具 + 小练习

若是对 border-radius 的写法不太熟也不要紧,有个在线工具能够帮你更好的理解。

另外,最近看到使用单个 div + border-radius 实现如下 “转动的太极图”,大伙儿能够练习一下:

太极图

具体实现可参考如下任意一篇文章:

也能够参考我所 “抄写” 的代码

四、参考文章

关于 “前端Tips专栏”

前端Tips”专栏,隶属于 JSCON 专栏系列,设计初衷是快速获取前端小技巧知识,取材普遍,涵盖前端编程诸多领域。设计初衷是快速消费类知识,因此每一个 tips 阅读耗时大约 5 分钟。为方便读者在不一样场合阅读,每篇 tips 配有视频音频文字,挑本身喜欢方便的就行。

有两种方式获取历史 tips:

① 在公众号内回 "tips" +"期号" 就能够。例如:回复 “tips25” 便可获取第25期 tips

② 前往网站:https://boycgit.github.io/fe-... ,里面提供了搜索功能

欢迎你们关注个人知识专栏,更多内容等你来挖掘

我的微信公众号

相关文章
相关标签/搜索