今天本打算要完成一個相似於進度條的小組件, 原型是這樣的(這裏長200px, 高28px)css
我一看, 很簡單嘛, 拋開那個數字1樣式不談, 總體父級樣式就是一個左邊半圓形, 右邊帶有弧度的div啊。
這個用css的border-radius就能夠搞定了啊。 左邊是圓角, 圓角50px啊, 右邊是小圓角, 以往的div都是8px弧度的。 根據border-radius中角的順序(以順時針的方向解析,上左,上右,下右,下左), 設置border-radius: 50px 8px 8px 50px;就行了啊。 滿心歡喜寫好樣式, 打開瀏覽器。瀏覽器
傻了, 不對啊, 我原覺得是這樣的spa
實際上, 瀏覽器中是這樣的3d
不對了啊, 右邊的角度設置了啊, 怎麼看起來跟沒設置同樣呢, 我把8改爲了10px在試了下, 仍是差很少跟沒設置同樣的。code
8px按理說應該有明顯的弧度了啊, 全設置成8px看看呢blog
對啊, 這是8px應該有的弧度, 爲何改爲左邊寫成50px就變樣了呢, 難道跟50px有關?帶着疑問, 我看了看百度。ip
百度說, 其實border-radius的完整寫法(w3c)是 原型
border-radius: 1-4 length|% / 1-4 length|%;
平時咱們寫的border-radius : 50px,其實完整的寫法應該是:it
border-radius : 50px 50px 50px 50px / 50px 50px 50px 50px;
「/」前的四個數值表示圓角的水平半徑,後面四個值表示圓角的垂直半徑 class
每一個順序一一對應 (水平半徑:左上 右上 右下 左下)/(垂直半徑:左上 右上 右下 左下),
什麼是水平半徑和垂直半徑呢?
根據水平半徑跟垂直半徑的比值, 能夠調整角的弧度, 二者半徑相同, 就是個圓角。 這就是問什麼我平時設置的角都是圓角的緣由, 由於我沒有寫完整過
例如 border-radius:10px 20px 30px 40px/40px 30px 20px 10px
就是這樣的樣子
再來回頭看咱們以前的問題
咱們忽略了高度28px了啊. 這樣算來, 咱們要設置右邊是個半圓形, 只要水平跟垂直半徑都是14px不就行了嗎
border-radius: 14px 8px 8px 14px / 14px 8px 8px 14px;
這樣,父級樣式不就對了嗎。
以前右邊設置的8px圓角看起來沒有效果, 可能跟50px比起來, 被等比例壓縮了吧, 由於左邊原本就高28px, 塞了個半徑50px進去, 我算算(14 * 8 / 50 = 2.24), 就等於設置成了
border-radius: 14px 2.24px 2.24px 14px / 14px 2.24px 2.24px 14px;
之後寫樣式要小心了啊, 小問題也不小啊。