首页 > 代码库 > 宽度高度不固定的div如何水平居中与垂直居中(转)

宽度高度不固定的div如何水平居中与垂直居中(转)

宽度高度不固定的div如何水平居中与垂直居中

很多新手在写css的时候经常遇到的一个问题,当div没有固定的宽度或者高度的时候,如何才能让div水平或者垂直居中显示。
如果div有固定宽度的话,用padding,margin都很容易实现。方法有很多种。不过经常遇到这种div没有固定的宽度高度的情况,我们就不能用margin,padding设置固定的距离了。这个问题让很多人头疼。而怎么样才能让这个div居中显示呢?其实这种情况解决的办法也是有很多种,js,css都可以实现。

这里主要介绍一下采用css的方法,有什么问题还请各位看官指出。我在这里写了一个demo演示页面,查看比较详细的解说和演示的话,请移步宽度高度不固定的div,如何水平居中以及垂直居中演示页面


宽度不固定的div如何设置水平居中:

<style type="text/css">
.container{width:500px;height:80px;background:#C2300B;margin-left:50px;padding-top:10px;text-align:center;}
.center{display:inline-block;border:2px solid #fff;}
.center{_display:inline;} /*针对ie6 hack*/
.center a{float:left;border:1px solid #fff;padding:5px 10px;margin:10px;color:#fff;text-decoration:none;}
</style>
<div class="container">
<div class="center"><a href="http://www.mamicode.com/#">1</a><a href="http://www.mamicode.com/#">2</a><a href="http://www.mamicode.com/#">3</a>
<div style="clear:both"></div></div>

无固定宽度的div水平居中代码要点:

这种div宽度不固定的情况,常见于分页处,由于分页不确定有多少页,所以用于分页的元素所在的容器宽度通常不是固定的。
父容器container加css属性 text-align:center;子容器center加css属性display:inline-block;
.center{_display:inline;} 为针对ie6的hack,针对ie6前面的display:inline-block;的作用是在ie下触发元素的layout,使其haslayout。(关于haslayout,此处有涉及)


高度不固定的div如何设置垂直居中

<div id="vc"><div id="vci"><div id="content">
我们垂直居中了,我们水平居中了
</div></div></div>
<style type="text/css">
#vc { display:table; background-color:#C2300B; width:500px; height:200px; overflow:hidden; margin-left:50px; _position:relative; }
#vci { vertical-align:middle; display:table-cell;  _position:absolute; _top:50%; }
#content { color:#fff; border:1px solid #fff;  _position:relative; _top:-50%;  }
</style>

无固定高度的div垂直居中代码要点:

父容器vc的css属性 display:table;overflow:hidden;
子容器vci的css属性 vertical-align:middle;display:table-cell;
针对ie6的hack,vci容器的 _position:absolute;_top:50%; 和content容器的 _position:relative; _top:-50%;
更详细的介绍,下面传送门


 

转自:牛魔王的世界观 » 宽度高度不固定的div如何水平居中与垂直居中