【发布时间】:2012-03-09 07:08:47
【问题描述】:
我正在设计一系列表单行。每个行 div 都有一个固定宽度的标签 div 和一个可以包含任意数量的 float: left 元素的内容 div。
示例标记是:
<div class="Row">
<div class="Label">Label Here</div>
<div class="Content">
<div class="Item">Short Content</div>
</div>
</div>
<div class="Row">
<div class="Label">Label Here</div>
<div class="Content">
<div class="Item">
Long Content ... Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris id eros magna. Suspendisse eu diam nunc. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce eu neque massa.
</div>
</div>
</div>
到目前为止的CSS是:
.Row {
clear: left;
padding: 10px;
}
.Label {
float: left;
width: 150px;
}
.Content {
float: left;
}
.Content .Item {
float: left;
}
jsfiddle 在这里:http://jsfiddle.net/vVy5J/2/
只要内容 div 的内容不大于行中的剩余宽度,这看起来是正确的。如果是,则内容 div 会“翻转”到标签下方并紧贴行 div 的左边缘:http://screencast.com/t/Iknv98R9
我需要长内容 div 来换行,但仍靠在行的顶部并与标签的右边缘齐平。
传统的解决方案是给内容 div 一个固定的宽度。但这不会飞到这里,因为行宽会根据浏览器窗口大小等而变化,并且内容 div 需要从标签 div 的右边缘延伸到包含行 div 的右边缘。
要求:我只能在行 div 内更改标记。内容必须是元素,所以 text-indent 对我不起作用。我需要支持IE7+
【问题讨论】:
-
这是我正在尝试的最终结果的记事本模型:screencast.com/t/J72UO0QKs
-
我暗示但未提及的另一个要求:行 div 需要在内容 div 换行时垂直拉伸,以便它尽可能高,但不能再高了。