我现在在做弹出层,目前是做到支持随鼠标移动而移动这步了。
当鼠标滚动时。
window.onscroll=function(){
var x=x;
var y=y;
x 和 y分别是我弹出层初始化时距离屏幕的左边和顶边距离。  现在我要怎么算滚动之后它离屏幕的左边和顶边距离。
var obj =document.getElementsByTagName("mydiv");
obj.style.left=x+???????
obj.style.top=y+???????     //这个算法弄头昏了。不知道咋算了,高手救命。
}

解决方案 »

  1.   

    看看这个例子页面尺寸:网页可见区域宽:document.body.clientWidth 
    网页可见区域高:document.body.clientHeight 
    网页可见区域宽:document.body.offsetWidth (包括边线的宽) 
    网页可见区域高:document.body.offsetHeight (包括边线的宽) 
    网页正文全文宽:document.body.scrollWidth 
    网页正文全文高:document.body.scrollHeight 
    网页被卷去的高:document.body.scrollTop 
    网页被卷去的左:document.body.scrollLeft 
    网页正文部分上:window.screenTop 
    网页正文部分左:window.screenLeft 
    屏幕分辨率的高:window.screen.height 
    屏幕分辨率的宽:window.screen.width 
    屏幕可用工作区高度:window.screen.availHeight 
    屏幕可用工作区宽度:window.screen.availWidthHTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth 
    scrollHeight: 获取对象的滚动高度。 
    scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 
    scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离 
    scrollWidth:获取对象的滚动宽度 
    offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度 
    offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置 
    offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置 
    event.clientX 相对文档的水平座标 
    event.clientY 相对文档的垂直座标 
    event.offsetX 相对容器的水平坐标 
    event.offsetY 相对容器的垂直坐标 
    document.documentElement.scrollTop 垂直方向滚动的值 
    event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量IE,FireFox 差异如下:IE6.0、FF1.06+: 
    clientWidth = width + padding 
    clientHeight = height + padding 
    offsetWidth = width + padding + border 
    offsetHeight = height + padding + border 
    IE5.0/5.5: 
    clientWidth = width – border 
    clientHeight = height – border 
    offsetWidth = width 
    offsetHeight = height 
    (需要提一下:CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)———————————————对于firefox有个兼容性问题。如果想设置整个网页的页面宽度用一个层遮罩住的话,要这样处理function browserWidth() { 
       if (self.innerWidth) { 
    return self.innerWidth; 
       } else{ 
    return document.body.clientWidth; 
       } 
       return 800; 
    }var ht=browserHeight()+10+"px"; 
    document.getElementById("v_full_screen").style.position="absolute"; 
    document.getElementById("v_full_screen").style.left="0px"; 
    document.getElementById("v_full_screen").style.top="0px";   
    document.getElementById("v_full_screen").style.width=wd; 
    var scht=document.body.scrollHeight+"px"; 
    document.getElementById("v_full_screen").style.height=scht; 
    document.getElementById("v_full_screen").style.background="#000033";这样处理后页面的整个高度和宽度就是你浏览整个页面的高度和宽度=====================在我本地测试当中:在IE、FireFox、Opera下都可以使用document.body.clientWidthdocument.body.clientHeight即可获得,很简单,很方便。而在公司项目当中:Opera仍然使用document.body.clientWidthdocument.body.clientHeight可是IE和FireFox则使用document.documentElement.clientWidthdocument.documentElement.clientHeight原来是W3C的标准在作怪啊http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">如果在页面中添加这行标记的话在IE中:document.body.clientWidth ==> BODY对象宽度document.body.clientHeight ==> BODY对象高度document.documentElement.clientWidth ==> 可见区域宽度document.documentElement.clientHeight ==> 可见区域高度在FireFox中:document.body.clientWidth ==> BODY对象宽度document.body.clientHeight ==> BODY对象高度document.documentElement.clientWidth ==> 可见区域宽度document.documentElement.clientHeight ==> 可见区域高度?在Opera中: document.body.clientWidth ==> 可见区域宽度document.body.clientHeight ==> 可见区域高度document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高)而如果没有定义W3C的标准,则IE为:document.documentElement.clientWidth ==> 0document.documentElement.clientHeight ==> 0FireFox为:document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高)Opera为:document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高)