Html CSS-绝对定位段落中的垂直对齐文本
开始之前:Html CSS-绝对定位段落中的垂直对齐文本,html,css,vertical-alignment,paragraph,Html,Css,Vertical Alignment,Paragraph,开始之前: 请不要将此作为另一个问题的重复关闭。我只是在Stackoverflow上搜索了一下,没有找到确切的案例 最接近的是我相信。尽管如此,这里给出的回复对我来说还是不起作用,我相信这是因为该段落设置了位置:绝对 这就是HTML: <ul> <li><img src="http://www.placehold.it/300x200" /><p><span>Lorem Ipsum</span></p>&
请不要将此作为另一个问题的重复关闭。我只是在Stackoverflow上搜索了一下,没有找到确切的案例 最接近的是我相信。尽管如此,这里给出的回复对我来说还是不起作用,我相信这是因为该段落设置了
位置:绝对代码>
这就是HTML:
<ul>
<li><img src="http://www.placehold.it/300x200" /><p><span>Lorem Ipsum</span></p></li>
</ul>
小提琴:
垂直对齐:中间对齐代码>只是将文本从顶部颠簸一点点,但实际上不在中间。
设置span位置:绝对代码>然后应用top:50%代码>然后页边距顶部:-x%代码>不起作用,因为跨度的高度未知,因为它是动态内容。
虽然链接的问题指出这是一种糟糕的做法,但我也尝试了display:table cell
方法,但没有任何结果。请帮帮我。垂直对齐在CSS中是一件棘手的事情,但当你熟悉CSS表格时并不难做到
<style>
html, body, #wrapper { height: 100%; }
#wrapper { display: table; width: 100%; } /* Create space */
#wrapper > * { display: table-cell; vertical-align: middle; } /* table-cells can be verticaly aligned! */
#wrapper > * > .container { display: block; margin: auto; width: 600px; border: 1px solid #000000; } /* Horizontal align */
</style>
<div id="wrapper">
<section id="main">
<div class="container">
<p>
I'm centered in a fluid layout! :D
</p>
</div>
</section>
</div>
html,正文,#包装{高度:100%;}
#包装器{显示:表格;宽度:100%;}/*创建空间*/
#包装器>*{显示:表格单元格;垂直对齐:中间;}/*表格单元格可以垂直对齐*/
#包装器>*>。容器{显示:块;边距:自动;宽度:600px;边框:1px实心#000000;}/*水平对齐*/
我在流体布局中居中!:D
编辑
顶部将此元素放置在另一个元素的顶部,使#包装器位置:固定;身高:100%;宽度:100%;左:0px;顶部:0px;或元素使用位置:绝对 去掉p标签。不管怎样,你已经有了它
css
html
- 同侧眼睑
在WindowsIE9和Chrome上测试
不知道它是否用于演示,但如果您希望图像上的红色阴影为span标记创建一个类,然后在该类中插入一个新span
span.text {
background-color: rgba(0, 255, 0, .3);
position: absolute;
text-align:center;
width: 100%;
top:46%;
}
span.redshade {
background-color: rgba(255, 0, 0, .3);
width: 100%;
height: 100%;
<ul>
<li><span class="redshade"> </span><span class="text">Lorem Ipsum</span><img src="http://www.placehold.it/300x200" /></li>
</ul>
span.text{
背景色:rgba(0,255,0,3);
位置:绝对位置;
文本对齐:居中;
宽度:100%;
最高:46%;
}
红荫{
背景色:rgba(255,0,0,3);
宽度:100%;
身高:100%;
- 同侧眼睑
如果不对文本或图像的假定高度进行硬编码,我(很遗憾)无法在少于3层中解决此问题:
建立绝对定位
建立表格布局
建立表格单元布局并垂直对齐:中间
将1和2结合起来似乎可以防止height:100%因为我不知道的原因而工作。我认为拒绝表单元格布局似乎是对旧的“不要将表用于布局”模因的滥用;CSS用于布局,因此这不会滥用元素语义。(尽管不幸的是,它需要语义上无意义的div。)
-
同侧眼睑
李{
位置:相对位置;
浮动:左;
溢出:隐藏;
}
img{
宽度:100%;
}
.绝对、.表、.中间{
排名:0;
左:0;
宽度:100%;
身高:100%;
}
.绝对的{
位置:绝对位置;
}
.桌子{
显示:表格;
}
.中{
显示:表格单元格;
垂直对齐:中间对齐;
}
p{
背景色:rgba(255,0,0,3);
}
跨度{
背景色:rgba(0,255,0,3);
}
为什么列表项中有块级元素?你不认为这就是你遇到问题的原因吗?据我所知,唯一不允许包含块级元素的列表元素是dt
。你当然可以将列表项设置为display:block;
。我认为你是从t开始解决问题的他把望远镜的一端弄错了。你想达到什么目的?视觉上,它应该是什么样子?文本应该在图像的顶部吗?@JezenThomas是的,文本应该在图像的顶部,垂直和水平居中。将列表项设置为显示:block;
对我没有任何帮助,可以吗再详细一点?我想图像和文本的大小是未知的?谢谢!我喜欢你的解决方案能够提供很好的结果,而且也很容易理解。顶部:46%是对跨度高度的猜测进行硬编码;它不是任意跨度的居中。@svachalek是的,这是一行文本解决方案。多行解决方案更容易理解h更复杂。它对任意图像大小居中。如果跨度和图像已知,它也会起作用。@Sven感谢您的选择。+1这有点复杂,但会导致未知的宽度和高度。我将您的帖子编辑为文本对齐:将p标记居中,更新小提琴并清理代码。
li {
position: relative;
float: left;
overflow: hidden;
}
img {
width: 100%;
height: 100%;
}
span {
background-color: rgba(0, 255, 0, .3);
position: absolute;
text-align:center;
width: 100%;
top:46%;
}
<ul>
<li><span>Lorem Ipsum</span><img src="http://www.placehold.it/300x200" /></li>
</ul>
span.text {
background-color: rgba(0, 255, 0, .3);
position: absolute;
text-align:center;
width: 100%;
top:46%;
}
span.redshade {
background-color: rgba(255, 0, 0, .3);
width: 100%;
height: 100%;
<ul>
<li><span class="redshade"> </span><span class="text">Lorem Ipsum</span><img src="http://www.placehold.it/300x200" /></li>
</ul>
<ul>
<li>
<img src="http://www.placehold.it/300x200" />
<div class="absolute">
<div class="table">
<div class="middle">
<p><span>Lorem Ipsum</span>
</p>
</div>
</div>
</div>
</li>
</ul>
li {
position: relative;
float: left;
overflow: hidden;
}
img {
width: 100%;
}
.absolute, .table, .middle {
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.absolute {
position: absolute;
}
.table {
display: table;
}
.middle {
display: table-cell;
vertical-align: middle;
}
p {
background-color: rgba(255, 0, 0, .3);
}
span {
background-color: rgba(0, 255, 0, .3);
}