小tip: margin:auto實現絕對定位元素的水平垂直居中
如何只用css做到完全居中
.element
好處:
不足:
.element
transform中translate偏移的百分比值是相對於自身大小的。於是乎,無論絕對定位元素的尺寸是多少,其都是水平垂直居中顯示的。
好處:不足:
.element
上面**的width: 600px height: 400px僅是示意,你修改為其他尺寸,或者不設定尺寸(需要是這種自身包含尺寸的元素),都是居中顯示的。
原理: top、right、bottom、left 屬性都是指外邊距邊界距離父元素內邊距邊界的距離。當寬度固定時,設定 left: 0; right: 0; margin: auto; 可以讓左右外邊距自適應,使之讓元素的寬度 + 元素的左右外邊距 + 元素的左右邊框 + 元素的左右內邊距 = 父元素的寬度。
支援 table-cell 方法的瀏覽器使用 table-cell
不支援的 ie 6/7 ,使用 position:absolute 和 position: relative
content
.m-demo
.g-bothctr-4
.g-bothctr-4 .tablecell
.g-bothctr-4 .cnt
/*需要注意的是,使用這種方法,如果你的居中元素是放在body中的話,你需要給html,body設定乙個「height:100%」的屬性。*/
迫切需要的方法:inline-block法居中。基本方法是使用 display: inline-block, vertical-align: middle樣式和偽元素讓內容塊在容器中居中。我的實現用到了幾個在其他地方見不到的新技巧解決了一些問題。
內容區宣告的寬度不能大於容器的100% 減去0.25em的寬度。就像一段帶有長文字的區域。不然,內容區域會被推到頂端,這就是使用:after偽類的原因。使用:before偽類則會讓元素有100%的大小!
如果內容塊需要盡可能大地占用水平空間,可以為大容器加上max-width: 99%;樣式,或者考慮瀏覽器和容器寬度的情況下使用max-width: calc(100% – 0.25em) 樣式。
這種方法和table-cell的大多數好處相同,不過最初我放棄了這個方法,因為它更像是hack。不管這一點的話,瀏覽器支援很不錯,而且也被證實是很流行的方法。
.center-container.is-inline
.center-container.is-inline:after,
.is-inline .center-block
.center-container.is-inline:after
.is-inline .center-block
好處:
不足:
css未來發展的方向就是採用flexbox這種設計,解決像垂直居中這種共同的問題。請注意,flexbox有不止一種辦法居中,他也可以用來分欄,並解決奇奇怪怪的布局問題。
.center-container.is-flexbox
好處:
不足:
html,body
.m-demo
.m-demo > div
/*.m-demo > div*/
相容性:相容性差,只有最新瀏覽器才支援
擴充套件性:高寬不可擴充套件
塊元素水平垂直居中方法彙總
無論在平時專案中還是在面試中,遇到塊元素水平垂直居中的需求比較多。在此做下彙總 一 塊元素寬高固定 方法1 最普通常用方法 target 方法2 利用盒模型特性,當absolute定位元素偏移 top lelft right bottom 與其他屬性衝突時,則忽略偏移以其他屬性值為準。target ...
塊級元素水平垂直居中方法
一 加padding減height 垂直水平居中方法一 padding top box2高度 box1高度 2 height 原height值 padding top值 box2 margin 0 auto 脫離標準流的盒子該屬性值失效 優缺點 要先知道盒子的寬高,居中盒子不能脫離標準流 二 子絕父...
CSS垂直居中水平居中方法
center 剛在別人的部落格裡看到這種方法時真的覺得很奇葩,以下是大神的解釋 解釋 1 在普通內容流中,margin auto的效果等同於margin top 0 margin bottom 0。2 position absolute使絕對定位塊跳出了內容流,內容流中的其餘部分渲染時絕對定位部分不...