2013-07-04 33 views
1

我想中心對齊一個div(cen),其是另一種格內(imp如何居中對齊窗口大小的框?

下面是代碼示例

.imp 
{ 
     width:100%; 
     height:100%; 
     background-color: black; 
     position: fixed; 
     top:0; 
     bottom:0; 
} 

上方現在主要的div這應該是中心在div被下面

.cen 
    { 
    margin-left:auto; 
    margin-right:auto; 
    padding:5px; 
    width:auto; 
    height:auto; 

    } 

這裏給出的是我的問題如何使.cen瀏覽器的中間? 有餘裕:自動;保證金右:自動;帶到中心但不是頂端。我已經給出了50%的頂部,剩下50%,然後我也無法對齊它的中心,因爲.cen裏面的內容更大,所以它出現在窗口的右下角。任何線索或想法?

+1

所以你要垂直居中呢? – hungerstar

+0

@ hungerstar是 – sun

+0

你是否也想要水平居中呢? – hungerstar

回答

2

由於這需要響應,它只能使用Javascript來實現。

var cen = document.getElementsByClassName('cen')[0]; 
var imp = document.getElementsByClassName('imp')[0]; 
cen.style.marginTop = ((imp.offsetHeight/2) - (cen.offsetHeight/2)) + "px"; 

呼叫均resizeload事件上述功能。

Working Fiddle

此外,檢查Calc CSS3屬性。如果您知道子元素的高度,將會有所幫助。

+0

對於我的好奇心,它工作正常,但是當您重新調整瀏覽器窗口的大小,它會再次失去其對齊,直到刷新頁面。那麼在瀏覽器重新調整大小的情況下,是否有可能獲得相同的對齊? – Nitesh

+0

@NathanLee是的,我只是更新了小提琴。 –

+0

是的。現在它工作得很好。從我+1。 – Nitesh

2

下面是一個CSS解決方案。您需要將您的.imp div封裝在具有窗口高度100%的另一個div中。

主要這裏關鍵是table用於外層的div .imptable-cell用於內的div .cenvertical-align: middle沿display值。

CSS

* { 
    margin: 0; 
} 
html, body, #wrapper { 
    height: 100%; 
} 
#wrapper { 
    background-color: red; 
    display: table; 
    width: 100%; } 
.imp { 
    min-height: 100%; 
    background-color: blue; 
    display: table-cell; 
    vertical-align: middle; 
} 
.cen { 
    background-color: orange; 
} 

HTML

<div id="wrapper"> 
    <div class="imp"> 
     <div class="cen">.cen</div> 
    </div> 
</div> 
+0

謝謝你的努力。工作很好。我upvoted.could你解釋我一下,讓我能夠理解和使用的技術,每當我需要:) – sun

+0

我們正在做的是告訴'divs'表現得像一個表。實際的表格單元格,''​​垂直對齊項目默認情況下,中間用inhereting高度(其中發生了一些方法)一起。 在這種情況下你的'。由於'min-height'(它可能不是瀏覽器窗口的全部高度),因此imp' div將是它的父元素的100%高度,並且將表現得像'

'因爲我們將它的'display'屬性設置爲' table'。你的'.cen' div然後被告知像'​​'一樣行事。爲了讓'display:table-cell'工作,它的父元素需要'display:table'。 – hungerstar

相關問題