總結起來,在容器中垂直對齊內容的方法很少。 這些是主要的方法http://jsfiddle.net/EjV4V/3/這個人是 - - 使用position
和transform
性能我們能想到的最簡單的垂直對齊
- (如果你現在一些完全不同的方式來做到這一點,那將是非常慷慨的您提供的例子,我將在這裏包含它)不錯,但就我而言,有點矯枉過正,尤其是如果我們考慮渲染優化問題的話。將在所有現代瀏覽器中工作,將無法在IE7中工作。
- 使用
display: inline-block
財產與一個額外的輔助塊 - http://jsfiddle.net/mmxm4/3/。因爲使用額外的DOM元素,不要認爲這種方法是好的。在IE7中無法使用。值得一提的是(感謝@nclenorton提到這一點),我們可以使用:before
或:after
生成的內容。但是,再次 - not in IE7。 - 使用
display: table
和display: table-cell
屬性 - http://jsfiddle.net/Ppk3p/2/。有時候這種方法很整齊,有時候不行。請注意,與提供的其他示例相反,子單元格寬度存在問題。任何方式,將無法在IE7中工作。 使用
display: box
- http://jsfiddle.net/9Phgg/9/ - 這是處理事情最性感的方式,但正如我們所知,規範並非100%完成。而且,Opera不支持彈出框。是的,當然,甚至不要考慮在IE7中嘗試這樣的事情。我的問題是:「關於上述所有方法在IE7中都會失敗的事實,在所有現代瀏覽器中垂直居中元素的最常用,最優雅,最簡單,最正確的方法是什麼?」IE7?「。我有一種強烈的感覺,即使是2012年,使用表格佈局仍然是答案。我見過一些奇特的方法,例如使用
position: absolute
甚至是javascript表達式,但是這遠非優雅和簡單。
經驗豐富的HTML開發人員,糾正我,如果我錯了。
UPD: 其實,還有一個辦法,但我覺得它根本錯誤和unsuable的原因有很多。但值得一提的是。默認情況下,按鈕中的任何內容都是垂直居中的,所以請看 - http://jsfiddle.net/s5nz4/3/。這將工作在IE7,但我們都是成年人在這裏,我希望,瞭解這是不恰當的)))
如果你想支持IE7,你不能有「優雅和簡單「;這是如此簡單:http://jsfiddle.net/EjV4V/4/ –
@IvanCastellanos粉紅色的盒子應該是positon:absolute;在那裏,但這依賴於知道對象的確切寬度和高度。如果你不知道元素的高度,你可以使用一個簡單的JS函數來獲取它,然後從那裏你可以設置負邊距來抵消塊。 – Chad
@Ivan你的解決方案不適用於鉻 –