正确使用"width:100%"

作者: 盛夏晚清风 | 来源:发表于2017-05-22 14:38 被阅读0次

"width:100%"是一个很常用的属性,当对子元素这样设置的时候,子元素的宽度就等于父元素的宽度。
但是,这句话还不够准确。子元素的宽度指什么?子元素内容区域的宽度还是包括padding/border的总宽度?父元素的宽度指什么?父元素内容区域的宽度还是包括padding/border的总宽度?
这就是这篇博客的主要议题。我们直接来看例子:

// html
<body>
  <div class='parent'>
    parent
     <div class='child'>
        child
     </div>
  </div>
</body>
// css
.parent{
  margin:100px auto;
  width:600px;
  border:100px solid #ddd;
  padding:100px;
}
.child{
  width:100%;
  border:50px solid pink;
  padding:50px;
}

结果:


由图可知:
父元素内容区域宽度:600px,padding:100px,border:100px,总宽度:1000px;
子元素内容区域宽度:600px,padding:50px,border:50px,总宽度:800px。
由此可知,子元素设置宽度的百分比是指子元素内容区域相对于父元素内容区域;同时,正是由于子元素设置宽度的百分比是指子元素内容区域相对于父元素内容区域,所以造成了子元素溢出了父元素

在以上示例中,我们没有设置box-sizing属性,因此box-sizing默认为content-box。现在,我们为元素设置box-sizing:content-box,再看看结果:

// css
*{
  box-sizing:border-box;
}

结果:


由图可知:
父元素内容区域宽度:200px,padding:100px,border:100px,总宽度:600px;
子元素内容区域宽度:0px,padding:50px,border:50px,总宽度:200px。

由此可知,当设置box-sizing:border-box时,子元素设置宽度的百分比是指子元素整个盒子区域相对于父元素内容区域

总结:
1、当设置"box-sizing:content-box"时,子元素设置宽度的百分比是指子元素内容区域相对于父元素内容区域
2、当设置"box-sizing:border-box"时,子元素设置宽度的百分比是指子元素整个盒子区域相对于父元素内容区域
3、如果想要正确使用"width:100%"这一属性,一定要设置"box-sizing:border-box",否则会造成子元素溢出。

由于个人水平有限,博客错误之处,烦请指正!

相关文章

  • 正确使用"width:100%"

    "width:100%"是一个很常用的属性,当对子元素这样设置的时候,子元素的宽度就等于父元素的宽度。但是,这句话...

  • 图片容器宽高比设置的优化方案

    div { width: 100%; position: relative; // 使用相对定位 height: ...

  • img问题

    让图片完全显示: 1、使用img标签,设置CSS样式 img{width: 100%;height:100%;} ...

  • CSS学习笔记

    width=100%和width=auto(默认值)的区别 width=100%表示content占100%,如果...

  • 如何让一个div占满全屏

    html{width: 100%;height: 100%;}body{width: 100%;height: 1...

  • CSS 响应设计-图片

    1、使用 width 属性 如果 width 属性设置为 100%,图片会根据上下范围实现响应式功能: 实例 注意...

  • CSS 响应设计-视频

    1、使用 width 属性 如果 width 属性设置为 100%,视频播放器会根据屏幕大小自动调整比例: 实例 ...

  • 图片等比例缩放

    width: auto;height: auto; max-width: 100%;max-height: 100...

  • Css border属性制作小图标

    border的正常使用:如图1 .triangle-bottomleft{ width:100px; heig...

  • vue 3.0 拖拽组件

    拖拽容器 使用 参数 名称类型默认值说明unitstringpx单位dataObejct{ width: 100,...

网友评论

    本文标题:正确使用"width:100%"

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