水平居中比较简单,这里只简单概述一下:
text-align:center;
即可搞定;margin: 0 auto;
也可以搞定;还有其它一些方法,比如借助绝对定位等,不过更麻烦也不太推荐,所以不讲。
垂直居中主要有8种方法,本文只介绍7种,还有一种个人觉得不伦不类,懒得写了。
完整DEMO演示地址:http://demo.liuxianan.com/2016/11/26-vertical-align-center/
通过设置line-height和height相同来达到文本元素垂直居中的效果。
示例:
.test {
height: 200px;
height: 200px;
}
优点:简洁,简单,好记,兼容性好;
缺点:只对文本元素生效,而且文本不能超过单行。
所谓绝对居中就是:
.parent {
position: relative;
width: 400px;
height: 400px;
}
.children {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
width: 100px;
height: 100px;
}
优点:
缺点:
将设置了绝对定位的子元素水平和垂直偏移50%;然后,在水平和垂直方向分别偏移负自身宽高的一半。
.parent{position:relative}
.children{position: absolute; left: 50%; top: 50%;}
.content{width: 100%; height: 150px;margin-left: -50%; margin-top: -75px;}
优点:
不足:
box-sizing:border-box
,因为偏移值是依据content+padding值来确定.将设置了绝对定位的子元素水平和垂直偏移50%;然后,通过CSS3 transform
属性值将子元素偏移负自身宽高的一半。
.parent{position:relative}
.children{position: absolute;left: 50%;top: 50%;transform:translate(-50%,-50%);}
优点:
缺点:
通过设置display:table/table-cell
相关属性,模拟表格布局。注意,将元素设置为display:table-cell;
后并不是说这个元素就可以垂直居中了,而是它的子元素相对于它垂直居中,所以使用table-cell
方式垂直居中的话还需要一个额外的标签。
<style type="text/css">
.parent {
display:table;
width: 700px;
height: 400px;
background: #3BB7FF;
*position: relative; /*IE hake*/
}
.children {
display:table-cell;
vertical-align:middle;
*position: absolute;
*top:50%; /*IE hake*/
}
.content {
width:300px;
margin:0 auto;
background: #00FD2A;
*position: relative;
*top:-50%; /*IE hake*/
}
</style>
<div class="parent">
<div class="children">
<div class="content">
表格法兼容性好,支持IE6+,支持动态高度,表格法兼容性好,支持IE6+,支持动态高度,表格法兼容性好,支持IE6+,支持动态高度,表格法兼容性好,支持IE6+,支持动态高度表格法兼容性好,支持IE6+,支持动态高度。
</div>
</div>
</div>
注意
.children
不要设置了height:100%;
,否则不兼容IE7。
优点:
缺点:
通过增加一个空白元素(如伪元素),并将其高度设置为百分百,然后同时将空白元素和要居中的元素设置vertical-align: middle;
即可实现垂直居中。
.parent{}
.parent:after{content:‘‘;display:inline-block;vertical-align:middle;height:100%;width:0}
.children{display:inline-block;vertical-align:middle}
优点:
缺点:
使用CSS3新添加的flexbox
弹性布局可以非常容易的实现各种居中,如一个、多个子元素的水平/垂直居中、对齐、等高;
.parent{display: flex; align-items: center; justify-content: center;}
优点:
缺点:
原文:https://www.cnblogs.com/ruoyaozhan/p/10872485.html