元素水平居中的方法

<!-- (1)对于行内元素或具有inline-block属性的元素居中,比如span,img等可以使用text-align:center来实现 -->
.box1{
             200px;
            border: 1px solid #000;
            text-align:center;
        }

.son1{
            100px;
            background-color:#ddd;
        }
<div class="box1">
        <span class="son1">我是span元素</span>
    </div>
 <!-- (2)使用margin:0 auto
                使用margin:auto的方式与第一种不同的是,这种css属性作用域元素本身,
                且必须给元素设定了宽度和具有display:block的块级元素
    -->
.box2{
             200px;
            border: 1px solid #000;
        }
        .son2{
             150px;
            background-color:#ddd;
            display:block;
            margin:0 auto;
        }
<div class="box2">
        <span class="son2">我是span元素</span>
    </div>
<!-- (3)定位居中 :这种方式的好处是行内元素和块级元素都适用,但是需要知道元素本身的宽度 -->
.box3{
             200px;
            height:200px;
            border: 1px solid #000;
            position:relative;
        }
        .son3{
             150px;
            height: 50px;
            background-color:#ddd;
            position:absolute;
            left:25px;
            top:75px;
        }
<div class="box3">
        <span class="son3">我是span元素</span>
    </div>
<!-- (4)margin:auto与定位组合使用:这种方式的好处是行内元素和块级元素都适用,但是需要知道元素本身的宽度 -->
.box4{
             200px;
            height:200px;
            border: 1px solid #000;
            position:relative;
        }
        .son4{
             150px;
            height: 50px;
            background-color:#ddd;
            position:absolute;
            margin:auto;
            left:0;
            right:0;
            top:0;
            bottom:0;
        }
 <div class="box4">
        <span class="son4">我是span元素</span>
    </div>
<!-- (5)负margin 和定位组合使用:这种方式的好处是行内元素和块级元素都适用,但是需要知道元素本身的宽度  -->
.box5{
             200px;
            height:200px;
            border: 1px solid #000;
            position:relative;
        }

        .son5{
            150px;
            height:50px;
            background-color:#ddd;
            position:absolute;
            left:50%;
            top:50%;
            margin:-25px 0 0 -75px;
        }
<div class="box5">
        <span class="son5">我是span元素</span>
    </div>
 
 
 
<!-- (7)translate 和定位组合使用: -->
.box7{
             200px;
            height:200px;
            border: 1px solid #000;
            position:relative;
        }
        .son7{
             150px;
            height: 50px;
            background-color:#ddd;
            position:absolute;
            left:50%;
            top:50%;
            -webkit-transform: translate(-50%,-50%);
               -moz-transform: translate(-50%,-50%);
                -ms-transform: translate(-50%,-50%);
                 -o-transform: translate(-50%,-50%);
                    transform: translate(-50%,-50%);
        }
<div class="box7">
        <span class="son7">我是span7元素</span>
    </div>
<!-- (8)使用flex居中:使用flex居中不需要知道元素本身的宽高及元素的属性 -->
 .box8{
             200px;
            height:200px;
            border: 1px solid #000;
            display:-webkit-box;
            display: -moz-box;
            display: -ms-flexbox;
            display: -webkit-flex;
            display:flex;
            justify-content:center;
            align-items:center;
        }
        .box8>span{
            background-color:#ddd;
        }
<div class="box8">
        <span>我是span8元素</span>
    </div>
<!-- (9)使用table-cell居中:需要添加额外的元素作为外部容器 -->
.box9{
             200px;
            height:200px;
            border: 1px solid #000;
            display:table;
        }
        .center-core{
            display:table-cell;
            text-align:center;
            vertical-align:middle;
        }
<div class="box9">
        <div class="center-core">
            <span>我是span9元素</span>
        </div>
    </div>
原文地址:https://www.cnblogs.com/zhuMother/p/12205452.html