我遇到了一个奇怪的问题,也许有人可以帮忙。
页面上有多个img,每个定义为:
<td><a href="#" onclick="Show(\'div1\');return false;"><img src="img1" onmouseout="Hide(\'div1\');"></a></td>
当用户单击图像时,隐藏的 div 应该出现在页面中间,并在鼠标移出时消失。这是隐藏的 div:
<div id="div1" style="width:400px;height:220px;padding:8px;position:absolute;display:none;border:6px solid #CC6600;background-color:#FFDAB4">
一切正常,直到我开始上下滚动。在某些特定位置和滚动结束时,隐藏的 div 没有出现。有谁明白为什么?
这是javascript:
function Show (div)
{
var winW=630,winH=460,t,l;
if (document.body && document.body.offsetWidth) {
winW = document.body.offsetWidth;
winH = document.body.offsetHeight;
}
if (document.compatMode=='CSS1Compat' &&
document.documentElement &&
document.documentElement.offsetWidth ) {
winW = document.documentElement.offsetWidth;
winH = document.documentElement.offsetHeight;
}
if (window.innerWidth && window.innerHeight) {
winW = window.innerWidth;
winH = window.innerHeight;
}
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft;
t=winH/2-240/2+scrollTop;
l=winW/2-400/2+scrollLeft;
document.getElementById(div).style.top=t+"px";
document.getElementById(div).style.left=l+"px";
document.getElementById(div).style.display="block";
}
function Hide(div)
{
document.getElementById(div).style.display="none";
}
我刚刚意识到这不是 scrollTop 问题。Anchor inside div不占整个div,只占下部。奇怪的是光标在整个img上发生了变化,onclick在整个img上被调用,但隐藏的div只有在点击下部时才会显示。我试过 style="display:block" 没有任何成功。出于绝望,我输入了 style="opacity:0.9" 并且它确实有效!唯一的问题是隐藏的 div 显示在 img 后面(比如 z-index 低于 img)。我没有使用 z-index,因为隐藏的 div 是位置:绝对。 *还在寻找聪明人!!!