• 五种水平垂直居中方式


    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0">
        <title>五种水平垂直居中</title>
        <!-- IMPORT CSS -->
    
        <style>
            html,
            body {
                position: relative;
                /* height: 100%; */
                overflow: hidden;
            }
    
            .box {
                box-sizing: border-box;
                 100px;
                height: 50px;
                line-height: 48px;
                text-align: center;
                font-size: 16px;
                border: 1px solid lightblue;
                background: lightcyan;
            }
    
            /* 定位1 */
            /* body {
                position: relative;
            } */
    
            /* 1.通过绝对定位
            
             .box {
                position: absolute;
                top: 50%;
                left: 50%;
                margin-top: -25px;
                margin-left: -50px;
            } */
    
            /* 2.通过绝对定位
            
            .box {
                position: absolute;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                margin: auto;
            } */
    
            /* 3.通过绝对定位
            .box {
                position: absolute;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%);
            } */
    
            /*4.通过flex弹性盒子,常用
             body {
                display: flex;
                justify-content: center;
                align-items: center;
            } */
    
            /* ============ */
            body {
                display: table-cell;
                vertical-align: middle;
                text-align: center;
                /* 固定宽高 */
                 500px;
                height: 500px;
            }
    
            .box {
                display: inline-block;
            }
        </style>
    </head>
    
    <body>
        <div class="box" id="box">
            五种水平垂直居中
        </div>
        <!-- IMPORT JS -->
        <script>
            /* 5.利用JS
            
            let HTML = document.documentElement,
                winW = HTML.clientWidth,
                winH = HTML.clientHeight,
                boxW = box.offsetWidth,
                boxH = box.offsetHeight;
            box.style.position = "absolute";
            box.style.left = (winW - boxW) / 2 + 'px';
            box.style.top = (winH - boxH) / 2 + 'px'; */
        </script>
    </body>
    
    </html>

    二.使用绝对定位

    1.1.必须要指定元素的宽度和高度

     1 .box1{
     2      800px;
     3     height: 500px;
     4     border: 2px red solid;
     5     
     6     position: relative;
     7 }
     8 
     9 .box2{
    10      100px;
    11     height: 100px;
    12     background-color: #bfa;
    13     
    14     
    15     
    16     /* 通过绝对定位来设置元素的居中 */
    17     position: absolute;
    18     
    19     /* 四个偏移量都设置为0 */
    20     top: 0;
    21     left: 0;
    22     bottom: 0;
    23     right: 0;
    24     
    25     margin: auto;
    26     
    27 }

    三.使用表格(display:xxxx)

    1.不需要指定元素的宽度高度(inline-block)

     1 .box1{
     2      800px;
     3     height: 500px;
     4     border: 2px red solid;
     5     /* 将父元素转换为单元格 */
     6     display: table-cell;
     7     vertical-align: middle;
     8 }
     9 
    10 .box2{
    11      100px;
    12     height: 100px;
    13     background-color: #bfa;
    14 }

    四。使用变形

    1.不需要设置元素的宽度和高度

     1 .box1{
     2      800px;
     3     height: 500px;
     4     border: 2px red solid;
     5     
     6     position: relative;
     7 }
     8 
     9 .box2{
    10      100px;
    11     height: 100px;
    12     background-color: #bfa;
    13     
    14     
    15     left: 50%;
    16     top:50%;
    17     transform: translateX(-50%) translateY(-50%);
    18     
    19 }

    五。使用弹性盒flex

    1.不需要设置元素的宽度和高度

    2.会使所有的子元素都在父元素中居中

     1 .box1{
     2      800px;
     3     height: 500px;
     4     border: 2px red solid;
     5     
     6     display: flex;
     7     
     8     justify-content: center;
     9     align-items: center;
    10     
    11     
    12 }
    13 
    14 .box2{
    15      100px;
    16     height: 100px;
    17     background-color: #bfa;
    18 }
  • 相关阅读:
    实现qsort(和qsort差一个数量级啊,伤自尊了)
    广度优先遍历目录(Windows平台、C++)
    在CentOS上以源码编译的方式安装Greenplum数据库
    Java泛型函数的运行时类型检查的问题
    Android代码的几点小技巧
    关于矢量图片资源向后兼容:CompatVectorFromResourcesEnabled标志的使用
    指定Android Studio编译工程时的源文件编码
    安卓日历同步的一些要点
    Android Studio编译错误:Unexpected lock protocol found in lock file. Expected 3, found 0.
    系统信息命令
  • 原文地址:https://www.cnblogs.com/fsg6/p/12707898.html
Copyright © 2020-2023  润新知