我使用的是旧的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