【发布时间】:2014-09-28 16:49:23
【问题描述】:
我有几个表单字段,每个字段都在一个父 display: inline-block 元素中。字段可以在其中的控件之前或之后有其他元素:
.Field {
display: inline-block;
border: solid 1px silver;
width: 100px;
padding: 2px;
margin: 2px;
vertical-align:middle;
color:gray;
}
.Control {
color:black;
border: solid 1px navy;
background-color:#def;
padding:2px;
}
<div class="Field">
Some text before the line.
<div class="Control">This</div>
</div>
<div class="Field">
<div class="Control">should</div>
Some text after the line.
</div>
<div class="Field">
<div class="Control">be</div>
</div>
<div class="Field">
Some text before...
<div class="Control">neatly</div>
...and some text after. Maybe even an image.
</div>
<div class="Field">
is it possible?
<div class="Control">aligned</div>
</div>
我正在尝试让vertical-align 工作,以使字段中的“主要”(.Control) 元素彼此相邻。
每个.Field 的基线应由其.Control 确定。
手动指定line-height 不是一个选项,并且周围的文本不应该有零高度或position: absolution:周围的文本应该仍然可见,并影响字段的高度。
这可以通过 CSS 实现吗?
【问题讨论】:
-
另外一个小补充 - 如果
Control也可能有多行,我们希望通过它的第一行对齐:jsfiddle.net/anmggL1t/1。已添加.Control {display: inline-block; box-sizing: border-box; vertical-align:text-top; width:100%;}
标签: html vertical-alignment css