CSS - vertical-align无法正常工作

ryy*_*yst 36 html css

我有一些非常基本的HTML和CSS:

这是HTML:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" media="all" href="stylesheet.css">
        <title>Hello, World!</title>
    </head>
    <body>
        <header>
            Hello<sup>World</sup>
        </header>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是CSS:

header {
    vertical-align: middle;
    height: 60px;
    background-color: #00F;
}
Run Code Online (Sandbox Code Playgroud)

但是文本并没有在中间对齐.为什么不?

cla*_*uzy 50

vertical-align酒店仅适用于:

内联级和"表格单元"元素

看到这个链接.

您可以使用line-height垂直居中的文本,只是使其大于实际font-size,但只有文本跨越一行才有效.

或者,您可以通过相等的值添加元素padding的顶部和底部header.

根据评论编辑:显而易见的解决方案,如果使用HTML5 header元素将使它display: table-cell;而不是我认为重置CSS适用的默认块.


Mah*_*iya 11

试试这个,对我来说非常好:

/* Internet Explorer 10 */
display:-ms-flexbox;
-ms-flex-pack:center;
-ms-flex-align:center;

/* Firefox */
display:-moz-box;
-moz-box-pack:center;
-moz-box-align:center;

/* Safari, Opera, and Chrome */
display:-webkit-box;
-webkit-box-pack:center;
-webkit-box-align:center;

/* W3C */
display:box;
box-pack:center;
box-align:center;
Run Code Online (Sandbox Code Playgroud)


小智 11

Flexbox现在可以很容易地做到这一点:

header {
     display: flex;
     align-items: center;
     justify-content: center;;
}
Run Code Online (Sandbox Code Playgroud)

http://codepen.io/anon/pen/waYBjv


Zar*_*old 5

这是我最喜欢的使用 flex box 垂直对齐东西的技巧,一切都应该使用 flex box!

header {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: center;
    align-items: center;
    -webkit-justify-content: center;
    justify-content: center;
    border: black solid 0.1rem;
    height: 200px; <!--Insert any height -->
}
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" media="all" href="stylesheet.css">
        <title>Hello, World!</title>
    </head>
    <body>
        <header>
            Hello<sup>World</sup>
        </header>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)