这是一种非常常见的情况:设计师告诉我,某些文本应该是垂直居中的,但是我不能使用display:table-cell; hack,因为包含元素需要具有不同的显示property
。由于存在问题,我也不想使用任何position:absolute
。
小提琴:https://jsfiddle.net/z824m656/1/
HTML
<div class="contents-vertically-centerd">
<img src="https://blog.stackoverflow.com/images/wordpress/stackoverflow-logo-300.png" width="150"/><span>Here's some text that I want vertically centered with respect to the image</span>
</div>
CSS
div.contents-vertically-centerd { padding: 10px; border: 1px dashed #000000; }
答案 0 :(得分:1)
您需要垂直对齐图像,而不是文本。
你试过了吗?
div img {
vertical-align: middle;
}
在您描述的那种情况下,如果您:
,它也会对您有所帮助height
display
文字的<span>
声明为inline-block
height
<span>
line-height
<span>
答案 1 :(得分:0)
这是使用vertical-align: middle;
的更新小提琴
https://jsfiddle.net/z824m656/2/
div.contents-vertically-centerd * {
vertical-align:middle;
}
答案 2 :(得分:0)
您可以使用vertical-align: middle
,但请注意,这只会对齐inline
(或inline-block
内容)。所以它应该像:
div.contents-vertically-centerd img, div.contents-vertically-centerd span {
display: inline-block;
vertical-align: middle;
}
答案 3 :(得分:0)
对于您的特殊用例,有一个简单的解决方案:在图像上使用vertical-align: middle
。它将文本居中于图像。 Here’s the updated Fiddle
答案 4 :(得分:0)
另一种选择是<div style="height:100px">
<!-- Spacer -->
</div>
<div class="container">
<a href="#" class="button">Sign Up</a>
<a href="#" class="button">Login</a>
</div>
方法。
transform: translateY(-50%)
.element {
position: relative;
top: 50%;
transform: translateY(-50%);
}
div {
height: 200px;
/* Used to center horizontally */
text-align: center;
}
p {
position: relative;
top: 50%;
transform: translateY(-50%);
}
更详细的记录here。