【发布时间】:2013-01-04 20:59:39
【问题描述】:
开始之前:
请不要将其作为另一个问题的副本关闭。我只是在 Stackoverflow 上搜索了这里,但没有找到确切的案例。
我相信最接近的是this question。尽管如此,那里给出的回复对我来说并不真正有用,我相信因为该段落设置为position: absolute;。
这就是 HTML:
<ul>
<li><img src="http://www.placehold.it/300x200" /><p><span>Lorem Ipsum</span></p></li>
</ul>
还有 CSS:
li {
position: relative;
float: left;
overflow: hidden;
}
img {
width: 100%;
vertical-align: middle;
}
p {
background-color: rgba(255, 0, 0, .3);
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
span {
background-color: rgba(0, 255, 0, .3);
vertical-align: middle;
}
小提琴:http://jsfiddle.net/DpVjZ/
vertical-align: middle; 只是将文本从顶部稍微突出一点,但不是真正在中间。
设置跨度position: absolute;,然后应用top: 50%;,然后应用margin-top: -x%; 将不起作用,因为跨度的高度未知,因为它是动态内容。
尽管链接的问题指出这是不好的做法,但我也尝试了 display: table-cell 方法,但没有任何结果。请帮帮我。
【问题讨论】:
-
为什么列表项中有块级元素?您不认为这就是您遇到问题的原因吗?
-
据我所知,唯一不允许包含块级元素的列表元素是
dt。 -
您当然可以将列表项设置为
display:block;。我认为您是从望远镜的错误一端来解决问题的。你想达到什么目的?从视觉上看,它应该是什么样子?文字是否应该在图片上方? -
@JezenThomas 是的,文本应该在图像的顶部,垂直和水平居中。将列表项设置为
display: block;对我没有任何帮助,您能否详细说明一下? -
图片和文字的大小我假设是未知的?
标签: html css vertical-alignment paragraph