方法1:父级元素不定高,设置父及元素display:table;子元素设置display:table-cell;vertical-align:center。
方法2:父级元素定高,设置子元素为display:inline-block;vertical-align:center;模拟单行元素的垂直居中。
方法3:flex布局,有兼容性,ie9一下不支持
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.bg_box {
width: 300px;
height: 300px;
margin-top: 20px;
background-color: #BBBBBB;
border-radius: 100%;
}
/*方法一*/
.span_box {
display: table;
}
.words_span {
display: table-cell;
vertical-align: middle;
}
.bg_box {
width: 300px;
height: 300px;
margin-top: 20px;
background-color: #BBBBBB;
}
/*方法二*/
.p_box {
line-height: 300px;
}
.words_p {
display: inline-block;
line-height: 20px;
/*单独给子元素设置行高,覆盖父级元素的行高*/
vertical-align: middle;
/*基线居中对齐*/
}
/*方法三*/
.box{display:flex;display:-ms-flexbox;width:200px;height:200px;border:1px dotted #ccc;justify-content:center;align-items:center;}
.box span{display:inline-block;width:100%;padding:5px;}
</style>
</head>
<body>
<div class="span_box bg_box">
<span class="words_span">
方法一:高度不固定,父元素使用display:table和子元素使用display:table-cell属性来模拟表格,子元素设置vertical-align:middle即可垂直居中
</span>
</div>
<div class="p_box bg_box">
<p class="words_p">
方法二:高度固定,对子元素设置display:inline-block属性,使其转化成行内块元素,模拟成单行文本。父元素设置对应的height和line-height。对子元素设置vertical-align:middle属性,使其基线对齐。添加line-height属性,覆盖继承自父元素的行高。缺点:文本的高度不能超过外部盒子的高度。
</p>
</div>
<div class="box">
<span>方法三:使用flex布局实现多行文字垂直居中,不兼容ie9及一下浏览器</span>
</div>
</body>
</html>
网友评论