您的位置:首页 > 其它

如何让div水平居中以及垂直居中,在宽高不定的情况下

2014-05-12 09:22 537 查看
宽度高度不固定div的水平居中演示如下:



水平居中代码:

html部分

<div class="container">

<div class="center"><a href="http://gaohaixian.blog.163.com/blog/#">1</a><a href="http://gaohaixian.blog.163.com/blog/#">2</a><a href="http://gaohaixian.blog.163.com/blog/#">3</a>

<div style="clear:both"></div></div>

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;}
代码要点:
父容器container加css属性 text-align:center;
子容器center加css属性display:inline-block;
.center{_display:inline;} 为针对ie6的hack
宽度高度不固定的div垂直居中演示如下:



垂直居中代码:

html部分
<div id="vc"><div id="vci"><div id="content">
我们垂直居中了,我们水平居中了
</div></div></div>
css部分
#vc { display:table; background-color:#C2300B; width:500px; height:200px; overflow:hidden; margin-left:50px; }
#vci { vertical-align:middle; display:table-cell; text-align:center; _position:absolute; _top:50%; _left:50%; }
#content { color:#fff; border:1px solid #fff; display:inline-block; _position:relative; _top:-50%; _left:-50%; }
代码要点:
父容器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%;
如果不需要水平居中的话,需要注释掉vci容器的text-align:center;_left:50%;以及content的display:inline-block;_left:-50%;
宽度高度固定的div垂直居中和水平居中



html部分

<div class="guding"><div class="gd">居中了</div></div>

css部分
.guding{width:500px;height:200px;background:#c2300b;margin-left:50px;position:relative;}
.gd{width:50px;height:20px;background:#fff;position:absolute;top:50%;left:50%;margin-top:-10px;margin-left:-25px;}
代码要点
父容器要用相对定位position:relative;否则的话子元素会相对于浏览器窗口进行绝对定位。
子容器绝对定位,top:50%;left:50%;margin-top,margin-left的值取该容器高度,宽度的一半的负值。
如果相对于浏览器窗口做水平垂直居中的话,比如需要大背景居中,代码如下
<style type="text/css">
body{background:#c12b02;}
.main{background:url(你的背景图片地址) no-repeat;width:1000px;height:800px;position:absolute;margin-top:-400px;margin-left:-500px;}
</style>
<body>
<div class="main"></div>
</body>

如何让不定宽度的UL相对父级DIV居中

http://note.sdo.com/u/donliang/n/sD3Nu~jAGPD9nM03k000r5

ul居中在oprea和firefox中用margin:0 auto;和text-align:center;就可以轻松的实现了,然而在IE中确是居左显示的,具体的错误原因就有待高手去考证。

下面的方法可以轻松的实现ul居中显示,注意ul和li都必须定义float,否则无效哦。相信大家都知道float:left和float:right,那么是否想过float:center呢?让UL居中浮动!
<div id="dondiv"> <ul class="donul"> <li>列表一</li> <li>列表二</li> <li>列表三</li> </ul> </div>

我们希望实现li是浮动的,并且居中的(注:li个数不固定,ul宽度未知)。可以设置ul的text-align:center,再设置li的display,这样的话就可以实现居中,但这样不是我们的初衷,我们需要实现的是float:center。

大家来了解下position:relative,它是依据left,right,top,bottom等属性在正常文档流中偏移位置。那么就可以 让 ul为position:relative;left:50%,然后再让li向左浮动,再让position:relative;right:50%(或 者left:-50%),那么li就像向中间浮动一样居中了。
#dondiv{ position:relative; width:100%; height:80px; background-color:#eee; text-align:center; overflow:hidden; } #dondiv .donul { float:left; position:relative; left:50%; } #dondiv .donul li{ position:relative; right:50%; float:left; margin:10px; padding:0
10px; border:solid 1px #000; line-height:60px; }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: