8

对于那里的 CSS 专家,我无法弄清楚使第一个标签/选择对不居中对齐的 css,但第二个确实居中对齐。

请参阅下图中的问题。我的目标是让第一个标签/选择对在中间对齐,并理解实现它的 css 规则。

在此处输入图像描述

<div class="pure">
    <form class="pure-form-inline">
        <div class="pure-g">
            <div class="pure-u labelArea">
                <label>Choose Project:</label>
            </div>
            <div class="pure-u-1-4">
                <select></select>
            </div>
        </div>
        <div class="pure-control-group">
            <label>Choose Customer:</label>
            <select></select>
        </div>
    </form>
</div>

在这里你可以看到这个动作......小提琴

4

5 回答 5

6
label, select {
    display: inline-block;
    vertical-align: middle;
}
于 2014-06-04T20:47:56.227 回答
6

一个简单的方法是给label元素一个等于下拉选择器高度的行高。但是,此解决方案取决于您的标签仅是单行文本,如果您有任何多行标签,它将不起作用,您应该使用vertical-align上面详述的方法。

label {
    line-height:25px;
}

更新了 JSFiddle

于 2014-06-04T20:48:15.227 回答
1

您在第一个/对div周围有额外的 s ,这会强制执行此行为。labelselect

如果删除第一个/对div周围不必要的 s并添加与第二个相同的类,你应该没问题labelselect

<div class="pure">
    <form class="pure-form-inline">
        <div class="pure-control-group">
            <label>Choose Project:</label>
            <select></select>
        </div>
        <div class="pure-control-group">
            <label>Choose Customer:</label>
            <select></select>
        </div>
    </form>
</div>

修改后的 JSFiddle

于 2014-06-04T21:03:03.670 回答
0

试试这个垂直对齐修复:

/* 垂直对齐修复 */

.valign:before {
    content:"";
    height:100%;
    display:inline-block;
    vertical-align:middle;
}
.valign > * {
    display: inline-block;

}
.valign-m { vertical-align: middle; }

将类 (.valign) 提供给父级(包含选择的 div)

而这个其他类的内部元素(选择+标签)

看看它是否有效。

于 2014-06-04T20:46:45.457 回答
0
.pure .pure-u {
    line-height:25px;
}
于 2014-06-04T20:48:21.160 回答