How to align label and select box vertically (midd

2019-04-07 08:59发布

For the CSS gurus out there, I cannot figure out the css that makes the first label/select pair not middle align, but the second one does align in the middle.

See the problem in the image below. My goal is to make the first label/select pair align in the middle and to understand the css rules that make it happen.

enter image description here

<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>

Here is where you can see this in action...Fiddle

5条回答
聊天终结者
2楼-- · 2019-04-07 09:21
label, select {
    display: inline-block;
    vertical-align: middle;
}
查看更多
Viruses.
3楼-- · 2019-04-07 09:27

Try with this vertical align fix:

/* Vertical Align Fix */

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

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

Give the class (.valign) to the parent (The div containing the select)

And this other class to the inner elements (select + label)

See if it works.

查看更多
劳资没心,怎么记你
4楼-- · 2019-04-07 09:28

An easy way to do this is to give the label elements a line-height equal to that of the height of the dropdown selector. However, this solution depends on your labels only being a single line of text, if you have any labels that are multi-line it will not work and you should use the vertical-align method detailed above.

label {
    line-height:25px;
}

Updated JSFiddle

查看更多
闹够了就滚
5楼-- · 2019-04-07 09:35
.pure .pure-u {
    line-height:25px;
}
查看更多
地球回转人心会变
6楼-- · 2019-04-07 09:42

You have additional divs around the first label/select pair, which force this behaviour.

If you remove the unnecessary divs around the first label/select pair and add the same class as in the second, you should be fine

<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>

Modified JSFiddle

查看更多
登录 后发表回答