盒子的水平垂直居中几种方法

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>水平垂直居中</title>
    <style>
        /*1. flex布局, 只需对父元素操作 */
            /* .parent {
                display: flex;
                align-items: center;
                justify-content: center;
            } */

        /*2. 绝对定位, 利用 top,left 向右下移动一半父元素的距离,然后用 transform 左上移动自身元素的一半距离 */
            /* .parent {
                position: relative;
            }

            .content {
                position: absolute;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%);
            } */

        /*3. 绝对定位, 把上述的 transform 换成 负margin 自身宽高的一半。此方案需要已知宽高。*/
            /* .parent {
                position: relative;
            }

            .content {
                position: absolute;
                width: 86px;
                height: 21px;
                top: 50%;
                left: 50%;
                margin-left: -43px;
                margin-top: -10.5px;
            } */

        /*4. 绝对定位, top,bottom,left,right 全部设置为0, margin: auto; 此方案需要已知宽高。*/
            /* .parent {
                position: relative;
            }

            .content {
                position: absolute;
                width: 86px;
                height: 21px;
                left: 0;
                right: 0;
                top: 0;
                bottom: 0;
                margin: auto;
            } */

        /* 其他水平居中的办法主要有两个 */
            /*1. 父元素 text-align: center; */
                .parent {
                    text-align: center;
                }

            /*2. 子元素 margin: 0 auto; 此方案需要已知宽度。且只对block元素生效。*/
                /* .content {
                    display: block;
                    width: 86px;
                    margin: 0 auto;
                } */

        /* 其他垂直居中的办法主要有两个 */
            /*1. 子元素设置 line-height 等于父元素高度 */
                /* .content {
                    line-height: 500px;
                } */
            
            /*2. table布局,子元素: vertical-align: middle; */
                .parent {
                    display: table;
                }

                .content {
                    display: table-cell;
                    vertical-align: middle;
                }
    </style>
</head>

<body>
    <div class="parent" style=" height: 500px; width: 400px;background: gray;">
        <div class="content" id="div" style="background: greenyellow;display:none;">hello world</div>
        <span class="content" id="span" style="background: greenyellow;">hello world</span>
    </div>
    <button id="btn" style="margin-top:20px;margin-bottom: 40px;">切换span or div</button>
    <div>参考文章:<a target="_blank" href="http://louiszhai.github.io/2016/03/12/css-center/">http://louiszhai.github.io/2016/03/12/css-center/</a></div>
    <script>
        var div = document.getElementById("div");
        var span = document.getElementById("span");
        var display = span.style.display;
        document.getElementById('btn').onclick = function () {
            if (div.style.display === "none") {
                span.style.display = 'none';
                div.style.display = display;
            } else {
                div.style.display = 'none';
                span.style.display = display;
            }
        }
    </script>
</body>

</html>

  

posted @ 2017-04-13 17:14  森森森shen  阅读(624)  评论(0编辑  收藏  举报