border-radius:50%和100%的區(qū)別

在學(xué)習(xí)css的過程中,我們一般想要得到一個圓的話,那么border-radius這個屬性的必不可少的,有時候我們把這個值設(shè)置成了50%,OK正常,有時候又設(shè)置成100%,也能work well ,那這兩個之間的區(qū)別到底是什么呢

這是一個 150px x 150px 大小的方形,將它的四個角的半徑都設(shè)置成 50%。根據(jù) W3Cborder-radius 的規(guī)范定義,如果border-radius的值是百分比的話,就是相對于 border box 的寬度和高度的百分比。在我們的例子中,盒子的寬高都是 150px,所以 50% 對應(yīng)的就是 75px。


border-radius 的工作原理

但是有時候我看到有的人會用border-radius: 100%;實現(xiàn)圓形的效果,在前段時間的一個項目中我想都沒想就這么使用了,看起來和 50% 并沒有什么區(qū)別。是什么原因呢?

在 Lea Verou 的演講The Humble Border Radius中,她說到 W3C 對于重合曲線有這樣的規(guī)范:如果兩個相鄰的角的半徑和超過了對應(yīng)的盒子的邊的長度,那么瀏覽器要重新計算保證它們不會重合。

如果左上角的圓角半徑被設(shè)置成了100%,那么圓角就會從這個方形左下角跨到右上角,相當(dāng)于把圓角半徑設(shè)置成為150px(也就是方形的大?。?。如果同時把右上角的圓角半徑也設(shè)置成為100%,則兩個相鄰圓角合起來就有200%。這種情況自然是不允許出現(xiàn)的,所以瀏覽器就會重新就算,勻出空間給右邊的圓角,同時縮放兩個圓角的半徑直到它們可以剛好符合這個方形,所以半徑就變成了50%。


同樣的,瀏覽器會對其他的圓角應(yīng)用相同的計算,計算的結(jié)果是每個圓角的半徑變成了50%,所以我們看到了一個原型。即使將border-radius設(shè)置為150px,瀏覽器還是會按照75px畫圓角,75px是瀏覽器所允許的這個方形能夠擁有的最大的圓角半徑。

結(jié)論

如果所有圓角的半徑都被設(shè)置成了100%,瀏覽器會根據(jù)圖形的實際情況做一些計算,保證圓角能夠剛好適應(yīng)圖形。不過我不確定將所有圖形的border-radius設(shè)置成100%對性能會不會有影響。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 今天寫代碼得時候,突然想到一個問題, Border-radius50%和100%有什么不一樣, 在測試之下,得出,...
    不發(fā)光也是金子閱讀 1,534評論 0 0
  • 各種純css圖標(biāo) CSS3可以實現(xiàn)很多漂亮的圖形,我收集了32種圖形,在下面列出。直接用CSS3畫出這些圖形,要比...
    劍殘閱讀 9,990評論 0 8
  • 1、屬性選擇器:id選擇器 # 通過id 來選擇類名選擇器 . 通過類名來選擇屬性選擇器 ...
    Yuann閱讀 1,761評論 0 7
  • 他是一個7歲少年,明亮少年,不是因為他有什么特殊而很明亮,而是這個年齡的少年都透著明亮,敢想敢說、敢說敢做、心思純...
    穩(wěn)住閱讀 967評論 0 1
  • 《甲方乙方》 1、報告將軍,德國地圖實在找不著,你就拿南京地圖湊和著吧! 2、姚遠:一年前的今天,我就是從這里跳了...
    逾溪閱讀 983評論 0 0

友情鏈接更多精彩內(nèi)容