首页 > 代码库 > 元素居中css
元素居中css
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>垂直</title>
<style type="text/css">
#content {
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
margin:auto;
height:240px;
width:70%;
background-color:#ccc;
}
/*方法1 ie8以下不兼容
.main{ width:1000px; margin:0 auto; }
.layout{ position:relative; float:left; width:500px; border:1px solid #f00; height:aoto; }
.layout .box{ position:absolute;
top:0;
bottom:0;
left:0;
right:0;
margin:auto;
width:100px;
height:240px; background:#000;}*/
/*方法2,自适应宽度和高度,兼容所有浏览器*/
div.layout1{ position:relative; float:left; left:50%; }
div.box1{ position:relative; float:left; right:50%; border:1px solid #f00; }
</style>
</head>
<body>
<!-- 一、单行内容的居中 line-height
优点:
1. 同时支持块级和内联极元素
2. 支持所有浏览器
缺点:
1. 只能显示一行
2. IE中不支持<img>等的居中
要注意的是:
1. 使用相对高度定义你的 height 和 line-height
2. 不想毁了你的布局的话,overflow: hidden 一定要
二、多行内容居中,且容器高度可变 padding-top padding-bottom
优点:
1. 同时支持块级和内联极元素
2. 支持非文本内容
3. 支持所有浏览器
缺点:
容器不能固定高度
三、把容器当作表格单元 display:table; >display:teble-cell;
CSS 提供一系列diplay属性值,包括 display: table, display: table-row, display: table-cell 等,能把元素当作表格单元来显示。这是再加上 vertical-align: middle, 就和表格中的 valign="center" 一样了。
要注意的是:和一个合法的<td>元素必须在<table>里一样,display: table-cell 元素必须作为 display: table 的元素的子孙出现。
优点:
不用说了吧,就是表格,效果和表格一模一样
缺点:
IE下无效
四、这种方法,在 content 元素外插入一个 div。设置此 div height:50%; margin-bottom:-contentheight;。
content 清除浮动,并显示在中间。
<div id="floater"></div>
<div id="content">
Content here
</div>
#floater {float:left; height:50%; margin-bottom:-120px;}
#content {clear:both; height:240px; position:relative;}
优点:
适用于所有浏览器
没有足够空间时(例如:窗口缩小) content 不会被截断,滚动条出现
缺点:
唯一我能想到的就是需要额外的空元素了(也没那么糟,又是另外一个话题)
五、这个方法使用了一个 position:absolute,有固定宽度和高度的 div。这个 div 被设置为 top:0; bottom:0;。但是因为它有固定高度,其实并不能和上下都间距为 0,因此 margin:auto; 会使它居中。使用 margin:auto;使块级元素垂直居中是很简单的。
#content {
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
margin:auto;
height:240px;
width:70%;
}
优点:
简单
缺点:
IE(IE8 beta)中无效
无足够空间时,content 被截断,但是不会有滚动条出现
///
这个方法使用绝对定位的 div,把它的 top 设置为 50%,top margin 设置为负的 content 高度。这意味着对象必须在 CSS 中指定固定的高度。
因为有固定高度,或许你想给 content 指定 overflow:auto,这样如果 content 太多的话,就会出现滚动条,以免content 溢出。
<div>
Content goes here</div>
#content {
position:absolute;
top:50%;
height:240px;
margin-top:-120px; /* negative half of the height */
}
优点:
适用于所有浏览器
不需要嵌套标签
缺点:
没有足够空间时,content 会消失(类似div 在 body 内,当用户缩小浏览器窗口,滚动条不出现的情况)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>center</title>
<style type="text/css">
.p{ position:relative; float:left; left:50%; }
.c{ position:relative; float:left; right:50%; border:1px solid #f00; }
.p1{ position:relative; width:800px; height:600px; border:1px solid #f00;}
.c1{ position:absolute; width:500px; height:300px; top:50%; left:50%; margin:-150px 0 0 -250px; background:#000;}
</style>
</head>
<body>
<div>
<div>cccccccc</div>
</div>
<div>
<div>c1c1c1c1c1c1</div>
</div>
</body>
</html>
-->
<div class="">
<div id="content">center</div>
</div>
<div>
<div class="layout layout1">
<div class="box box1">
<img src=http://www.mamicode.com/"xx.jpg" alt="" />
<p>box</p>
<p>box</p>
<p>box</p>
<p>box</p>
</div>
</div>
</div>
</body>
</html>