利用偽元素 ( ::before 或 ::after )作垂直置中
添加偽元素 ( ::before 或 ::after )垂直置中
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <style> .div0 { width: 200px; height: 150px; border: 1px solid #000; text-align: center; } .div0::before { content: ''; height: 100%; display: inline-block; vertical-align: middle; } .redbox { width: 30px; height: 30px; background: #c00; display: inline-block; vertical-align: middle; } .greenbox { width: 30px; height: 60px; background: #0c0; display: inline-block; vertical-align: middle; } .yellowbox { width: 30px; height: 40px; background: #F1E500; display: inline-block; vertical-align: middle; } </style></head>
<body>
<div class="div0">
<div class="redbox"></div>
<div class="greenbox"></div>
<div class="yellowbox"></div>
</div>
</body>
</html>
說明:
1、vertical-align: middle; 具有元素內的所有元素垂直位置互相置中的特性,
所以利用了偽元素 ::before (或是 ::after 也可以),
於父元素裡添加了 height: 100%; 的偽元素以利元素垂直位置互相置中。
2、有其限制,所有被垂直置中的元素之寬度加總起來,不能超過父元素寬度。
3、另外一提,範例中有使用到 content 屬性,content 屬性是專門跟偽元素 ::before 與 ::after 配合。
參考資料: