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