美文网首页
HTML元素垂直居中总结

HTML元素垂直居中总结

作者: 你好星期四 | 来源:发表于2016-08-03 19:25 被阅读22次

    父元素高度确定的单行文本

    父元素高度确定的单行文本的竖直居中的方法是通过设置父元素的 height 和 line-height 高度一致来实现的。(height: 该元素的高度,line-height: 顾名思义,行高(行间距),指在文本中,行与行之间的 基线间的距离 )。

    
    <div class="container">
    
        hi,imooc! 
    
    </div>
    
    

    css代码:

    
    <style> 
    
    .container{
    
        height:100px;
    
        line-height:100px;
    
        background:#999;
    
     }
    
     </style>
    
    

    父元素高度确定的多行文本

    方法一:使用插入 table (包括tbody、tr、td)标签,同时设置 vertical-align:middle。

    css 中有一个用于竖直居中的属性 vertical-align,在父元素设置此样式时,会对inline-block类型的子元素都有用。下面看一下例子:

    html代码:

    
    <body>
    
     <table><tbody><tr><td class="wrap">
    
     <div>
    
        <p>看我是否可以居中。</p>
    
     </div>
    
     </td></tr></tbody></table> </body>
    
    

    css代码:

    
    table td{
    
        height:500px;
    
        background:#ccc
    
    }
    
    

    因为 td 标签默认情况下就默认设置了 vertical-align 为 middle,所以我们不需要显式地设置了。

    方法二:在 chrome、firefox 及 IE8 以上的浏览器下可以设置块级元素的 display 为 table-cell(设置为表格单元显示),激活 vertical-align 属性,但注意IE6、7 并不支持这个样式, 兼容性比较差。

    html代码:

    
    <div class="container">
    
        <div>
    
            <p>看我是否可以居中。</p>
    
            <p>看我是否可以居中。</p>
    
            <p>看我是否可以居中。</p>
    
        </div>
    
     </div>
    
    

    css代码:

    
    <style> 
    
    .container{
    
        height:300px;
    
        background:#ccc;
    
        display:table-cell;/*IE8以上及Chrome、Firefox*/
    
        vertical-align:middle;/*IE8以上及Chrome、Firefox*/ 
    
    }
    
    </style>
    
    

    这种方法的好处是不用添加多余的无意义的标签,但缺点也很明显,它的兼容性不是很好,不兼容 IE6、7而且这样修改display的block变成了table-cell,破坏了原有的块状元素的性质。


    还有一种方法:

    
    .container{
    
        position: absolute;
        top:50%;
        left:50%;
    
        margin:-170px -250px; /*container宽500px,高340px*/
    
    }
    
    

    相关文章

      网友评论

          本文标题:HTML元素垂直居中总结

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