2012-11-06 25 views
2

我發現我可以有一個或另一個,但似乎無法弄清楚兩者。垂直對齊div和正確的滾動溢出,這可能嗎?

我的HTML如下:

<div id="middle"> 
    <div id="middleinner"></div> 
</div> 

而CSS去有點像在頁面上別的東西設置這個(Z-指標,在這裏留下了,因爲它是不相關的,再加上有一些評論說出來的東西,我想弄清楚,我就跟着去了):

html, body{ 
     font-family: helvetica, sans-serif; 
     font-size: 1em; 
     height: 100%; 
     overflow: hidden; 
} 

#middle{ 
/*  display: table;*/ 
     display: table; 
     height: 80%; 
     width: 90%; 
/*  position: fixed;*/ 
     position: absolute; 
     top: 10%; 
     left: 5%; 
     right: 95%; 
     bottom: 90%; 
     color: #000; 
     z-index: 0; 
} 

#middleinner{ 
     padding: 0.5em 1em 0.5em 1em; 
     background-color: #F9F9F9; 
     display: table-cell; 
/*  display: inline-block;*/ 
     border-radius: 1.5em; 
     vertical-align: middle; 
/*  margin-left: auto; 
     margin-right: auto;*/ 
     text-align: center; 
/*  position: relative;*/ 
     position: absolute; 
     width: 100%; 
     height: 100%; 
     overflow: auto; 
     z-index: 20; 
} 

無論如何,如果我改變middleinner的位置相對的而不是絕對的,我得在適當的溢出處理成本垂直對齊方式。如果我把它設置爲絕對的,我會以垂直對齊爲代價獲得適當的溢出處理。

有沒有一種純CSS的方式可以處理這個問題?

+0

是:http://codepen.io/rafaelcastrocouto/pen/dFcAh – rafaelcastrocouto

回答

1

是的,組合line-height,inline-blockvertical-align可以做到這一點。

#middle { 
    width: 80%; 
    margin: 10px auto; 
    border: 1px dashed black; 
    height: 500px; 
    line-height: 500px; 
    vertical-align: middle; 
    text-align: center; 
} 
#inner { 
    height: 50px; 
    width: 80%; 
    overflow: auto; 
    display: inline-block; 
    line-height: 1.1em; 
} 

Demo

將它與動態元素的高度工作,你將不得不使用一些JavaScript,因爲你使用jQuery,我也有去。使用vanilla JS也是完全可能的。

resize = function(el) { 
    el.css({lineHeight: el.height() + "px"}) 
}; 
$(document).ready(function() { 
    var $middle = $("#middle"); 
    resize($middle); 
    $(window).on("resize", function() { 
     resize($middle); 
    }) 
}) 
+0

感謝您的。不過,我使用百分比,因爲中間div會根據用戶設置的屏幕大小來重新調整其高度。嘗試調整使用百分比提供的CSS似乎打破了它。我是否錯過了某些東西,還是有可能使用百分比? – Skyline969

+0

@ Skyline969:它不會爲我打破它,請參閱演示的更新版本。 –

+0

對於不夠清楚,我表示歉意。我的意思是我根據百分比設置高度,而不是固定大小,因爲它佔據了頁面的大部分,而與屏幕分辨率無關。在這裏,您已經根據百分比指定了寬度,這個百分比非常好,可以創造奇蹟,但高度基於百分比又如何?例如:將高度和線高設置爲90%,然後中斷。 – Skyline969