一般咱們設置border-radius
都只區分四個角的, 如border-radius: 1em 2em
.css
其實每一個角的border-radius
都由兩部分組成, 水平半徑和豎直半徑.html
要設置水平和豎直半徑, 用border-top-left-radius
設置時應該寫成border-top-left-radius: 1em 2em
, 可是用border-radius
設置時則應該寫成border-radius: 1em / 2em
.css3
_(:3」∠)_
chrome
若是懵逼了請往下看.瀏覽器
border-*-radius
當你直接設置某個角的border-radius
時, 即設置border-top-left-radius
, border-top-right-radius
, border-bottom-right-radius
, border-bottom-left-radius
中的一個時, 賦值的形式應爲[ <length> | <percentage> ]{1,2}
.code
舉例:htm
border-top-left-radius: 5em 40%
意爲, 該元素的左上角邊框的水平半徑爲5em
, 豎直半徑爲邊框盒高度的40%
.blog
border-radius
賦值形式應爲[ <length> | <percentage> ]{1,4} [ / [ <length> | <percentage> ]{1,4} ]?
.get
/
先後都有值, 則/
以前的值設置水平半徑, 以後的值設定豎直半徑./
, 則所賦值同時設置水平和豎直半徑.舉例:it
border-radius: 1em/5em; /* 至關於 */ border-top-left-radius: 1em 5em; border-top-right-radius: 1em 5em; border-bottom-right-radius: 1em 5em; border-bottom-left-radius: 1em 5em;
border-radius: 4px 3px 6px / 2px 4px; /* 至關於 */ border-top-left-radius: 4px 2px; border-top-right-radius: 3px 4px; border-bottom-right-radius: 6px 2px; border-bottom-left-radius: 3px 4px;
利用這些知識, 能夠畫出四分之一圓或半橢圓.
在作半橢圓的例子的時候發現了一個Chrome上的異常行爲.
若是寫成border-radius: 100% 0 0 100% / 50%
, 則能夠正常繪製半橢圓.
若是寫成border-radius: 100% / 50% 0 0 50%
, 繪製出來的卻不是半橢圓.
效果圖以下:
可是按理說它們都應該至關於"左上左下爲100% 50%
, 右上右下爲0
, 即直角".
Chrome中能夠看到這兩種寫法的計算值分別爲:
/* 正常半橢圓 */ border-bottom-left-radius:100% 50%; border-bottom-right-radius:0px 50%; border-top-left-radius:100% 50%; border-top-right-radius:0px 50%;
/* 錯誤半橢圓 */ border-bottom-left-radius:100% 50%; border-bottom-right-radius:100% 0px; border-top-left-radius:100% 50%; border-top-right-radius:100% 0px;
試驗了下, 在IE11和Safari中看到的都是正常的, 可是在Chrome和Firefox中看到的都是這種異常狀況.
如下, 上面是border-radius: 100% 0 0 100% / 50%
寫法, 下面是border-radius: 100% / 50% 0 0 50%
, 能夠看看你的瀏覽器是否區別對待了.
不清楚這是一個Chromium的bug仍是有意爲之. 至少根據W3C的標準來看, 應該是個bug, 已經提issue到chromium.