【发布时间】:2014-11-30 02:48:32
【问题描述】:
我想知道如何实现如下样机中的样式?
红色框相对于父元素居中。蓝框占据其父框的左边缘和蓝框的右边缘之间的所有空间。空白只是父母背景的一部分。红框是 300px 宽。
【问题讨论】:
我想知道如何实现如下样机中的样式?
红色框相对于父元素居中。蓝框占据其父框的左边缘和蓝框的右边缘之间的所有空间。空白只是父母背景的一部分。红框是 300px 宽。
【问题讨论】:
您可以使用 CSS 表格实现此目的:
只需将父元素的display 设置为table,并添加table-layout: fixed。将子元素的display 设置为table-cell,并赋予它们100% 的宽度。这样做时,它们将流畅地填充剩余区域。
<div class="parent">
<div class="child"></div>
<div class="child fixed"></div>
<div class="child"></div>
</div>
.parent {
display: table;
table-layout: fixed;
width: 100%;
}
.parent > .child {
display: table-cell;
height: 100px;
width: 100%;
}
.parent > .child.fixed {
width: 300px;
}
或者,如果你不想使用 CSS 表格,你也可以使用calc() 来设置元素的宽度。
在这种情况下width: calc((100% - 300px) / 2) 可以工作。
.parent > .child {
height: 100px;
width: calc((100% - 300px) / 2);
display: inline-block;
vertical-align: top;
}
.parent > .child.fixed {
width: 300px;
}
只需考虑browser support 为calc()。
【讨论】:
vertical-alignment 和 height: 100%; 在大多数情况下都不能正常工作)但是一直到 IE4/Opera 4 的工作是 float 这是人们应该使用的,不是display 和table 黑客。