美文网首页@IT·互联网
水平居中和垂直居中

水平居中和垂直居中

作者: 牛奶芝麻 | 来源:发表于2017-05-11 14:39 被阅读37次

    本章介绍几种常见的水平居中和垂直居中的实现方式

    <!DOCTYPE html>
    <html>
    <head>
        <title>水平居中和垂直居中</title>
        <meta charset="utf-8">
    </head>
    <style type="text/css">
        .box {   /* 在一个基础的盒子里面显示效果 */
            position: relative;
            float: left;
            width: 250px;
            height: 200px;
            margin: 20px; 
            border: 1px solid #000;
        }
        
        .lev1 { 
            width: 150px; 
            margin: 0 auto; 
            background-color: pink; 
        }
    
        .box .lev2 { 
            position: absolute; 
            width: 150px; 
            height: 100px; 
            margin: auto; 
            left: 0;    
            right: 0;   /* 增加 top 和 bottom 为 0 会使其水平垂直居中 */
            background-color: pink; 
        }
    
        .box .ver-lev1 {
            position: relative;     /* 相对定位或绝对定位均可 */
            width: 150px;
            height: 100px;
            top: 50%;
            left: 50%;
            margin: -50px 0 0 -75px;        /* 外边距为自身宽高的一半 */
            background-color: pink;       
        }
    
        .box .ver-lev2 {
            position: absolute;     /* 相对定位或绝对定位均可 */
            width: 150px;
            height: 100px;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);  /* translate 定义转换, 横纵坐标转换 -50% */
            background-color: pink;     
        }
    
        .flex {
            display: flex;
            align-items: center;        /* 垂直居中  */
            justify-content: center;    /* 水平居中 */
            width: 400px;
            height: 200px;
            border: 1px solid #000;
            margin: 20px;
        }
    
        .flex .ver-lev3 {
            width: 300px;
            height: 50px;
            background-color: pink;
        }
    
        .table-cell {
            display: table-cell;
            vertical-align: middle;
            width: 400px;
            height: 200px;
            /* margin: 20px; */   /* table-cell没有margin值 */
            border: 1px solid #000; 
        }
    
        .table-cell .ver1 {
            width: 300px;
            height: 50px;
            text-align: center;
            background-color: pink;
        }
    </style>
    <body>
        <div class="box"><div class="lev1">水平居中: 给div设置一个宽度, 然后添加 margin:0 auto 属性</div></div>
        <div class="box"><div class="lev2">水平居中: 让绝对定位的 div 居中</div></div>
        <div class="box"><div class="ver-lev1">水平垂直居中: 受限于容器的宽高, 设置层的外边距</div></div>
        <div class="box"><div class="ver-lev2">水平垂直居中: 不受限于容器的宽高, 利用 `transform` 属性 (2D 或 3D 转换)</div></div>
        <div style="clear: left;"></div>  <!-- 清除前面的左浮动 -->
        <div class="flex"><div class="ver-lev3">水平垂直居中: 使用 display 中的 flex 布局 (与 float 或 position 混用会被破坏)</div></div>
        <div class="table-cell"><div class="ver1">垂直居中: 使用 display 中的 table-cell 值 (与 float 或 position 混用会被破坏)</div></div>
    </body>
    </html>
    
    result.png

    相关文章

      网友评论

        本文标题:水平居中和垂直居中

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