一個關於border-radius值設置的問題記錄

問題記錄

今天本打算要完成一個相似於進度條的小組件, 原型是這樣的(這裏長200px, 高28px)css

clipboard.png

我一看, 很簡單嘛, 拋開那個數字1樣式不談, 總體父級樣式就是一個左邊半圓形, 右邊帶有弧度的div啊。
這個用css的border-radius就能夠搞定了啊。 左邊是圓角, 圓角50px啊, 右邊是小圓角, 以往的div都是8px弧度的。 根據border-radius中角的順序(以順時針的方向解析,上左,上右,下右,下左), 設置border-radius: 50px 8px 8px 50px;就行了啊。 滿心歡喜寫好樣式, 打開瀏覽器。瀏覽器

傻了, 不對啊, 我原覺得是這樣的spa

clipboard.png

實際上, 瀏覽器中是這樣的3d

clipboard.png

不對了啊, 右邊的角度設置了啊, 怎麼看起來跟沒設置同樣呢, 我把8改爲了10px在試了下, 仍是差很少跟沒設置同樣的。code

8px按理說應該有明顯的弧度了啊, 全設置成8px看看呢blog

clipboard.png

對啊, 這是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

每一個順序一一對應 (水平半徑:左上 右上 右下 左下)/(垂直半徑:左上 右上 右下 左下),

什麼是水平半徑和垂直半徑呢?

clipboard.png

根據水平半徑跟垂直半徑的比值, 能夠調整角的弧度, 二者半徑相同, 就是個圓角。 這就是問什麼我平時設置的角都是圓角的緣由, 由於我沒有寫完整過

例如 border-radius:10px 20px 30px 40px/40px 30px 20px 10px

就是這樣的樣子

clipboard.png

再來回頭看咱們以前的問題

咱們忽略了高度28px了啊. 這樣算來, 咱們要設置右邊是個半圓形, 只要水平跟垂直半徑都是14px不就行了嗎

border-radius: 14px 8px 8px 14px / 14px 8px 8px 14px;

clipboard.png

這樣,父級樣式不就對了嗎。

以前右邊設置的8px圓角看起來沒有效果, 可能跟50px比起來, 被等比例壓縮了吧, 由於左邊原本就高28px, 塞了個半徑50px進去, 我算算(14 * 8 / 50 = 2.24), 就等於設置成了

border-radius: 14px 2.24px 2.24px 14px / 14px 2.24px 2.24px 14px;

之後寫樣式要小心了啊, 小問題也不小啊。

相關文章
相關標籤/搜索