繁体   English   中英

为什么div和表在给定宽度= 100%时表现不同?

[英]Why do a div and a table behave differently when given width=100% here?

这是我的代码,简化为相关部分:

<html><head><title></title>
<style type="text/css">
body { background-color: #fff; }
#titlebar{ border: solid 1px black; margin:10px; }

#bodyWrapper{ float: left; width: 100%; }

#bodyColumn{ margin-left: 230px; height:500px; }

#menuColumn{
    float: left;
    width: 230px;
    border: solid 1px black;
    margin-left: -100%;
    height:500px;
}

.bigContent{ width: 100%; margin:10px; }

.section{
    border: 1px solid black;
    padding:10px;
    overflow: auto;
}
</style></head><body>

<div id="titlebar">Title</div>
<div id="bodyWrapper"><div id="bodyColumn">

<table class="section bigContent"><tr><td>FIRST</td></table></table>
<div class="section bigContent">SECOND</div>

</div></div>
<div id="menuColumn">MENU</div>
</body></html>

我的问题:

  • 包含“SECOND”的<div>比包含“FIRST”的<table>更宽,尽管两者都是兄弟姐妹,并且通过相同的CSS类具有width=100%
  • <div>也比屏幕宽,导致滚动条出现

为什么这样,我该怎么做才能解决它?

注意:我在Firefox 3.6和IE 8中都看到了同样的问题

这是因为padding 在CSS中,width属性适用于元素的内容框,没有填充。

http://www.w3.org/TR/CSS21/box.html :在width属性应用于Content在下面的架构块:

因此外部元素的宽度是父级宽度的100%,加上左侧填充的10px和右侧填充的10px。

鉴于此元素是块元素,因此不必将其宽度指定为100%。

所以解决方案是:

  • 不设置宽度
  • 在设置宽度时考虑填充(这里需要以%为单位设置填充,例如2%的填充和96%的宽度(100-2 * 2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM