美文网首页让前端飞
CSS display: table-cell 用于水平垂直居中

CSS display: table-cell 用于水平垂直居中

作者: 安琪拉D夏亚 | 来源:发表于2019-01-15 10:06 被阅读4次

    CSS display: table-cell 用于水平垂直居中

    在 CSS 设置居中时候,水平和垂直居中的设置略有不同,通常我们使用 text-align:center 对图片、文字等行内元素(inline / inline-block)进行水平居中,并使用 line-height 对单行文字设置垂直居中(仅适用于单行文字)。但是,如果使用表格,则可以通过 td(单元格元素)的 align="center"valign="middle" 属性设置单元格内容的水平和垂直居中。 而对于那些不是表格的元素,可以通过 display: table-cell 将其模拟成一个表格单元格 td,这样就可以通过 CSS 的vertical-align: middle; /* 垂直居中*/text-align: center; /* 水平居中*/ 属性进行设置。

    display 值及其作用

    display 值 模拟 对应标签
    table 块元素级的表格 <table>
    inline-table 内联元素级的表格 <table>
    table-caption 表格标题 <caption>
    table-cell 表格单元格 <td>
    table-row 表格行 <tr>
    table-row-group 表格行组 <tbody>
    table-column 表格列 <col>
    table-column-group 表格列组 <colgroup>
    table-header-group 表格标题组 <thead>
    table-footer-group 表格脚注组 <tfoot>

    display: table-cell 实现水平垂直居中

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
            <style>
                .container{
                    width: 100px;
                    height:50px;
                    border: 1px solid black;
                    display: table-cell;    /* 模拟为td单元格,同时形成了 BFC */
                    /*display: table-caption  如果设置为此项 则不能使用水平和垂直居中*/ 
                    vertical-align: middle; /* 垂直居中*/
                    text-align: center;     /* 水平居中*/
                    margin:50px;     /* table-cell 对 margin 不感知,此处设置无效*/
                }
            </style>
        </head>
        <body>
            <div class="container">
                a
            </div>
            <div class="container">
                b
            </div>
            <div class="container">
                c
            </div>
        </body>
    </html>
    
    display: table-cell
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
            <style>
                .con{
                    background: red;
                    display: table; /* 将父元素div模拟为块级表格 table*/
                    margin: 50px;   /* 设置父元素 table 的margin*/
                }
                .container{
                    width: 200px;
                    height:50px;
                    border: 1px solid black;
                    display: table-cell;        
                    vertical-align: middle; 
                    text-align: center;     
                    /*margin: 50px;*/  去掉设置无效的 margin
                }
            </style>
        </head>
        <body>
            <div class="con">
                <div class="container">
                a
                </div>
                <div class="container">
                    b
                </div>
                <div class="container">
                    c
                </div>
            </div>
            
        </body>
    </html>
    
    外层div模拟为table,设置出margin 子元素table-cell自动撑满父元素table

    模拟之后,其属性的使用,就可以将其视作一个标签进行使用。


    reference

    display:table-cell实现水平垂直居中

    css Table布局-display:table

    CSS布局奇淫技巧之--各种居中

    相关文章

      网友评论

        本文标题:CSS display: table-cell 用于水平垂直居中

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