我有三个连续<div>
的 s 需要放置在两列中,<div>
第一列占据第一列,其余的占据右列,如下图和这个 jsfiddle 所示。在 jsfiddle 中,我使用width
约束来强制float
s 到位。这可以通过另一种方式而不使用width
约束来完成吗?s的顺序<div>
不能改变。
我更喜欢使用尽可能少的固定<div>
宽度的解决方案。
我有三个连续<div>
的 s 需要放置在两列中,<div>
第一列占据第一列,其余的占据右列,如下图和这个 jsfiddle 所示。在 jsfiddle 中,我使用width
约束来强制float
s 到位。这可以通过另一种方式而不使用width
约束来完成吗?s的顺序<div>
不能改变。
我更喜欢使用尽可能少的固定<div>
宽度的解决方案。
您可以float
从右侧 div 中删除,并添加margin-left
比左侧 div 稍大的宽度 - http://jsfiddle.net/cx6VJ/2/
如果您不想要左侧 div 的固定宽度,您可以设置宽度和左侧边距的百分比。
您可以使用固定定位和百分比宽度来做到这一点。
CSS 代码:
.image {
position:fixed;
top:0px;
left:0px;
width:75%;
height:100%;
}
.summary {
position:fixed;
top:0px;
left:75%;
width:25%;
height:50%;
}
.info {
position:fixed;
top:50%;
left:75%;
width:25%;
height:50%;
}
感谢@Amit 和@user1823713 提供的帮助,我结合了他们的答案来获得保持<div>
s 的相对位置并使它们的宽度适应容器宽度的东西。这是生成的jsfiddle。
这种布局可以不加任何更改地插入到容器中,最终在容器上设置一个宽度来限制总布局宽度。
我只是提供这个,因为它被要求:
我更喜欢使用尽可能少的固定宽度的解决方案。
这是一个没有 div 的解决方案(它使用表格):
<table>
<tr><td rowspan="2">Image</td>
<td>summary</td></tr>
<tr><td>info</td></tr>
</table>
Flexbox 可能是一个理想的选择,但支持还不是很广泛。columns
如果您不介意它在 IE9 或更早版本中不起作用,您可以这样做。您需要为 Mozilla 和 Webkit 添加前缀。
#container {
background-color: orange;
width: 408px;
columns: 2;
}
#container > div {
/* break-inside: avoid-column;*/
}
#left {
border: 2px solid green;
min-height: 200px;
break-after: column;
}
.right {
border: 2px solid blue;
height: 50px;
}
#red {
border: 2px solid red;
}
我故意使right
元素比你的演示小,但你可以将它们的大小增加到 200 像素,它们仍然具有所需的布局。