2013-03-13 95 views
2

我試圖在沒有固定/指定高度的DIV中垂直居中圖像。我試過建立在Centering in the unknown article on CSS Tricks上,但爲了工作,你需要指定高度。而不是欺騙文章標題。垂直居中未知高度

這裏是我的JS小提琴:http://jsfiddle.net/6J2WA/

這是想什麼我(圖片):http://cl.ly/image/1k0h262c2c3s

CSS

/* This parent can be any width and height */ 
.block { 
    text-align: center; 
} 

/* The ghost, nudged to maintain perfect centering */ 
.block:before { 
    content: ''; 
    display: inline-block; 
    height: 100%; 
    vertical-align: middle; 
    margin-right: -0.25em; /* Adjusts for spacing */ 
} 

/* The element to be centered, can 
also be of any width and height */ 
.centered { 
    display: inline-block; 
    vertical-align: middle; 
} 


.inner { 
max-width: 960px; 
margin: 0 auto; 
overflow: hidden; 
    background: #ef4; 
} 

.c-3 { 
width: 29.3%; 
float: left; 
margin-left: 6%; 
    background: #e4f; 
} 

#you-and-us .c-3 { width: 33.5%; } 
#you-and-us .c-3:first-child { text-align: right; margin: 0; } 
#you-and-us .c-3:nth-child(2) { width: 21%; text-align: center; position: relative; } 
+1

http://stackoverflow.com/questions/14123999/center-a-div-horizo​​ntally-and-vertically – isherwood 2013-03-13 17:15:16

+0

你真的想在中間的圖像由粉紅色包圍框? – cimmanon 2013-03-13 17:36:54

+0

@cimmanon它只是爲了說明的目的。 – egr103 2013-03-13 18:08:41

回答

3

你不能使用僞元素的原因技巧是因爲你沒有足夠的祖先元素,其元素的高度是100%的高度。

如果您拋出浮標並將display: table-cell用於您的.c-3元素,則可以簡化整個工作。

http://jsfiddle.net/6J2WA/5/

/* This parent can be any width and height */ 
.block { 
    text-align: center; 
} 

.inner { 
    max-width: 960px; 
    margin: 0 auto; 
    overflow: hidden; 
    background: #ef4; 
} 

.c-3 { 
    display: table-cell; 
    background: #e4f; 
} 

#you-and-us .c-3 { width: 33.5%; } 
#you-and-us .c-3:first-child { text-align: right; } 
#you-and-us .c-3:nth-child(2) { width: 21%; text-align: center; position: relative; background: yellow; vertical-align: middle; } 
+0

謝謝你的工作,但是當我用媒體查詢引入一個斷點時,基本上將這3列彼此重疊並留下一個浮點數。當我讓瀏覽器變大時,我收到了一些奇怪的結果,請參閱:http://cl.ly/image/0g3a2e0O1x2e任何想法如何解決這個問題? – egr103 2013-03-13 18:16:23

+0

真的,這段代碼應該在限制它到更大視口的媒體查詢中(請參閱:* mobile first *)。對於較小的視口,您希望發生什麼? – cimmanon 2013-03-13 19:28:27

+0

此代碼是三列布局,但我也有1,2和4列布局。基本上用較小的視口,他們只是堆成一列。我首先熟悉手機並瞭解您的觀點,但我如何解決目前我遇到的問題? – egr103 2013-03-13 19:59:51