垂直对齐图像内的绝对定位 <p>
Vertically align absolute positioned <p> inside image
如何在图像中垂直对齐绝对定位的 p
元素?
<div>
<img class="test-img" src="test.jpg">
<p class="tag">text with multiple lines here</p>
</div>
因为我不知道它的高度
编辑
我的图片不能作为背景,它是在运行时加载的。我想将文本放在图像中。到目前为止我所拥有的就像这张图片,我的文字是 top: 0
。我现在想将它垂直对齐到图像的中间。
我的CSS:
.test-img {
height: 320px;
width: 240px;
}
.tag {
position: absolute;
top: 0;
}
div {
height: 320px;
width: 240px;
display: inline-block;
position: relative;
}
我不知道我的 p
标签的高度,因为它的文本是从数据库中获取的。
为什么你不在标签中尝试样式
<p class="tag" style="position: absolute; right:140px; top:320px;" >
text with multiple lines here
</p>
或在 css
中添加一个 id 并设置 id 的样式
<p class="tag" id="my_id" >
text with multiple lines here
</p>
在 css
#my_id {
position: absolute; right:140px; top:320px;
}
您也可以尝试 margin-top: 360px;
除了使用 display:table;
之外,CSS 确实没有什么可以做到这一点(特别是因为它必须是动态高度),但至少现在 it has pretty good compatibility
.test-img {
height: 320px;
width: 240px;
display:block;
}
.inner {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: table;
}
.tag {
display: table-cell;
vertical-align: middle;
text-align: center;
font-size: 30px;
padding: 1em;
}
.outer {
height: 320px;
width: 240px;
position: relative;
}
<div class="outer">
<img class="test-img" src="//placehold.it/240x320">
<div class="inner">
<p class="tag">text with multiple lines here</p>
</div>
</div>
如何在图像中垂直对齐绝对定位的 p
元素?
<div>
<img class="test-img" src="test.jpg">
<p class="tag">text with multiple lines here</p>
</div>
因为我不知道它的高度
编辑
我的图片不能作为背景,它是在运行时加载的。我想将文本放在图像中。到目前为止我所拥有的就像这张图片,我的文字是 top: 0
。我现在想将它垂直对齐到图像的中间。
我的CSS:
.test-img {
height: 320px;
width: 240px;
}
.tag {
position: absolute;
top: 0;
}
div {
height: 320px;
width: 240px;
display: inline-block;
position: relative;
}
我不知道我的 p
标签的高度,因为它的文本是从数据库中获取的。
为什么你不在标签中尝试样式
<p class="tag" style="position: absolute; right:140px; top:320px;" >
text with multiple lines here
</p>
或在 css
中添加一个 id 并设置 id 的样式<p class="tag" id="my_id" >
text with multiple lines here
</p>
在 css
#my_id {
position: absolute; right:140px; top:320px;
}
您也可以尝试 margin-top: 360px;
除了使用 display:table;
之外,CSS 确实没有什么可以做到这一点(特别是因为它必须是动态高度),但至少现在 it has pretty good compatibility
.test-img {
height: 320px;
width: 240px;
display:block;
}
.inner {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: table;
}
.tag {
display: table-cell;
vertical-align: middle;
text-align: center;
font-size: 30px;
padding: 1em;
}
.outer {
height: 320px;
width: 240px;
position: relative;
}
<div class="outer">
<img class="test-img" src="//placehold.it/240x320">
<div class="inner">
<p class="tag">text with multiple lines here</p>
</div>
</div>