我有一个绝对定位的元素,里面有内容。它可以是<h1>
或少量<p>
标记。所以我不知道内容的高度。
如何在绝对定位的div
内将内容垂直居中?
HTML:
<div id="absolute">
<div class="centerd">
<h1>helo</h1>
<span>hi again</span>
</div>
</div>
CSS:
#absolute {
position:absolute;
top:10px;
left:10px;
width:50%;
height:50%;
background:yellow;
}
.centerd {
display:table-cell;
vertical-align:middle;
}
答案 0 :(得分:12)
如果您向display:table
div添加#absolute
,您应该得到您想要的内容:
答案 1 :(得分:10)
水平和垂直位置绝对中间。
function fetch(){
return new Promise((resolve,reject)=>{
let http = new XMLHttpRequest()
http.onreadystatechange = function(){
if(http.readyState == 4 && http.status == 200){
resolve('this is line 1\nthis is line 2') // suppose this is your response from server
}
}
http.open('GET','sample.txt',true)
http.send()
})
}
fetch()
.then(data=>data.split('\n'))
.then(delay())
.then(delay())
function delay(){
return function(data){
return new Promise(resolve=>{
setTimeout(()=>{console.log(data[0]);data.shift();resolve(data)},2000)
})
}
}
&#13;
.center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50% , -50%);
-webkit-transform: translate(-50%, -50%);
}
&#13;
答案 2 :(得分:6)
将您的#absolute
div更改为也使用:
display:table;
vertical-align:middle;
text-align:center;
答案 3 :(得分:4)
这也可以通过flexbox完成:
#absolute {
align-items: center;
display: flex;
justify-content: center;
}
答案 4 :(得分:2)
只需将div relative
设为其absolute
父级并使用text-align: center
,如下所示:
.centerd {
position: relative;
width: 100%;
text-align: center;
/*display:table-cell;
vertical-align:middle;*/
}
答案 5 :(得分:1)
使用text-align:center或left:50%