关于html水平垂直居中的一些总结吧?

html水平垂直居中

最近遇到很多居中的问题,就花点时间总结了一下放在这里,以后找也方便,0.0~~

1.居中文本

1 <div class="wrap">
2       我在中间……
3 </div>

1.1. height+line-height+text-center(只能居中单行)

1 .wrap{
2     width:200px; 
3     height:200px;
4     border:1px solid red; 
5     text-align: center;
6     line-height: 200px;
7 }
ps:text-align:center只是将元素下面的内联元素居中显示

1.2display:table-cell(多行固定高度居中)

1 .wrap{
2     width:200px; 
3     height:200px;
4     border:1px solid red; 
5     text-align: center; 
6     display:table-cell; 
7     vertical-align: middle;
8 }
display:table-cell:ie67不管用,最好配合display:table;一起用
ie67下:(以后也不用了,不过也放这儿吧)
方法一:(通过em标签高度与父级等高,所以span和em居中就相当于span在父级居中)
1 <div class="wrap">
2    <span>
3        我在中间…… 我在中间…… 我在中间…… 我在中间……
4    </span>
5    <em></em>
6 </div>
 1 .wrap{
 2     width:200px; 
 3     height:200px;
 4     border:1px solid red; 
 5     text-align: center;
 6 }
 7 .wrap span{
 8     vertical-align: middle;
 9     display:inline-block; 
10     width:180px;
11 }
12 .wrap em{
13     height:100%;
14     vertical-align: middle; 
15     display:inline-block;
16 }
方法二:(通过给子元素增加一个绝对定位的父级标签,再配合子元素的相对定位水平垂直居中)
1 <div class="wrap">
2     <span class="span1">
3        <span class="span2">我在中间…… 我在中间…… 我在中间…… 我在中间……</span>
4     </span>
5 </div>
 1 .wrap{
 2     width:200px; 
 3     height:200px;
 4     border:1px solid red;
 5     display:table;
 6     position:relative; 
 7     overflow: hidden;
 8 }
 9 .wrap .span1{
10     display:table-cell; 
11     vertical-align: middle; 
12     text-align: center;
13     *position:absolute;
14     top:50%;
15     left:50%;
16 }
17 .wrap .span2{
18     *position:relative;
19     top:-50%;
20     left:-50%;
21 }

1.3padding(内填充,不用多说)

1 .wrap{
2     width:200px;
3     border:1px solid red;
4     padding:50px 0;
5 }

2.居中元素

1 <div class="wrap">
2     <span></span>
3 </div>

2.1position:absolute+margin负值(必须要有宽高,才能计算margin)

 1 .wrap{
 2     width:200px; 
 3     height:200px;
 4     position:absolute; 
 5     top:50%; 
 6     left:50%; 
 7     margin-top:-101px; 
 8     margin-left:-101px;
 9     border:1px solid red;
10 }
11 .wrap span{ 
12     width:80px; 
13     height:80px; 
14     background:red;
15     position: absolute; 
16     top:50%; 
17     left:50%; 
18     margin-top:-40px; 
19     margin-left:-40px;
20 }
ps:position:absolute/fixed使内嵌支持宽高

2.2Position:absolute+margin:auto

 1 .wrap{
 2     width:200px; 
 3     height:200px;
 4     position:absolute; 
 5     top:50%; 
 6     left:50%; 
 7     margin-top:-101px; 
 8     margin-left:-101px;
 9     border:1px solid red;
10 }
11 .wrap span{ 
12     width:80px; 
13     height:80px; 
14     background:red;
15     position: absolute; 
16     top:0;
17     right:0;
18     bottom:0;
19     left:0;
20     margin:auto;
21 }

2.3position负值

1 <div class="wrap">
2     <span class="span1">
3        <span class="span2">fds</span>
4     </span>
5 </div>
 1 .wrap{
 2     width:200px; 
 3     height:200px;
 4     position:absolute; 
 5     top:50%; 
 6     left:50%; 
 7     margin-top:-101px; 
 8     margin-left:-101px;
 9     border:1px solid red; 
10 }
11 .wrap .span1{
12     position:absolute;
13     top:50%;
14     left:50%;
15     width:80px;
16     height:80px;
17 }
18 .wrap .span2{ 
19     width:80px;
20     height:80px;
21     display:block;
22     line-height:80px;
23     text-align:center;
24     background:red; 
25     position:relative;
26     top:-50%;
27     left:-50%;
28 }

2.4transform: translate(-50%,-50%);(translate相对于自己偏移,不考虑兼容性的情况下,这个方法很好)

1 <div class="wrap">
2        <span >fds</span>
3 </div>
 1 .wrap{
 2     width:200px; 
 3     height:200px;
 4     position:absolute; 
 5     top:50%; 
 6     left:50%; 
 7     margin-top:-101px; 
 8     margin-left:-101px;
 9     border:1px solid red;
10 }
11 .wrap span{     
12     width:80px;
13     height:80px;
14     background:red;
15     position:absolute;
16     top:50%;left:50%;
17     -webkit-transform: translate(-50%,-50%);
18     -ms-transform: translate(-50%,-50%);
19     -o-transform: translate(-50%,-50%);
20     transform: translate(-50%,-50%);
21 } 

2.5并行一个标签

1 <div class="wrap">
2    <span></span>
3    <em></em>
4 </div>
 1 .wrap{
 2     width:200px; 
 3     height:200px;
 4     position:absolute; 
 5     top:50%; 
 6     left:50%; 
 7     margin-top:-101px; 
 8     margin-left:-101px;
 9     border:1px solid red; 
10     text-align: center;
11 }
12 .wrap span{
13     width:80px;
14     height:80px;
15     background:red;
16     display:inline-block; 
17     vertical-align: middle;
18 } 
19 .wrap em{
20     height:100%;
21     vertical-align:middle; 
22     display:inline-block;
23 }

2.6display:table和display:table-cell

1 <div class="wrap">
2     <div>
3         <span></span>
4     </div>
5 </div>
 1 .wrap{
 2     width:200px; 
 3     height:200px;
 4     position:absolute; 
 5     top:50%; 
 6     left:50%; 
 7     margin-top:-101px; 
 8     margin-left:-101px;
 9     border:1px solid red; 
10     display:table;
11 }
12 .wrap div{
13     display:table-cell;
14     vertical-align: middle;
15     text-align: center;
16 }
17 .wrap span{ 
18     width:80px;
19     height:80px;
20     background:red; 
21     display:inline-block;
22 } 

2.7display:box

1 <div class="wrap">
2     <span >fds</span>
3 </div>
 1 .wrap{
 2     width:200px; 
 3     height:200px;
 4     position:absolute; 
 5     top:50%; 
 6     left:50%; 
 7     margin-top:-101px; 
 8     margin-left:-101px;
 9     border:1px solid red; 
10     display: -webkit-box;
11     -webkit-box-pack:center;
12     -webkit-box-align:center;
13 }
14 .wrap span{
15     width:80px;
16     height:80px;
17     background:red;
18     display:block;
19 }

3.居中浮动元素

1 <div class="wrap">
2      <ul>
3          <li>fdasfd</li>
4          <li>fdsfds</li>
5          <li>fdfds</li>
6      </ul>
7 </div>
 1 .wrap{
 2     width:800px; 
 3     height:200px;
 4     margin:200px auto;
 5     border:1px solid red; 
 6     position:relative;
 7     overflow: hidden;
 8 }
 9 .wrap ul{
10     float: left; 
11     position: relative; 
12     left:50%;
13     top:50%; 
14     border:1px solid red; 
15     height:100px; 
16 }
17 .wrap li{
18     float: left; 
19     width:100px; 
20     height:100px; 
21     background:red; 
22     position: relative; 
23     left:-50%;
24     top:-50%; 
25     margin-left:10px; 
26     list-style: none; 
27     _display:inline; /*ie6双边距*/
28     *overflow: hidden;/*ie7下面不支持宽度*/
29 }