美文网首页
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