.infobar {background:#fff9e3;border:1px solid #fadc80;color:#743e04;margin-bottom:10px;padding:8px 20px 4px 20px; font-size:12px;}<div id="PostPanel" style="position:absolute;top:0px;left:0px; width:300px; z-index:999;padding:6px 2px 6px 10px;border:1px solid #fb7;display:none;" class="infobar">
<div style="padding:3px 0 0 0;"><a href="#">房屋出租</a> <a href="#">房屋求租</a> <a href="#">商铺出租</a>
<a href="#">商铺转让</a> <a href="#">其他</a> <a href="javascript:void(0)" onClick="$('PostPanel').style.display = 'none';">关闭</a></div><h4><div id="hpanel"><a href="#">发布租房消息</a></div></h4>function $$(id){return document.getElementById(id);}
document.onclick = function(evt){//在不是连接的位置单击时,隐藏 显示的层
var _target = evt ? evt.target : event.srcElement ;
var _id = _target.id;
if( _id == "" ){
_id = _target.tagName;
}
if( _id !="A"){
$$("PostPanel").style.display = 'none';
}
}
window.onload=function(){//网页载入时,绑定指定对象下的所有a
var xx=$$("hpanel");
var xxx = xx.getElementsByTagName("a");
for(var i=0,j=xxx.length; i<j; i++){
xxx[i].onclick=function(evt){
var _event = evt ? evt : window.event;
var _target = evt ? evt.target : window.event.srcElement;
var _p = $$("PostPanel");
_p.style.top = _event.clientY + document.body.scrollTop ;
_p.style.left = ( _event.clientX + document.body.scrollLeft < 160 ? _event.clientX + document.body.scrollLeft + 10 : _event.clientX + document.body.scrollLeft - 120 );
$$("PostPanel").style.display = '';
return false;
}
}
}为什么我点击“发布租房消息”弹出的层第一次在链接附近,滚动屏幕后,弹出的层就跑到屏幕上方了呢?在FF下,层在屏幕左上角。请问怎么样才能使弹出得层能自己自动在点击位置的左右呢?(如果右边到头了就显示在点击位置的左边)
取元素坐标,如元素或其上层元素设置position relative,应该getPosition(子元素).y-getPosition(父元素).y
参数:DOM元素
返回值:{x:value,y:value}(如果右边到头了就显示在点击位置的左边),这个你就需要通过显示位置x和弹出层的宽度进行比较。