多种方法实现水平居中和垂直居中
一、水平居中(包含块中居中)
- 对于行内元素,在父级块级元素css属性中使用 text-align:center即可。
- 对于width固定的块级元素,使用margin:20px auto; / margin-left 与 margin-right 设置为
auto* - 对于width不固定的块级元素:
1、使用table标签
第一步:为需要设置的居中的元素外面加入一个 table 标签 ( 包括 、、 )。
第二步:为这个 table 设置“左右 margin 居中”(这个和定宽块状元素的方法一样)。
第三步:把需要水平居中的元素放到table标签中的td标签中。
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>不定宽块状元素水平居中</title>
<style>
table{
margin:20px auto;
}
/*下面是任务区代码*/
.wrap{
background:#ccc;
}
</style>
</head>
<body>
<table><tbody>
<tr><td>
<p>设置我所在的div容器水平居中 </p>
</td></tr>
</tbody>
</table>
</body>
</html>
2、改变块级元素的 display 为 inline 类型(设置为 行内元素 显示),然后使用 text-align:center 来实现居中效果
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>不定宽块状元素水平居中</title>
<style>
.container{text-align:center;}
.container div{margin:0;padding:0;display:inline;}
</style>
</head>
<body>
<div class="container">
<div>
<span><a href="#">1</a></span>
<span><a href="#">2</a></span>
<span><a href="#">3</a></span>
</div>
</div>
</body>
</html>
3、通过给父元素设置 float,然后给父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left: -50% 来实现水平居中
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>不定宽块状元素水平居中</title>
<style>
.container{
float:left;
position:relative;
left:50%;
}
.container ul{
/* margin:0;
padding:0;*/
position:relative;
left:-50%;
}
.container li{display:inline;}
</style>
</head>
<body>
<div class="container">
<ul>
<li><a href="#">11111111111</a></li>
<li><a href="#">22222222222</a></li>
<li><a href="#">33333333333</a></li>
</ul>
</div>
</body>
</html>
垂直居中
1、父元素高度确定的单行文本 的竖直居中的方法是通过设置父元素的 height 和 line-height 高度一致来实现的。
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>垂直居中</title>
<style>
.wrap{
display:inline;
text-align:center;
}
.wrap h2{
height:100px;
line-height:100px;
background:#ccc;
}
</style>
</head>
<body>
<!--下面是代码任务部分-->
<div class="wrap">
<h2>hi,imooc!</h2>
</div>
</body>
</html>
2、父元素高度确定的多行文本:
使用插入 table (包括tbody、tr、td)标签,可以把要垂直居中的div放到table的td中。
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>父元素高度确定的多行文本</title>
<style>
table{margin:20px auto;}
</style>
</head>
<body>
<table><tbody>
<tr><td>
<div>
<p>看我是否可以居中。</p>
<p>看我是否可以居中。</p>
<p>看我是否可以居中。</p>
<p>看我是否可以居中。</p>
<p>看我是否可以居中。</p>
</div>
</td></tr>
</tbody></table>
</body>
</html>