我在一个 980 像素宽的容器内有 2 个相邻的 DIV(A 位于左侧,B 位于右侧)。我为 A 和 B 设置了 50% 的宽度,效果很好。
问题:我想在 DIV A 中添加一些 padding-right,以便其中的文本不会触及 div B 的文本。如果这样做,我需要调整 DIV 的百分比(即 48%) . 有没有办法避免这种情况?(即根据填充自动调整百分比)
HTML
<div class="tbl">
<div class="row">
<div class="cell">A</div>
<div class="cell">B</div>
</div>
</div>
CSS:
.tbl{
display:table;
border-spacing:5px;
}
.row{
display:table-row;
}
.cell{
display:table-cell;
width:50%;
}
你必须使用,box-sizing:border-box;
因为使用border-box;
会给你一个带边框的盒子外观,它会自己管理边框空间。
你可以自己给你的边框的宽度和颜色border:2px solid black;
。因此,可以区分两个 div 的内容。
您可以通过使用另一种包装来做到这一点div
:
<div class="wrapper">
<div class="inner">
<div class="left"></div>
<div class="right"></div>
</div>
</div>
.wrapper { width: 960px; }
.inner { padding: 1em; }
.left, .right { width: 50%; float: left; }
或者使用box-sizing
使计算变得非常容易。
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
它改变了填充和边框的渲染,使它们包含在宽度中而不是添加到宽度中。
如果您想在不减小 div 宽度的情况下添加填充,可以使用:box-sizing: border-box;
更多信息
例如
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box; /* Firefox, other Gecko */
box-sizing: border-box; /* Opera/IE 8+ */
这将使您的 div 具有所需的宽度 (50%),并且填充将被减去而不是添加到 div。请注意,这是一个 CSS3 属性,不适用于所有版本的 IE: http ://caniuse.com/css3-boxsizing
是的,您可以使用该box-sizing
属性。通过设置:
box-sizing: border-box;
width 属性将设置总宽度(包括边框和填充),例如一个 div:
div {
width:500px;
padding: 20px;
border: 10px solid blue;
box-sizing: border-box;
}
将具有 500 像素的视觉整体宽度,而不是 500 + 40 + 20 = 560 像素的默认宽度。
对于宽度、边距和填充值,请使用 % 或 em 值
看看这段代码
.container {
max-width: 980px;
}
section {
float: left;
margin: 0.0122448; /* 10px ÷ 980px */
width: 0.479591; /* 470px ÷ 660px */
}
aside {
float: right;
margin: 0.0122448; /* 10px ÷ 980px */
width: 0.479591; /* 470px ÷ 980px */
}
有关响应式设计的完整教程 -
http://learn.shayhowe.com/advanced-html-css/responsive-web-design