求总结下css中让单行,多行文字,图片,<div></div>,<div><div></div></div>里的div垂直居中的方法

div有两种情况,知道和不知道宽高,要兼容ie6

一行文字垂直居中:利用line-height来设置

多行文字垂直居中:利用display:table-cell来设置。

代码以及效果:

图片垂直居中:使用绝对定位和transform

代码以及效果:

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8" />
<title></title>
<style>
#box {
width: 300px;
height: 300px;
background: #ddd;
position: relative;
}

#child {
background: #93BC49;
position: absolute;
top: 50%;
transform: translate(0, -50%);
}
</style>
</head>

<body>

<div id="child">
<img alt="" src="img/u=2639088341,2223755776&fm=27&gp=0.jpg" style="display: inline-block; vertical-align: middle;" />
</div>
</body>

</html>

<div></div>垂直居中:

代码与效果:

<head>
<meta charset="utf-8" />
<title></title>
<style>
.zz {
position: absolute;
top: 50%;
width: 200px;
height: 100px;
margin-top: -50px;
}
</style>
</head>

<body>

<div class="zz">
<span>测试垂直居中</span>
</div>
</body>

<div><div></div></div>里的div垂直居中:

代码与效果:

<head>
<meta charset="utf-8" />
<title></title>
<style>
.root-div{
/*注意,外容器需要指定一个height:*/
height: 700px;
}
.children-div{
position: relative;
top: 50%;
-webkit-transform: translateY(-50%);
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
</style>
</head>

<body>

<div class="root-div">
<div class="children-div">Hello</div>
</div>
</body>

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-02
1.绝对定位和负边距
.box3{position:relative;}
.box3 span{
position: absolute;
width:100px;
height: 50px;
top:50%;
left:50%;
margin-left:-50px;
margin-top:-25px;
text-align: center;
}

2.CSS表格显示
.box1{
display: table-cell;
vertical-align: middle;
text-align: center;
}

3.绝对定位和0
.box4 span{
width: 50%;
height: 50%;
background: #000;
overflow: auto;
margin: auto;
position: absolute;
top: 0; left: 0; bottom: 0; right: 0;
}

4.ie6实测能用,再老式就不行了
.box2{
display: flex;
justify-content:center;
align-items:Center; }

代码转自博客园----彼岸花在开
相似回答