美文网首页
居中方法

居中方法

作者: foolgry | 来源:发表于2016-11-19 17:33 被阅读0次

    布局中经常会遇到让一个盒子水平且垂直居中的情况,以下总结了几种居中方法:

    1. margin固定宽高居中
    2. 负margin居中
    3. 绝对定位居中
    4. table-cell居中
    5. flex居中
    6. transform居中
    7. 不确定宽高居中(绝对定位百分数)
    8. button居中

    不兼容IE低版本的可以用其他方法hack。

    不多说,直接上代码:
    大多数方法的html都相同,所以写一个了,不同的再单独写出来。

    HTML:

    <body>
        <div id="container">
            <div id="box"></div>
        </div>
    </body>
    
    • margin固定宽高居中

    这种定位方法,纯粹是靠宽高和margin拼出来的,不灵活。

    CSS:

    #container {
        width: 600px;
        height: 500px;
        border: 1px solid #000;
        margin: auto;
    }
    #box {
        width: 200px;
        height: 200px;
        margin: 150px 200px;
        background-color: #0ff;
    }
    

    点击查看demo

    • 负margin居中

    利用负的margin来进行居中,需要知道固定宽高,限制比较大。

    CSS:

    #container {
        position: relative;
        width: 600px;
        height: 500px;
        border: 1px solid #000;
        margin: auto;
    }
    #box {
        position: absolute;
        width: 200px;
        height: 200px;
        left: 50%;
        top: 50%;
        margin: -100px -100px;
        background-color: #0ff;
    }
    

    点击查看demo

    • 绝对定位居中

    利用绝对定位居中,非常常用的一种方法。

    CSS:

    #container {
        position: relative;
        width: 600px;
        height: 500px;
        border: 1px solid #000;
        margin: auto;
    }
    #box {
        position: absolute;
        width: 200px;
        height: 200px;
        left: 0;
        top: 0;
        right: 0;
        bottom: 0;
        margin: auto;
        background-color: #0ff;
    }
    

    点击查看demo

    • table-cell居中

    利用table-cell来控制垂直居中。

    CSS:

    #container {
        display: table-cell;
        width: 600px;
        height: 500px;
        vertical-align: middle;
        border: 1px solid #000;
    }
    #box {
        width: 200px;
        height: 200px;
        margin: 0 auto;
        background-color: #0ff;
    }
    

    点击查看demo

    • flex居中

    CSS3中引入的新布局方式,比较好用。缺点:IE9以及IE9一下不兼容。

    CSS:

    #container {
        display: -webkit-flex;
        display: flex;
        -webkit-align-items: center;
                align-items: center;
        -webkit-justify-content: center;
                justify-content: center;
        width: 600px;
        height: 500px;
        border: 1px solid #000;
        margin: auto;
    }
    #box {
        width: 200px;
        height: 200px;
        background-color: #0ff;
    } 
    

    点击查看demo

    • transform居中

    这种方法灵活运用CSS中transform属性,较为新奇。缺点是IE9下不兼容。

    CSS:

    #container {
        position: relative;
        width: 600px;
        height: 600px;
        border: 1px solid #000;
        margin: auto;
    }
    #box {
        position: relative;
        top: 50%;
        left: 50%;
        width: 200px;
        height: 200px;
        transform: translate(-50%, -50%);
        -webkit-transform: translate(-50%, -50%);
        -ms-transform: translate(-50%, -50%);
        -moz-transform: translate(-50%, -50%);
        background-color: #0ff;
    }
    

    点击查看demo

    • 不确定宽高居中(绝对定位百分数)

    这种不确定宽高的居中,较为灵活。只需要保证left和right的百分数一样就可以实现水平居中,保证top和bottom的百分数一样就可以实现垂直居中。

    CSS:

     #container {
        position: relative;
        width: 600px;
        height: 500px;
        border: 1px solid #000;
        margin: auto;
    }
    #box {
        position: absolute;
        left: 30%;
        right: 30%;
        top: 25%;
        bottom: 25%;
        background-color: #0ff;
    }
    

    点击查看demo

    • button居中

    利用button做外容器,里边的块元素会自动垂直居中,只需要控制一下水平居中就可以达到效果。

    HTML:

    <button>
        <div></div>
    </button>
    

    CSS:

    button {
        width: 600px;
        height: 500px;
        border: 1px solid #000;
    }
    div {
        width: 200px;
        height: 200px;
        margin: 0 auto;
        background-color: #0ff;
    }
    

    点击查看demo

    相关文章

      网友评论

          本文标题:居中方法

          本文链接:https://www.haomeiwen.com/subject/likepttx.html