適配性絕佳的全屏居中彈出框(不定高)

彈窗和垂直居中是大家常聽到和常用到的知識點和內容,我這里給大家分享下適配超好的案例。希望大家一起學習進步

<div class="container">
    <div class="dialog">
         <div class="content">內容占位</div>
    </div>
</div>
.container {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: rgba(0,0,0,.5);
    text-align: center;
    white-space: nowrap;
    font-size: 0;
    z-index: 99;
}

.container::after {
    content: "";
    height: 100%;
    display: inline-block;
    vertical-align: middle;
}

.dialog {
    display: inline-block;
    vertical-align: middle;
    border-radius: 6px;
    background-color: #fff;
    font-size: 14px;
    text-align: left;
    white-space: normal;
}

.content {
    width: 240px;
    height: 120px;
    padding: 20px;
}

以下是運行效果截圖。可以調整 after 偽元素的 height 高度,達到視覺上的垂直居中,目前是絕對居中。

原理概述:
1.偽元素相當于行框盒子前的x文字內容。這里的原理可以學習《css新世界》,里面有詳細介紹。書中稱為幽靈空白節點。每一個行框盒子都會存在。默認這個x文字內容會緊貼最上邊緣。又因為我們把 font-size 設置為0,所以改文字會有一半的位置在外面。這是默認情況下,文字基線對齊。我們設置了 vertical-aligh:middle 和 height: 100%。所以改偽元素會全屏居中。
2.此時我們把內容區域 dialog 也設置成 vertical-aligh:middle,則會自動和外部對齊,則最終實現了不定高區域的自適應全屏居中。
3.這里我加了寬高,大家可以去除試一下,任然是垂直居中。
4.補充:如果是定高的垂直居中我們可以結合 margin:auto 實現。這也是我自己本身常用的方法。

image
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。