2011-03-30 194 views
0

我要的div:父格擴展到兒童的div

<div id="outerContent"> 
    <div id="innerContent"> 
    </div> 
</div> 

innerContents的立場是絕對的(我需要它的方式對JavaScript動畫)。如何將outerContent擴展爲innerContents的高度,就好像innerContent不會被設置爲position:absolute一樣?

+0

你確定你不能使用'position:relative'嗎? – zzzzBov 2011-03-30 16:59:09

回答

0

兩件事情:

1)你應該能夠在innerdiv滑走,而不需要position:absolute;position:relative;應該足夠了。它的優點是仍然被認爲是在渲染流程中,正如aveic所稱的那樣。

my jsfiddle example

2)如果你想使用absolute,可以確保它僅與JS啓用它,因爲你正在使用JS反正進行動畫擰不任何東西。所以在JS中,只需要說$('#innerDiv').css({position: absolute});,而且你仍然不會放棄沒有啓用JS的人。

3

設置位置:絕對從文檔的渲染流程中移除元素的渲染。所以父元素對內部元素一無所知。

您可以使用javascript來同步它們的寬度。 那樣:

$('#outerContent').width($('#innerContent').width()); 

和高度一樣。

還有其他選擇。

<div id="outerContent"> 
    <div id="innerContent"></div> 
    <div id="innerContentDouble" style="visibility:hidden"></div> 
</div> 

innerContentDouble應該與innerContent具有相同的內容,但它不應該是position:absolute。所以父母的div將會擴展,但「visibility:hidden」的「doubled」div的內容將不會顯示。但它不是一個非常好的做法:)

+2

+1。請注意,第二種方法遠非完美,因爲當「重複」div放置在文檔流的「正常」位置時,與絕對定位時相比,它的大小可能不同。 – melkamo 2011-03-30 17:07:05

+0

你們忘了提及 – aveic 2011-03-30 17:09:10

+0

這個javascript對我不起作用,因爲我希望網站在javascript關閉的情況下降級得很漂亮。我不想用第二種方法 - 就像你說的那樣:這不是一個好習慣。我實際上想要實現的是將div動畫化,然後在屏幕上向左滑動,然後在jQuery放入一些新內容之後,再次從屏幕右側滑入。從我讀過的 - 只有當div完全定位時才能實現。任何其他想法? – donkapone 2011-03-30 19:41:15