美文网首页
CSS box model 和 width: 100%

CSS box model 和 width: 100%

作者: 凌凌西 | 来源:发表于2018-01-24 15:17 被阅读0次

问题:这段CSS为什么会溢出?

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%是设置了哪一段的width?

box-sizing: content-box

设置content box width(这时margin / border / padding都会溢出)

box-sizing: border-box

设置border box width(这时只有加了margin-left / margin-right会溢出,padding和border不会溢出)

3.width 100% 和 width auto的区别

width 100%

会强制设置content box width 或 border box width。

width auto

满足marginLeft + borderLeft + paddingLeft + contentWidth + paddingRight + borderRight + marginRight = containingBlock,这时content box width 和 border box width 没有固定逻辑,随margin / border / padding的变化而变化。

4.meta标签

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

溢出都是在有这段常见的meta viewport标签时才会出现,因为没有这段代码的情况layout viewport和visual viewport没有固定,页面可以缩放,也无所谓溢出与不溢出了。

5.如何避免溢出?

(1)不要设置width 100%。一般情况下,width auto能解决问题。

(2)设置box-sizing: border-box。这时候只有加margin会溢出。

相关文章

网友评论

      本文标题:CSS box model 和 width: 100%

      本文链接:https://www.haomeiwen.com/subject/pkduaxtx.html