純CSS完美實現垂直水平居中的6種方式

2021-07-15 22:06:01 字數 2515 閱讀 8138

時間 2016-07-29 13:12:19

segmentfault 原文

主題 css

前言由於html語言的定位問題,在網頁中實現居中也不是如word中那麼簡單,尤其在內容樣式多變,內容寬高不定的情況下,要實現合理的居中也是頗考驗工程師經驗的。網上講居中的文章很多,但是都不太完整,所以小茄今天就來總結下純css實現居中的各種方案。學疏才淺,文中如有不當之處,萬望指出!

6種方案

1、絕對定位+margin:auto

type="text/css">

.wrp

.box

.wrp1

.box1

style>

class="wrp wrp1">

class="box box1">

完全居中層1:h3>

開發工具 【 wex5 】: 高效能輕架構、開源免費、跨端、視覺化h3>

div>

div>

效果:

實現原理:利用css定位規則,設定左右、上下方向定位為0,margin為auto,讓css根據定位計算margin值,用hack的方式實現居中。居中塊(綠色)的尺

寸需要可控,因為css計算margin時也需要參考尺寸值,由於四周為0,所以自動計算的尺寸是與父容器一樣的。無論是設定width、height或者是 max-

height、max-width,都是讓尺寸不會擴大到與父級一樣。

2、絕對定位+margin反向偏移

class="box box2">

完全居中方案二:h3>

開發工具 【 wex5 】: 高效能輕架構、開源免費、跨端、視覺化h3>

div>

效果:

實現原理:由於top、left偏移了父物件的50%高度寬度,所以需要利用margin反向偏移居中塊的50%寬高。而margin中不能使用百分比,因為百分比是針對

父物件的,所以需要手動計算定值指定margin值。這個方案需要固定尺寸值,以此來計算margin反向偏向值,所以方案2比方案1稍差!

3、絕對定位+transform反向偏移

class="box box3">

完全居中方案三:h3>

開發工具 【 wex5 】: 高效能輕架構、開源免費、跨端、視覺化h3>

效果:

實現原理:方案3與方案2原理一樣!不同點是使用了transform來代替margin做反向偏移,由於transform的計算基準是元素本身,所以這裡可以用50%來做反向偏移。這個方案也需要固定尺寸值,瀏覽器以此為基準來計算定位!

4、display:tabel

class="subwrp4">

class="box box4">

完全居中方案四:h3>

div>

div>

效果:

實現原理:方案4是實現效果比較好的,居中塊的尺寸可以做包裹性,缺點是增加了一層table-cell層來實現垂直居中。方案4的居中塊可以設定 max-

height、max-width,而且居中塊是可以具有垂直方向的包裹性的。水平方向由於是在table-cell裡面的,所以會直接顯示max-width,也就是寬度趨大。

5、display: inline-block

class="box box5">

完全居中方案五:h3>

開發工具 【 wex5 】: 高效能輕架構、開源免費、跨端、視覺化h3>

div>

效果:

實現原理:原理:利用inline-block的vertical-align: middle去對齊after偽元素,after偽元素的高度與父物件一樣,就實現了高度方向的對齊。方案5實現效果更加好,居中塊的尺寸可以做包裹性、自適應內容,相容性也相當好。缺點是水平居中需要考慮inline-block間隔中的留白(**換行符遺留問題。)。方案4的居中塊可以設定 max-height、max-width,而且居中塊是可以具有水平垂直兩個方向的自適應。

6、display: flex-box

class="box box6">

完全居中方案六:h3>

開發工具 【 wex5 】: 高效能輕架構、開源免費、跨端、視覺化h3>

div>

效果:

實現原理: flexbox布局。此乃布局終極**,專治各種布局定位難題!優點:能解決各種排列布局問題,實現方式符合人類認知。缺點:pc端某些舊瀏覽器支援度不高。

純css實現居中的各種方案就總結到這裡了,碼字不易,順手點讚哈!

純css實現元素水平垂直居中

在前端頁面布局的時候,我們需要對某個元素進行相對於其父元素或整個文件進行水平垂直居中的顯示布局。而如何快速的運用css進行相對於的布局,這裡,總結了三種方法。這裡父元素只需要給它乙個定位的屬性就行,在子元素下設定相對定位,這裡有兩種寫法,第一種就是沒有注釋的,把left,right,top,bott...

css實現水平居中 垂直居中 垂直水平居中布局

1.只需要把行內元素包裹在乙個屬性display為block的父層元素中,並為父層元素新增如下屬性即可 parent2.塊狀元素解決方案 item3.多個塊狀元素解決方案將元素的display屬性設定為inline block,並且把父元素的text align屬性設定為center即可 paren...

css 水平居中 垂直居中 水平垂直居中

一 水平居中 1 行內元素水平居中text align center 2 塊級元素水平居中margin 0 auto 3 多個塊狀元素的水平居中 實現多個水平排列的塊狀元素的水平居中,是將要水平排列的塊狀元素設為display inline block,然後在父級元素上設定text align ce...