還不會CSS水平垂直居中?這裡有12種方案

2021-09-09 08:42:11 字數 2611 閱讀 6337

水平垂直居中

基於視口單位的解決方案

基於 flexbox 的解決方案

總結今天讀書的時候,愕然發現自己居然沒有總結過水平垂直居中的方法,在印象中,這個知識點確實是很神奇的存在:

接下來我們就來總結一下該如何實現這個看似簡單,實現起來卻很難,但實現方法超級多的需求吧。

行內元素只需要在父元素設定水平居中就可以達到目的,也包含了imginline或者inline-blockinline-tableinline-flex等元素。

方案一:

.container

.item

方案二:

.container

"parent"

>

"child"

>

text herediv

>

div>

#child

"parent"

>

src=

"image.png"

alt="

" />

div>

#parent

#parent img

**具有天然的居中效果,所以我們可以將元素模擬成**特性,或直接用**布局

"parent"

>

"child"

>

content herediv

>

div>

#parent

#child

方案一

利用絕對定位,將元素的top和left屬性都設為50%,再利用margin邊距,將元素回拉它本身高寬的一半,實現垂直居中。

#container

#center

方案二

transform代替margin,這種方案有可能造成模糊,可以通過transform- style: preserve-3d來修復。

#container

#center

方案三

借助強大的 calc() 函式演變

#container

#center

方案四

利用margin的效果

#container

#center

不用絕對定位,通過視口單位來解決

main

先給這個待居中元素的父元素設定display:flex(在這個例子中是元素),再給這個元素自身設定我們再熟悉不過的margin: auto(在這個例子中是元素):

body

main

請注意,當我們使用 flexbox 時, margin: auto 不僅在水平方向上將元素居中,垂直方向上也是如此。

如果我們想讓元素裡的內容也水平垂直居中的話,可以給元素設定屬性,此時它也是乙個flexbox:

main

我們平時常用的可能是文字、的居中,基於絕對定位的居中,或者用 flexbox 來解決,以上辦法也是根據實際情況比如元素是否定寬高以及相容目標來使用的,除了以上解決方案之外,可能還有其他方案,但是hack的味道可能會比較明顯,我們的瀏覽器支援越來越好,在移動端,我們一般都會採用 flexbox 解決方案,希望大家從這些繁複的工作中解脫出來,做更多有創造性事情。

end.

居然看到了這裡,最近發現一篇更全的關於垂直居中的總結,分享給大家。

如何居中乙個元素(終結版)

也補充了乙個方案:已知寬高,利用絕對定位來居中

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

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

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

css水平居中 垂直居中 水平垂直居中 水平居中 行內元素 block text align 塊級元素 方案一 分寬度定不定兩種情況 定寬度 margin 0 auto 作用 使盒子自己居中,意思是上下距離為0,auto就是左右自適應兩邊距離 不定寬度 設定子元素display inline blo...

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

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