css實(shí)現(xiàn)垂直居中的方法:1、使用“l(fā)ine-height”屬性使文字垂直居中,只需要在css中添加“l(fā)ine-height:300px;”樣式來(lái)實(shí)現(xiàn),其中300px表示寬度和行高相同。2、使用絕對(duì)定位“position: relative;”和負(fù)外邊距“margin: -50px 0 0 0;”對(duì)塊級(jí)元素進(jìn)行垂直居中;3、使用絕對(duì)定位屬性和“transform”的“translate”屬性將元素的中心和父容器的中心重合實(shí)現(xiàn)垂直居中;4、使用flex布局(彈性布局)實(shí)現(xiàn)垂直居中即可。
具體內(nèi)容如下:
1、line-height 使文字垂直居中
<!DOCTYPE html><html>
<head>
<meta charset="UTF-8">
<title>css 垂直居中</title>
<style>
.box{
width: 300px;
height: 300px;
background: #21B4BB;
color: #FFF;
line-height:300px;
}
</style>
</head>
<body>
<div class="box">css 垂直居中了--文本文字</div>
</body>
</html>
效果圖:
這樣就能讓div中的文字水平垂直居中了
2、使用絕對(duì)定位和負(fù)外邊距對(duì)塊級(jí)元素進(jìn)行垂直居中 (已知元素的高度)
如果我們知道元素的高度,可以這樣來(lái)實(shí)現(xiàn)垂直居中:
<!DOCTYPE html><html>
<head>
<meta charset="UTF-8">
<title>css 垂直居中</title>
<style>
.box{
width: 300px;
height: 300px;
background: #ddd;
position: relative;
}
.child{
width: 150px;
height: 100px;
background: orange;
position: absolute;
top: 50%;
margin: -50px 0 0 0;
line-height: 100px;
}
</style>
</head>
<body>
<div class="box">
<div class="child">css 垂直居中</div>
</div>
</body>
</html>
效果圖:
這個(gè)方法兼容性不錯(cuò),但是有一個(gè)小缺點(diǎn):必須提前知道被居中塊級(jí)元素的尺寸,否則無(wú)法準(zhǔn)確實(shí)現(xiàn)垂直居中。
3、使用絕對(duì)定位和transform進(jìn)行垂直居中(未知元素高度
如果我們不知道元素的高度,那么就需要先將元素定位到容器的中心位置,然后使用 transform 的 translate 屬性,將元素的中心和父容器的中心重合,從而實(shí)現(xiàn)垂直居中:
<!DOCTYPE html><html>
<head>
<meta charset="UTF-8">
<title>css 垂直居中</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 class="box">
<div class="child">css 垂直居中,css 垂直居中,css 垂直居中,css 垂直居中,css 垂直居中</div>
</div>
</body>
</html>
效果圖:
這種方法有一個(gè)非常明顯的好處就是不必提前知道被居中元素的尺寸了,因?yàn)閠ransform中translate偏移的百分比就是相對(duì)于元素自身的尺寸而言的。
4. 使用flex布局
1)、使文字垂直居中
<!DOCTYPE html><html>
<head>
<meta charset="UTF-8">
<title>css 垂直居中</title>
<style>
.box{
width: 300px;
height: 200px;
background: #21B4BB;
color: #FFF;
/*設(shè)置為伸縮容器*/
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
/*垂直居中*/
-webkit-box-align: center;/*舊版本*/
-moz-box-align: center;/*舊版本*/
-ms-flex-align: center;/*混合版本*/
-webkit-align-items: center;/*新版本*/
align-items: center;/*新版本*/
}
</style>
</head>
<body>
<div class="box">css 垂直居中--文本文字(彈性布局)</div>
</body>
</html>
效果圖:
2)、使塊級(jí)元素(div)垂直居中
<!DOCTYPE html><html>
<head>
<meta charset="UTF-8">
<title>css 垂直居中</title>
<style>
.box{
width: 300px;
height: 300px;
background: #ddd;
display: flex;
flex-direction: column;
justify-content: center;
}
.child{
width: 300px;
height: 100px;
background: #08BC67;
line-height: 100px;
}
</style>
</head>
<body>
<div class="box">
<div class="child">css 垂直居中了--彈性布局</div>
</div>
</body>
</html>
效果圖: