2013-10-28 75 views
3

所以這個問題已經出現,現在已經解決了大概1000次(Scroll part of content in fixed position container,child div height 100% inside position: fixed div + overflow auto),但我似乎無法讓我的CSS行爲。固定位置div的CSS溢出問題

我想創建一個具有可滾動內部的彈出式div。我有一個應該覆蓋整個窗口的深灰色div,並且居中在窗口中應該是綠色div。內部div需要有一個邊距,並根據其內容進行尺寸調整,除非內容太大,然後需要滾動條。

我無法使滾動工作。我試過指定最大寬度/高度,但這些似乎被忽略。

HTML:

<div class='PopupPanelBG'> 
    <div class='PopupPanel'> 
     <div> 
      <div style='width: 1000px;'>some stuff that is really big</div> 
     </div> 
    </div> 
</div 

CSS:

.PopupPanelBG { 
    display: table; 
    background: rgba(0, 0, 0, 0.7); 
    position: fixed; 
    left: 0; 
    top: 0; 
    width: 100%; 
    height: 100%; 
    z-index: 1000; 
    overflow: hidden; 
} 

.PopupPanel { 
    display: table-cell; 
    vertical-align: middle; 
    text-align: center; 
    position: relative; 
    overflow: hidden; 
} 

.PopupPanel>div { 
    display: inline-block; 
    vertical-align: middle; 
    text-align: center; 
    opacity: 0.9; 
    background-color: #e1efbb; 
    border: 1px solid gray; 
    padding: 8px; 
    margin: 30px; 
    overflow : auto; 
} 

http://jsfiddle.net/QbmdK/

+0

你在找這樣的事嗎? X可以溢出,但Y不能? http://jsfiddle.net/Agony/QbmdK/23/ – usernolongerregistered

+0

因此,將最大寬度/高度設置爲固定像素值似乎可行。爲什麼我不能將它設置爲%? I.E.使內部div不大於屏幕的95%? – mjr

+1

值'%'使div大到100%,而不是屏幕。屏幕是相對的,如果需要的話,瀏覽器會創建一個溢出x欄。使div本身100%適合內部文本,而不是其他方式。 – usernolongerregistered

回答

1

你擺弄過多與顯示性能和你沒有定義MAX-寬度。類似這樣的作品:

.PopupPanelBG { 
    display: table; 
    background: rgba(0, 0, 0, 0.7); 
    position: fixed; 
    left: 0; 
    top: 0; 
    width: 100%; 
    height: 100%; 
    z-index: 1000; 
    overflow: hidden; 
} 

.PopupPanel { 
    display: table-cell; 
    vertical-align: middle; 
    /*text-align: center;*/ 
    position: relative; 
} 

.PopupPanel>div { 
    /*display: inline-block;*/ 
    /*vertical-align: middle;*/ 
    text-align: center; 
    opacity: 0.9; 
    background-color: #e1efbb; 
    border: 1px solid gray; 
    padding: 8px; 
    margin: 30px auto; 
    overflow : auto; 
    max-width: 50%; 
} 
+0

修復了滾動。謝謝。它確實消除了我的垂直居中。任何想法如何讓它回來? – mjr

+0

對,你的問題並不清楚。你需要額外的div來完成這個工作。編輯答案,不完美,但接近。 – aross

+0

從你的答案中獲得的關鍵是我正在使用的內聯塊是什麼在殺死滾動。感謝您指出顯示屬性是導致問題的原因。 – mjr

2

所以...這種方法(百分比)。

http://jsfiddle.net/Agony/QbmdK/34/

(現在用垂直對齊!)

要注意的一點是,包裹div有一套max-width:50%innerdivmax-width:100%。這對於任何數量的數據都適用。

+0

不是垂直居中,就像我的初始答案。 – aross

+0

等等......如果有'overflow-x'和'white-space:nowrap'在那裏,你爲什麼需要垂直居中......? – usernolongerregistered

+0

我在這個問題中沒有看到任何nowrap? – aross