免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
CSS居中完整指南

使用 CSS 實現(xiàn)居中效果困難嗎?顯然不是。實際上有許多方法可以實現(xiàn)居中效果,但在具體情況中,我們往往無法判斷哪種方法最合適。

所以讓我們來創(chuàng)建一個層次結構的方法集,幫助你解決選擇困難癥~

水平居中

行內或類行內元素(比如文本和鏈接)

在塊級父容器中讓行內元素居中,只需使用 text-align: center;

這種方法可以讓 inline/inline-block/inline-table/inline/flex 等類型的元素實現(xiàn)居中。

塊級元素

讓塊級元素居中的方法就是設置 margin-leftmargin-rightauto(前提是已經(jīng)為元素設置了適當?shù)?width 寬度,否則塊級元素的寬度會被拉伸為父級容器的寬度)。常見用法如下所示:

.center-me {  margin: 0 auto;}

無論父級容器和塊級元素的寬度如何變化,都不會影響塊級元素的居中效果。

請注意,float 屬性是不能實現(xiàn)元素居中的。如果你想知道使用 float 實現(xiàn)居中的非常規(guī)方案,可以參考這篇文章。

有關于水平居中更多實現(xiàn)方法,可以參閱早期整理的一篇博客《六種實現(xiàn)元素水平居中

多個塊級元素

如果要讓多個塊級元素在同一水平線上居中,那么可以修改它們的 display 值。這里有兩個示例,其中一個使用了 inline-block 的顯示方式,另一個使用了 flexbox 的顯示方式:

如果你想讓多個垂直堆棧的塊元素,那么仍然可以通過設置 margin-leftmargin-rightauto 來實現(xiàn):

垂直居中

使用 CSS 實現(xiàn)垂直居中需要一些技巧。

行內或類行內元素(比如文本和鏈接)

單行

對于單行行內或者文本元素,只需為它們添加等值的 padding-toppadding-bottom 就可以實現(xiàn)垂直居中:

.link {  padding-top: 30px;  padding-bottom: 30px;}

如果因為某些原因我們不能使用 padding 屬性來實現(xiàn)垂直居中,而且已知文本不會換行,那么就可以讓 line-heightcenter 相等,從而實現(xiàn)垂直居中:

.center-text-trick {  height: 100px;  line-height: 100px;  white-space: nowrap;}

多行

對于多行文本,同樣可以使用等值 padding-toppadding-bottom 的方式實現(xiàn)垂直居中。如果你在使用過程中發(fā)現(xiàn)這種方法沒見效,那么你可以通過 CSS 為文本設置一個類似 table-cell 的父級容器,然后使用 vertical-align 屬性實現(xiàn)垂直居中:

此外,你還可以使用 flexbox 實現(xiàn)垂直居中,對于父級容器為 display: flex 的元素來說,它的每一個子元素都是垂直居中的:

.flex-center-vertically {  display: flex;  justify-content: center;  flex-direction: column;  height: 400px;}

值得注意的是,上述方法只適用于父級容器擁有確定高度的元素。

如果上述方法都不起作用,那么你就需要使用被稱為幽靈元素(ghost element)的非常規(guī)解決方式:在垂直居中的元素上添加偽元素,設置偽元素的高等于父級容器的高,然后為文本添加 vertical-align: middle; 樣式,即可實現(xiàn)垂直居中。

.ghost-center {  position: relative;}.ghost-center::before {  content: " ";  display: inline-block;  height: 100%;  width: 1%;  vertical-align: middle;}.ghost-center p {  display: inline-block;  vertical-align: middle;}

塊級元素

已知元素的高度

無法獲知元素的具體高度是非常常見的一種狀況,比如:視區(qū)寬度變化,會觸發(fā)布局重繪,從而改變高度;對文本施加不同的樣式會改變高度;文本的內容量不同會改變高度;當寬度變化時,對于寬高比例固定的元素(比如圖片),也會自動調整高度……

如果我們知道元素的高度,可以這樣來實現(xiàn)垂直居中:

.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; */}

未知元素的高度

如果我們不知道元素的高度,那么就需要先將元素定位到容器的中心位置,然后使用 transformtranslate 屬性,將元素的中心和父容器的中心重合,從而實現(xiàn)垂直居中:

.parent {  position: relative;}.child {  position: absolute;  top: 50%;  transform: translateY(-50%);}

flexbox

使用 flexbox 實現(xiàn)垂直居中非常簡單:

.parent {  display: flex;  flex-direction: column;  justify-content: center;}

水平且垂直居中

通過組合水平居中和垂直居中的技巧,可以實現(xiàn)非常完美的居中效果。我覺得可以將它們分為三種類型:

寬高固定元素

設定父級容器為相對定位的容器,設定子元素絕對定位的位置 position: absolute; top: 50%; left: 50%,最后使用負向 margin 實現(xiàn)水平和垂直居中,margin 的值為寬高(具體的寬高需要根據(jù)實際情況計算 padding)的一半。

.parent {  position: relative;}.child {  width: 300px;  height: 100px;  padding: 20px;  position: absolute;  top: 50%;  left: 50%;  margin: -70px 0 0 -170px;}

寬高不固定元素

如果無法獲取確定的寬高,同樣需要設定父級容器為相對定位的容器,設定子元素絕對定位的位置 position: absolute; top: 50%; left: 50%。不同的是,接下來需要使用 transform: translate(-50%, -50%); 實現(xiàn)垂直居中:

.parent {  position: relative;}.child {  position: absolute;  top: 50%;  left: 50%;  transform: translate(-50%, -50%);}

使用 transform 有一個缺陷,就是當計算結果含有小數(shù)時(比如 0.5),會讓整個元素看起來是模糊的,一種解決方案就是為父級元素設置 transform-style: preserve-3d; 樣式:

.parent-element {  -webkit-transform-style: preserve-3d;  -moz-transform-style: preserve-3d;  transform-style: preserve-3d;}.element {  position: relative;  top: 50%;  transform: translateY(-50%);}

flexbox

使用 flexbox 實現(xiàn)水平和垂直居中,只需使用兩條居中屬性即可:

.parent {  display: flex;  justify-content: center;  align-items: center;}

結論

你看,使用 CSS 可以讓任何元素實現(xiàn)居中效果。

本文根據(jù)@Chris Coyier的《Centering in CSS: A Complete Guide》所譯,整個譯文帶有我們自己的理解與思想,如果譯得不好或有不對之處還請同行朋友指點。如需轉載此譯文,需注明英文出處:https://css-tricks.com/centering-css-complete-guide/。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
不使用Media Queries的自適應CSS
CSS居中:完全指南(譯) | Eamonn
CSS 中你需要知道 auto 的一切!
不再混淆,一次搞懂!圖解flexbox十余個屬性
詳解css3彈性盒模型(Flexbox)
20 個讓你效率更高的 CSS 代碼技巧
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服