如何使用CSS使<h1>垂直居中?

7
<header id="logo">
    <img src="logo.png" />
    <h1>Some text here</h1>
</header>

我使用

h1{display: inline;}

为了使它们在同一行,但文本低于图像, 图片大小为48x48px,文本大小为23px,我想将文本垂直居中到图像上,如何使用CSS实现?只需要支持Chrome。
谢谢你的回答,最终成功了:http://jsfiddle.net/tFdpW/
6个回答

16

这样做可以吗?http://jsfiddle.net/xs4x6/

<header id="logo">
    <img src="http://dummyimage.com/48x48/f0f/fff" />
    <h1>Some text here</h1>
</header>

header img {
    vertical-align: top
}

h1 {
    display: inline;
    font-size: 23px;
    line-height: 48px
}

请问您能否解释一下您的解决方案遵循哪些渲染/布局规则?此外,似乎可以在CSS中不硬编码图像大小来实现更好的解决方案 - 您知道这样的方法吗? - Piotr Dobrogost
一个更有意义的稍微不同的方法:http://jsfiddle.net/thirtydot/xs4x6/363/ - thirtydot

3

你可以尝试使用CSS,例如在img标签中添加margin:0 8px 8px 0; - Floern

3
h1{display: inline;line-height:48px;}

2

@wong2; 首先,inline 属性不支持垂直边距和填充属性。因此,还有其他选项。

第一步:移除 display:inline 并为其添加 float

img, h1{float:left;}
h1{margintop:15px; margin-left:10px;}

第二步:将display:table应用于它。
#logo{display:table}
img, h1{display:table-cell}
h1{vertical-align:middle;}

第三步:如果不想删除display:inline
h1{display: inline;line-height:48px;}

1

我将标题的高度设置为50像素,然后将h1的垂直对齐设置为中间,但不起作用。 - wong2
您必须将其分配给图像。 - VAShhh

0

尝试使用

h1 {
display: table-cell;
vertical-align: middle;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接