我使用的是舊的CSS技巧來獲得一些內容的半透明背景的大小,而不會出現半透明的內容。這裏是HMTL:最好的辦法元素到另一個元素
<div id="frame">
<div id="opacityFrame">
</div>
<div id="contentFrame">
<div>
<!-- Main Site Content Here -->
</div>
</div>
</div>
下面是相應的CSS:
#frame
{
width: 90%;
margin: auto;
position: relative;
z-index: 0;
}
#opacityFrame
{
background: #00ff00;
opacity: .15;
top: 0;
left: 0;
position: absolute;
width: 100%;
height: 100%;
z-index: 1;
}
#contentFrame
{
top: 0;
left: 0;
position: absolute;
height: 100%;
width: 100%;
z-index: 1;
}
我的問題是,由於#frame
是位置:相對的,它的高度不與動態內容展開。 #opacityFrame
和#contentFrame
都被設置爲100%的高度和寬度,並且它們適當地擴展以填充#frame
,這很好。問題是,我需要#frame
的身高與#contentFrame
孩子DIV
的內容增長,因爲這DIV
的高度動態地放置在它的內容調整。
我最後不得不創建一個jQuery函數:
function resizeFrame()
{
$('#frame').height($('#contentFrame > div').height());
}
注:原因是有孩子的#contentFrame
DIV
是因爲#contentFrame
的身高總是讀零一些奇怪的原因。我假設它的position
是absolute
。
此代碼可以很好地將#frame
的高度調整爲#contentFrame
的子女身高DIV
。但是,我做了很多ajax來更改DIV
中的內容。一種解決方案是使用EVERY ajax事件調用resizeFrame()
,但它看起來很乏味。有沒有事件或者我可以綁定的東西會執行這個函數,而不需要我明確地調用它?我嘗試了以下事件,但他們似乎沒有工作;也許我做錯了。
$('#subFrame > div').resize()
$('#subFrame > div').change()
這些都不似乎當孩子DIV
的內容進行了修改,開火。任何幫助表示讚賞。也許我正在以這種錯誤的方式去做?我不想爲背景使用透明圖像。
「框架」也是一個標籤的名字,所以我建議不使用這個詞的一類,以避免在CSS文件中的混亂。 – 2011-03-16 02:07:35
框架不是一個類,它只是一個ID,通過'#'顯而易見。 – Chev 2011-03-16 03:43:16
作者很明顯,但對於必須在6個月內更新網站的人來說,這並不明顯。一般來說,不要爲類和ID名稱使用標籤名稱,這只是一個很好的經驗法則。 – 2011-03-16 13:48:29