标题元素中的垂直对齐

Jak*_*ter 2 html css vertical-alignment

我知道这里有很多问题,但我尝试的所有方法似乎都不适用于我的代码.

我想垂直对齐元素中的文本

HTML:

<div id="mainWrapper">
    <div id="header"> 
        <div id="logo" class="headerElements">
            <h:outputText class="headerText" value="RedPrice" />
        </div>
        <div id="login" class="headerElements">
            <h:outputText class="headerText" value="Login" />
        </div>
        <div id="register" class="headerElements">
            <h:outputText class="headerText" value="Register" />
        </div>
        <div id="follow" class="headerElements">
            <h:outputText class="headerText" value="Follow us" />
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

*{
    margin:0;
    padding:0;
}

body,html {
    height: 100%;
    font-family: 'Quicksand', sans-serif;
}

div#mainWrapper {
    height: 100%;
    width: 100%;
    background: url(../images/women.jpg) no-repeat center center;
}

div#header {
    width: 100%;
    height: 5%;
    background: white;
    opacity: 0.5;
}

div.headerElements {
    float: left;
    height: 100%;
    width: 10%;
    text-align: center;
}

div.headerElements:hover {
    background: orangered;
    opacity: 0.5;
}

.headerText {
    font-size: x-large; 
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/E7DAe/

我已经尝试过:(不成功)

  • 在headerElems中将line-height设置为100%
  • 设置 display: table-cell
  • 将其放入一个ullis和设置显示:表并显示:表小区

有人能为我提供解决方案吗?

Ori*_*iol 9

您可以使用

div.headerElements:before {
    content: "";
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}
Run Code Online (Sandbox Code Playgroud)

演示(注意:我增加了包装器的高度以便更好地看到它)

根据http://css-tricks.com/centering-in-the-unknown/,阅读它以获得完整的解释.


小智 6

我最终使用了 flex 容器。因此,在此示例中,将 div#mainWrapper 的 CSS 更改为:

div#mainWrapper {
    height: 100%;
    width: 100%;
    background: url(../images/women.jpg) no-repeat center center;
    display: flex;
    align-items: center;
}
Run Code Online (Sandbox Code Playgroud)


lay*_*nee 5

这是另一个建议,但我不确定我理解这个问题.

div {
    height: 40px;
    line-height: 40px;
    vertical-align: middle;
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/XXyp2/