鍍金池/ 問(wèn)答/HTML5  HTML/ box-sizing: border-box 與width:0 結(jié)合時(shí)的問(wèn)題

box-sizing: border-box 與width:0 結(jié)合時(shí)的問(wèn)題

當(dāng)我在學(xué)習(xí)box-sizing:border-box的時(shí)候,在MDN文檔里看到這么一段話(huà)

在CSS中,你設(shè)置一個(gè)元素的 width 與 height 只會(huì)應(yīng)用到這個(gè)元素的內(nèi)容區(qū)。如果這個(gè)元素有任何的 border 或 padding ,繪制到屏幕上時(shí)的盒子寬度和高度會(huì)加上設(shè)置的邊框和內(nèi)邊距值。

box-sizing 屬性可以被用來(lái)調(diào)整這些表現(xiàn):

  • content-box 是默認(rèn)值。如果你設(shè)置一個(gè)元素的寬為100px,那么這個(gè)元素的內(nèi)容區(qū)會(huì)有100px寬,并且任何邊框和內(nèi)邊距的寬度都會(huì)被增加到最后繪制出來(lái)的元素寬度中。
  • border-box 告訴瀏覽器去理解你設(shè)置的邊框和內(nèi)邊距的值是包含在width內(nèi)的。也就是說(shuō),如果你將一個(gè)元素的width設(shè)為100px,那么這100px會(huì)包含其它的border和padding,內(nèi)容區(qū)的實(shí)際寬度會(huì)是width減去border + padding的計(jì)算值。大多數(shù)情況下這使得我們更容易的去設(shè)定一個(gè)元素的寬高。

當(dāng)我使用下列測(cè)試代碼時(shí)

.test{
        height: 100px;
        width: 100px;
        box-sizing: border-box;
        border: 25px red solid;
    }

它表現(xiàn)的符合 width(內(nèi)容區(qū)實(shí)際寬度) = width(設(shè)置的寬度,這里是100) - border -padding

clipboard.png

當(dāng)設(shè)置為

.test{
        height: 50px;
        width: 50px;
        box-sizing: border-box;
        border: 25px red solid;
    }
    
 

clipboard.png

也還是合乎width(內(nèi)容區(qū)實(shí)際寬度) = width(設(shè)置的寬度,這里是50) - border -padding

當(dāng)設(shè)置為

.test{
        height: 0px;
        width: 0px;
        box-sizing: border-box;
        border: 25px red solid;
    }
    
    

clipboard.png

為什么盒子還是會(huì)有border的寬度,請(qǐng)教下各位

回答
編輯回答
久愛(ài)她

小于 0 取 0

https://www.w3.org/TR/css-ui-...

The content width and height are calculated by subtracting the border and padding widths of the respective sides from the specified?width?and?height?properties. As the content width and height?cannot be negative?([CSS21], section 10.2), this computation is floored at 0.?

2017年9月1日 04:57
編輯回答
維他命

當(dāng)元素的 box-sizing 是 border-box 的時(shí)候,我們給元素設(shè)置的寬度、高度實(shí)際上是設(shè)置這個(gè)元素邊框盒的寬度、高度。也就是說(shuō)內(nèi)邊距、邊框都是在這個(gè)內(nèi)部繪制,而不會(huì)把元素?fù)伍_(kāi)。也就是說(shuō)盒子的寬度和高度實(shí)際上等于 內(nèi)邊距 + 邊框 + 加內(nèi)容寬度和高度。由于內(nèi)容寬度不能為負(fù)數(shù),最小為0,所以才有如上現(xiàn)象。

2018年3月10日 23:07
編輯回答
撿肥皂

自己回答一下,看了上面的答案明白了
設(shè)置了box-sizing:border-box

我們給元素設(shè)置的寬度、高度實(shí)際上是設(shè)置這個(gè)元素邊框盒的寬度、高度。

即內(nèi)容區(qū)域的width = 設(shè)置的width - border - padding.
而內(nèi)容區(qū)域的width小于0會(huì)取0
實(shí)際看到的區(qū)塊width = 內(nèi)容區(qū)域的with + border +padding

2017年10月11日 16:31
編輯回答
朕略傻

請(qǐng)注意,設(shè)置了border-box的屬性值后,表現(xiàn)的寬度 = width + padding + border-width

2017年8月18日 04:49