CSS box model 和 width: 100%

問題:這段CSS為什么會(huì)溢出?

width: 100%;
padding: 20px;

demo: https://codepen.io/freedomcly/pen/LeoNbL/

1.width 100%中的100%是基于什么?

http://acgtofe.com/posts/2014/06/percentage-in-css
demo: https://codepen.io/freedomcly/pen/opRzob

2.width 100%是設(shè)置了哪一段的width?

box-sizing: content-box

設(shè)置content box width(這時(shí)margin / border / padding都會(huì)溢出)

box-sizing: border-box

設(shè)置border box width(這時(shí)只有加了margin-left / margin-right會(huì)溢出,padding和border不會(huì)溢出)

3.width 100% 和 width auto的區(qū)別

width 100%

會(huì)強(qiáng)制設(shè)置content box width 或 border box width。

width auto

滿足marginLeft + borderLeft + paddingLeft + contentWidth + paddingRight + borderRight + marginRight = containingBlock,這時(shí)content box width 和 border box width 沒有固定邏輯,隨margin / border / padding的變化而變化。

4.meta標(biāo)簽

<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">

溢出都是在有這段常見的meta viewport標(biāo)簽時(shí)才會(huì)出現(xiàn),因?yàn)闆]有這段代碼的情況layout viewport和visual viewport沒有固定,頁面可以縮放,也無所謂溢出與不溢出了。

5.如何避免溢出?

(1)不要設(shè)置width 100%。一般情況下,width auto能解決問題。

(2)設(shè)置box-sizing: border-box。這時(shí)候只有加margin會(huì)溢出。

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

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