2012-07-20 91 views
0

我有一個「maincontent」div,它包含我的內容。有一些JavaScript(Fancybox)在其中顯示圖像。我試圖讓div的高度自動更改以配合其中的任何內容,以便div本身不滾動,但是整個網頁都可以。如何爲包含的內容製作div調整高度?

這裏有一個網頁,我想修復:http://willryan.us/content/photo.html

我試着用最小的高度,高度搞亂:汽車,溢出:汽車,等等,沒有結果。高度:自動充當思想文本是div中唯一的東西,就像完全忽略javascript圖像一樣。

這裏是我的CSS,因爲它是現在:

div#content { 
overflow:auto; 
width:958px; 
height: 800px; 
position:absolute; 
top:50px; 
left:0px; 
background-color:#C0CACE; 

border:1px solid; 
border-color:#616161; 

-webkit-box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 1); 
box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 1); 
z-index:1; 

}

回答

0

你的問題在於使用絕對定位。對於常規文檔流使用靜態定位(默認),您不會遇到此問題。

UPDATE

你也不使用相對定位。

常規文檔流程(沒有明確指定它)是position: static;您使用絕對。絕對定位基本上將元素從文檔的常規流程中取出,並將其放置在距離它最近的相對位置的父級。

你應該怎麼做... 如果你需要你的包裝位於「中心」。將「包裝」設置爲positon:relativemargin: 0px auto;並從所有內部元素中移除絕對位置。如果你需要在包裝器中使用padding/margin縮進元素。

+0

對不起,但我只用絕對定位在我的代碼(這不是很多)。你是說我應該使用相對定位? – 2012-07-20 16:06:07

+0

我會更新我的答案.. – 2012-07-20 16:10:04

+0

謝謝,我會嘗試。填充和邊距有沒有區別? – 2012-07-20 16:19:42

0

這個問題與photobox div有關,如果你關閉絕對位置,它可以工作到它的高度,關閉高度,它適合。

如果您不需要絕對定位,則可以避免此問題。

你應該使用相對定位來重建你的頁面。考慮到你只需要將你正在使用的div與text-align:center;放在父母身上,應該很容易。

+0

可能是一個愚蠢的問題,但將tex-align:center;對齊那些不是文本的東西? – 2012-07-20 16:16:23

+0

@WillRyan Event_Horizo​​n的聲明和小提琴示例不正確。單詞「測試」是一個文本節點,因此居中!只有內聯元素將居中,而不是像DIV標籤這樣的塊元素。在內部div上設置例如50px的寬度,它將不再居中。 – 2012-07-20 16:34:48

+0

@WillRyan @PeterPajchl是對的,我犯了我的匆忙。要中心塊元素最簡單的方法是使用'margin:0 auto':http://jsfiddle.net/cNdNg/1/ – 2012-07-20 17:13:57

0

我會建議你 使用 position: relative 不要在你的maincontent孩子中使用position:absolute。你在這裏並不需要絕對。

  1. 刪除#content高度(或使用最小高度)
  2. 刪除#photobox高度(或使用最小高度)如果需要的話
  3. 刪除#content溢出
  4. 設置所有#content孩子的位置相對(使用餘量)

div#header { 
    background-image:url(content/assets/elements/header.png);backround-repeat:none; 
    width:960px; 
    height:50px; 
    z-index:2; 
    -webkit-border-radius: 10px 10px 0px 0px; 
    border-radius: 10px 10px 0px 0px; 
    -webkit-box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 1); 
    box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 1); 
} 

div#footer { 
    background-image:url(content/assets/elements/footer.png); 
    backround-repeat:none; 
    width:960px; 
    height:50px; 
    z-index:2; 
    -webkit-border-radius: 0px 0px 10px 10px; 
    border-radius: 0px 0px 10px 10px; 
    -webkit-box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 1); 
    box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 1); 
} 

div#content { 
    width:958px; 
    background-color:#C0CACE; 
    border:1px solid; 
    border-color:#616161; 
    -webkit-box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 1); 
    box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 1); 
    z-index:1; 
    overflow: visible; 
} 

div#photobox { 
    width: 769px; 
    margin-left: 95.5px; 
} 
+0

沒有必要在每個元素上添加「width」屬性。只有主包裝器需要寬度,所有的孩子都應該相應地迴流100%,或者使用填充/邊距來修改內部佈局。溢出:可見已過時,因爲它是溢出的默認值。 – 2012-07-20 16:08:36

+0

謝謝!我會放棄這一點。你沒有在代碼中,但是我需要在某處放置「position:relative」嗎?其實我只是意識到,所有這些元素(頁眉,頁腳,內容,photobox)都不包含在div中。我應該把它們放在一個主要div中,並且具有相對於該div的位置嗎? – 2012-07-20 16:10:39

+0

在這裏你不需要任何'position:relative'。當有些孩子處於「絕對」狀態時,你只需要一個。 – zessx 2012-07-20 16:33:55

相關問題