整理常用 CSS 常用的 垂直置中 的方法。
文字的垂直置中方法
此方法適用 單行,因為是行高,所以會在行內元素的上下都加上行高的 1/2 ,
如果多行,第二行與第一行的間距會變超大,就會導致沒有垂直置中的效果。
1 | // height 和 line-height 要一樣高 |
See the Pen 垂直置中 - line-height.
calc & transform
使用 calc 動態計算的能力,讓要置中的 div 的 top 屬性,
與上方的距離是「50% 的外框高度 + 50% 的 div 高度」,就可以做到垂直置中。
範例 1:設定 top:50%,再扣掉 div 的 高度/2
- 方法 1:top: calc( 50% - (高度/2) )
- 方法 2:top: 50%; margin-top: -(高度/2);
- 方法 3:top: 50%; transform: translateY(-50%); 自行計算 50%的 div 高度
1 | .redbox { |
See the Pen 垂直置中 - calc 動態計算1.
範例 2:將三個 div 設定寬高各 30px,將滑鼠移到黑框內,可觀看效果。
See the Pen 垂直置中 - calc 動態計算2.
絕對定位
利用絕對位置來指定,要將 上下 的數值都設為 0,再搭配一個 margin:auto,就可以辦到垂直置中。
邏輯:
這個方法同時設定top和bottom為0,使得這個div完全不可能符合,最後再透過margin這個指令,讓它達到垂直置中的效果
這個方法同時設定top和bottom為0,使得這個div完全不可能符合,最後再透過margin這個指令,讓它達到垂直置中的效果
1 | .redbox { |
See the Pen 垂直置中 - 絕對定位.
Flexbox
CSS3 最威的盒子模型:Flexbox,使用 align-items 或 align-content 的屬性,
輕輕鬆鬆就可以做到垂直置中的效果喔,Bootstrap 4 也有用喔。
1 | .div0 { |
See the Pen 垂直置中 - Flexbox.