如何实现div的上下左右都居中?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现div的上下左右都居中?相关的知识,希望对你有一定的参考价值。

把 绿色那个div 上下页居中

参考技术A 通常我们用到的css布局都是左右居中,经典css写法如下:
body
margin:0;
padding:0;
width:100%;
height:100%;

div
margin:0
auto;
width:500px;
height:auto;

body
margin:0;
padding:0;
width:100%;
height:100%;

div
margin:0
auto;
width:500px;
height:auto;

上面是经典的左右居中的css写法,那么像登录框那些比较小得div块只是左右居中是否不是太美观,如果上下左右都居中这是
大多数网站的做法,下面是一个比较经典的div上下左右居中的css写法:
body
margin:0;
padding:0;
width:100%;
height:100%;

div
position:absolute;
top:50%;
left:50%;
margin-top:-250px;
margin-left:-250px;
/*此时宽和高都要固定*/
width:500px;
height:500px;

body
margin:0;
padding:0;
width:100%;
height:100%;

div
position:absolute;
top:50%;
left:50%;
margin-top:-250px;
margin-left:-250px;
/*此时宽和高都要固定*/
width:500px;
height:500px;

上面的margin可以合并:margin:-250px
0
0
-250px;
大概原理就是:布局需用position,绝对布局absolute还是相对布局relative得看父容器,top,left相对于顶部和左部都相距整个容器的50%,然后在利用margin,向上回退div高的50%即:margin-top:-250px
向左回退div宽的50%即:margin-left:-250px

CSS实现DIV水平居中和上下垂直居中

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>上下垂直居中 在线演示 DIVCSS5</title>
<style>
#main 
	position: absolute;
	width:400px;
	height:200px;
	left:50%;
	top:50%;
	margin-left:-200px;
	margin-top:-100px;
	border:1px solid #00F

/*css注释:为了方便截图,对CSS代码进行换行*/
</style>
</head>
<body>
	<div id="main">DIV水平居中和上下垂直居中<a href="http://www.divcss5.com/">DIVCSS5</a></div>
</body>
</html>
水平垂直居中原理介绍
这里使用了绝对定位position:absolute,使用left和top设置对象距离上和左为50%,但如果设置50%,实际上盒子是没有实现居中效果,所以又设置margin-left:-200px;margin-top:-100px;,这里有个技巧是,margin-left的值是宽度一半,margin-top的值也是对象高度一半,同时设置为负,这样就实现了水平和垂直居中。

以上是关于如何实现div的上下左右都居中?的主要内容,如果未能解决你的问题,请参考以下文章

Div 与 CSS 如何实现上下居中

如何实现单行与多行文字的居中

如何让div(div等宽不等高)实现如下布局,求大神指导?

如何将一个设置为absolute的div居中对齐

web前端技巧-文本如何垂直居中?多行文本如何实现上下居中?

常见的div盒子居中(上下左右)实现