摘要:原載于,本文著重提取文中的方法,不完全翻譯。人們經常抱怨在中居中元素的問題,其實這個問題其實并不復雜,只是因為方法眾多,需要根據情況從眾多方法中選取一個出來。
原載于CSS-Trick,本文著重提取文中的方法,不完全翻譯。如有需要,直接原文查看。
人們經常抱怨在CSS中居中元素的問題,其實這個問題其實并不復雜,只是因為方法眾多,需要根據情況從眾多方法中選取一個出來。接下來,我們做一個‘決定樹’來幫我們把問題變的簡單一點。首先你需要居中:
水平
需要居中 inline 或者 inline-* 元素(如文字或者鏈接)?
需要居中 block 類的元素?
需要居中多個 block 元素?
垂直
需要居中 inline 或者 inline-* 元素(如文字或者鏈接)?
需要居中 block 類的元素?
既水平又垂直
固定寬高
不固定寬高
使用 flexbox
水平居中 水平居中 inline 或者 inline-* 元素你可以輕松的在一個 block 元素中水平居中一個 inline 元素,以下代碼對 inline,inline-block,inline-table 和 inline-flex 等有效
.parent { text-align: center; }水平居中 block 類的元素
在 block 元素被設定固定寬度的情況下,可以使用設置元素 margin-left 和 margin-right 的值為 auto 的方法實現水平居中。
.child { width: 400px; margin: 0 auto; }水平居中多個 block 類的元素
通過 inline-block實現
.parent { text-align: center; } .child { display: inline-block; text-align: left; }
通過 flexbox 實現
.parent { display: flex; justify-content: center; }垂直居中 垂直居中 inline 或者 inline-* 元素 單行
inline/text 元素可以簡單的用設置相同的上下 padding 值達到垂直居中的目的。
.center { pading-top: 30px; padding-bottom: 30px; }
如果因為某種原因不能使用 padding 的方法,你還可以設置 line-height 等于 height來達到目的。
.center { height: 100px; line-height: 100px; white-space: nowrap; }多行
相同的上下 padding 也可以適用于此種情況,如果不能生效,你可以嘗試將該元素的父元素的 dispaly 設置為 table ,同時該元素的 dispaly 設置為 table-cell,然后設置 vertical-align。
.parent { display: table; width: 200px; height: 400px; } .child { display: table-cell; vertical-align: middle; }
如果上述方法不能使用,你可以嘗試使用 flexbox,一個多帶帶的 flexbox 子元素可以輕易的在其父元素中居中。謹記,這種方法需要父元素有固定的高度。
.parent { display: flex; justify-content: center; flex-direction: column; height: 400px; }
如果上述兩種方式均不能使用,你可以使用“幽靈元素”技術,這種方法采用偽元素 ::before 撐開高度 ,文字垂直居中。
.parent { position: relative; } .parent::before { content: " "; display: inline-block; height: 100%; width: 1%; vertical-align: middle; } .child { display: inline-block; vertical-align: middle; }垂直居中 block 類的元素 已知元素高度
.parent { position: relative; } .child { position: absolute; top: 50%; height: 100px; margin-top: -50px; /* account for padding and border if not using box-sizing: border-box; */ }未知元素高度
.parent { position: relative; } .child { position: absolute; top: 50%; transform: translateY(-50%); }使用 flexbox
.parent { display: flex; flex-direction: column; justify-content: center; }既水平又垂直 固定寬高
.parent { position: relative; } .child { width: 300px; height: 100px; padding: 20px; position: absolute; top: 50%; left: 50%; margin: -70px 0 0 -170px; }不固定寬高
.parent { position: relative; } .child { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }使用 flexbox
.parent { display: flex; justify-content: center; align-items: center; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/115065.html
摘要:但是部分瀏覽器存在兼容性的問題。核心代碼寬高不固定水平垂直居中演示使用布局垂直水平居中核心代碼使用布局垂直水平居中演示使用布局垂直水平居中核心代碼使用布局垂直水平居中演示 CSS居中完全指南——構建CSS居中決策樹 showImg(https://segmentfault.com/img/bV8tDq); 本文總結CSS居中,包括水平居中和垂直居中.本文相當于CSS決策樹,下次再遇到...
摘要:但是部分瀏覽器存在兼容性的問題。核心代碼寬高不固定水平垂直居中演示使用布局垂直水平居中核心代碼使用布局垂直水平居中演示使用布局垂直水平居中核心代碼使用布局垂直水平居中演示 CSS居中完全指南——構建CSS居中決策樹 showImg(https://segmentfault.com/img/bV8tDq); 本文總結CSS居中,包括水平居中和垂直居中.本文相當于CSS決策樹,下次再遇到...
摘要:在文本前面插入一個高度為百分百的偽元素,讓文本與其垂直對齊。塊級元素或者使用垂直水平居中或者使用 翻譯自 https://css-tricks.com/centering-css-complete-guide/ 預先給出這樣的樣式 .container { width: 100%; height: 200px; background-color: azur...
摘要:正文居中是常被開發者抱怨的問題之一。注意你不能將浮動元素居中。水平且垂直居中你可以將前面的方法任意組合起來,實現完美的居中效果。這樣就可以使元素水平且垂直居中,并具有良好的瀏覽器兼容性。 參考 Centering in CSS: A Complete Guide BY CHRIS COYIER ON SEPTEMBER 2, 2014 附:文中涉及到了flex的一些用法,如果沒有接...
摘要:水平水平居中有行內元素和塊元素,行內元素有文字圖片鏈接等塊元素主要是等元素。塊元素對于一個塊元素,可以設置其和自動,就像這樣在線查看無論塊元素的寬度是否已知,都可以實現水平居中。 這里主要參考的是CHRIS COYIER寫的一篇的文章(點擊查看),主要講了關于css水平、垂直居中的一些方法,每個方法后面都有一個demo,可以在線查看效果。 1 水平 水平居中有行內元素和塊元素,行內元素...
閱讀 2322·2023-04-26 00:28
閱讀 3067·2019-08-30 15:55
閱讀 2742·2019-08-30 12:47
閱讀 1550·2019-08-29 11:04
閱讀 3149·2019-08-28 18:14
閱讀 945·2019-08-28 18:11
閱讀 1670·2019-08-26 18:36
閱讀 3382·2019-08-23 18:21