CSS水平垂直居中的若干实现方式

时间:2019-05-15 22:17:52   收藏:0   阅读:136

水平居中

水平居中比较简单,这里只简单概述一下:

还有其它一些方法,比如借助绝对定位等,不过更麻烦也不太推荐,所以不讲。

垂直居中

垂直居中主要有8种方法,本文只介绍7种,还有一种个人觉得不伦不类,懒得写了。

完整DEMO演示地址:http://demo.liuxianan.com/2016/11/26-vertical-align-center/

2.1. line-height法

通过设置line-height和height相同来达到文本元素垂直居中的效果。

示例:

.test {
	height: 200px;
	height: 200px;
}

优点:简洁,简单,好记,兼容性好;
缺点:只对文本元素生效,而且文本不能超过单行。

2.2. 绝对居中法

所谓绝对居中就是:

.parent {
	position: relative;
	width: 400px;
	height: 400px;
}
.children {
	position: absolute;
	left: 0;
	top: 0;
	right: 0;
	bottom: 0;
	margin: auto;
	width: 100px;
	height: 100px;
}

优点:

缺点:

2.3. 负外边距法

将设置了绝对定位的子元素水平和垂直偏移50%;然后,在水平和垂直方向分别偏移负自身宽高的一半。

.parent{position:relative}
.children{position: absolute; left: 50%; top: 50%;}
.content{width: 100%; height: 150px;margin-left: -50%; margin-top: -75px;}

优点:

不足:

2.4. 负位移法(推荐)

将设置了绝对定位的子元素水平和垂直偏移50%;然后,通过CSS3 transform属性值将子元素偏移负自身宽高的一半。

.parent{position:relative}
.children{position: absolute;left: 50%;top: 50%;transform:translate(-50%,-50%);}

优点:

缺点:

2.5. 表格法

通过设置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。

优点:

缺点:

2.6. 行内块法

通过增加一个空白元素(如伪元素),并将其高度设置为百分百,然后同时将空白元素和要居中的元素设置vertical-align: middle;即可实现垂直居中。

技术分享图片

.parent{}
.parent:after{content:‘‘;display:inline-block;vertical-align:middle;height:100%;width:0}
.children{display:inline-block;vertical-align:middle}

优点:

缺点:

2.7. flex

使用CSS3新添加的flexbox弹性布局可以非常容易的实现各种居中,如一个、多个子元素的水平/垂直居中、对齐、等高;

.parent{display: flex; align-items: center; justify-content: center;}

优点:

缺点:

原文:https://www.cnblogs.com/ruoyaozhan/p/10872485.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!