2016-09-02 120 views
0

我正試圖實現可滾動的div,其內容不會溢出頁腳後面。有一個側邊欄有一個搜索和下面的另一個隱藏的div,它顯示下面顯示的結果的過濾器選項。結果需要填充剩餘的高度並在沒有足夠空間時滾動。目前它溢出,所以我看不到底部結果,因爲它們被塞在頁腳後面。我很難得到結果div只填補剩餘的空間。滾動div高度溢出頁腳並被隱藏

HTML:

<div id="header"> 
header 
</div> 
    <div id="map-wrapper"> 
    <div id="map-sidebar"> 
     <div id="map-search"> 
     <input id="search" type="text" class="form-control" placeholder="Enter location" /> 
     <div id="filters"> 
      <input/> 
      <input/> 
      <input/> 
     </div> 
     </div> 
     <div id="map-results"> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
     </div> 
    </div>  
    <div id="map"></div> 
    </div> 
    <div id="footer"> 
    footer 
    </div> 

CSS:

div { 
    border: 1px solid red; 
} 

#map-wrapper { 
    position: fixed; 
    top: 60px; 
    bottom: 30px; 
    left: 0; 
    right: 0; 
    width: 100%; 
} 

#map { 
    position: absolute; 
    top: 0; 
    bottom: 0; 
    right: 0; 
    left: 250px; 
    background: blue; 
} 

#map-sidebar { 
    width: 250px; 
    height: 100%; 
} 

#map-search { 
    margin: 15px; 
} 

#map-results { 
    height: 100%; 
    overflow-y: scroll; 
    border: 1px solid purple; 
} 

#header { 
    height: 60px; 
    top:0; 
    left:0; 
    right:0; 
    position: fixed; 
    text-align: center; 
} 

#filters { 
    display: none; 
} 

#footer { 
    height: 30px; 
    bottom: 0; 
    left:0; 
    right:0; 
    position: fixed; 
    text-align: center; 
} 

的jsfiddle: https://jsfiddle.net/me6nceca/

感謝所有幫助

+0

你希望自己的滾動條?地圖的結果?嘗試給它一個固定的高度 – NtFreX

+0

在地圖結果正確。理想的高度需要是動態的,因爲有一個隱藏和顯示將影響地圖結果高度的過濾器div的按鈕。我可以用JavaScript做到這一點,但如果有一個CSS解決方案ID更喜歡這一點。 –

+0

如果你用一個固定的高度測試它,並且滾動條工作,那麼這是因爲元素dosn't沒有把它的大小正確地拼湊起來。可能是因爲它的大小設置爲100%,並不是它父項的唯一子元素。但也許還因爲元素'地圖包裝'沒有高度 – NtFreX

回答

0

使用此而不是在CSS的#map-results

其中元素
height: calc(100% - 60px); 
+0

這會起作用謝謝!當我顯示過濾器,我可以相應地調整div的高度,我需要用60px代替地圖搜索的高度。謝謝 –

0

您已設置的所有div的屬性有1 px堅實的紅色邊框。從你的主CSS中刪除,你會看到地圖 - 結果顯示全屏幕,沒有干擾。

如果你想在一些div的紅色邊框,創建一個類,如:

.redBorder { 
    border: 1px solid red; 
} 

,並把它添加到你想接壤的div。由於您已將地圖設置爲「left:250px;」,因此您還需要爲您的頁腳聲明該地圖,使其與地圖的寬度相同(因此不會與地圖結果重疊)。請參閱更新的提琴:https://jsfiddle.net/john_h/me6nceca/2/

此紅色邊框對您而言可能很重要,因此請將該類添加到所需的特定div。

CSS:

.redBorder { 
    border: 1px solid red; 
} 

#map-wrapper { 
    position: fixed; 
    top: 60px; 
    bottom: 30px; 
    left: 0; 
    right: 0; 
    width: 100%; 
} 

#map { 
    position: absolute; 
    top: 0; 
    bottom: 0; 
    right: 0; 
    left: 250px; 
    background: blue; 
} 

#map-sidebar { 
    width: 250px; 
    height: 100%; 
} 

#map-search { 
    margin: 15px; 
} 

#map-results { 
    height: 100%; 
    overflow-y: scroll; 
    border: 1px solid purple; 
} 

#header { 
    height: 60px; 
    top:0; 
    left:0; 
    right:0; 
    position: fixed; 
    text-align: center; 
} 

#filters { 
    display: none; 
} 

#footer { 
    height: 30px; 
    bottom: 0; 
    left: 250px; 
    right:0; 
    position: fixed; 
    text-align: center; 
    width: 63%; 
} 

HTML:無論你想在紅色邊框

<div id="header"> 
header 
</div> 
    <div id="map-wrapper"> 
    <div id="map-sidebar"> 
     <div id="map-search"> 
     <input id="search" type="text" class="form-control" placeholder="Enter location" /> 
     <div id="filters"> 
      <input/> 
      <input/> 
      <input/> 
     </div> 
     </div> 
     <div id="map-results"> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
      <p>content</p> 
     </div> 
    </div>  
    <div id="map"></div> 
    </div> 
    <div id="footer"> 
    footer 
    </div> 

只想補充一點,redBorder類。

+0

紅色邊框在那裏真正地表明我的問題。我仍然希望頁腳橫跨身體的整個寬度。我需要地圖結果來填充剩餘的空間。 –

+0

頁腳寬度應設置爲自動 – CodeNinji

+0

Adam,那麼您需要爲每個div設置一個高度。 –

0

嘗試更新的:

#map-results { 
    height: 80%; 
    overflow-y: scroll; 
    border: 1px solid purple; 
} 
+0

當頁面調整大小時,80%不會工作 –