javascript控制滚动条的位置,获取控件的位置

一.如下是定位鼠标在视窗中的位置,先定位视窗和页面直接的距离。   

   function getMousePoint()
       {
          var point = {x:0,y:0};
          
          // 如果浏览器支持 pageYOffset, 通过 pageXOffset 和 pageYOffset 获取页面和视窗之间的距离
          if(typeof window.pageYOffset != 'undefined') {
              point.x = window.pageXOffset;
              point.y = window.pageYOffset;
          }
          // 如果浏览器支持 compatMode, 并且指定了 DOCTYPE, 通过 documentElement 获取滚动距离作为页面和视窗间的距离
          // IE 中, 当页面指定 DOCTYPE, compatMode 的值是 CSS1Compat, 否则 compatMode 的值是 BackCompat
          else if(typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') {
              point.x = document.documentElement.scrollLeft;
              point.y = document.documentElement.scrollTop;
          }
          // 如果浏览器支持 document.body, 可以通过 document.body 来获取滚动高度,如果是在ifram里面,用document.body可以获取iframe中滚动条的位置。

          else if(typeof document.body != 'undefined') {
              point.x = document.body.scrollLeft;
              point.y = document.body.scrollTop;
          }
          // 加上鼠标在视窗中的位置
          var event=window.event?window.event:evt;
          point.x += event.clientX;
          point.y += event.clientY;
          
          // 返回鼠标在视窗中的位置
          return point;
       }      

 

二. js获取控件位置

 
 
  1. //获取坐标位置  
  2. function getpos(e) {  
  3.     var t=e.offsetTop;  
  4.     var l=e.offsetLeft;  
  5.     var height=e.offsetHeight;  
  6.     while(e=e.offsetParent) {  
  7.         t+=e.offsetTop;  
  8.         l+=e.offsetLeft;  
  9.     }  
  10. }  
假设 obj 为某个 HTML 控件。 obj.offsetTop 指 obj 距离上方或上层控件的位置,整型,单位像素。 obj.offsetLeft 指 obj 距离左方或上层控件的位置,整型,单位像素。 obj.offsetWidth 指 obj 控件自身的宽度,整型,单位像素。obj.offsetHeight 指 obj 控件自身的高度,整型,单位像素。
我们对前面提到的“上方或上层”与“左方或上层”控件作个说明。
例如:
 
  • <div id="tool">  
  •     <input type="button" value="提交">  
  •     <input type="button" value="重置">  
  • </div>  
 
提交”按钮的 offsetTop 指“提交”按钮距“tool”层上边框的距离,因为距其上边最近的是 “tool” 层的上边框。
“重置”按钮的 offsetTop 指“重置”按钮距“tool”层上边框的距离,因为距其上边最近的是 “tool” 层的上边框。

“提交”按钮的 offsetLeft 指“提交”按钮距“tool”层左边框的距离,因为距其左边最近的是 “tool” 层的左边框。
“重置”按钮的 offsetLeft 指“重置”按钮距“提交”按钮右边框的距离,因为距其左边最近的是“提交”按钮的右边框。
 


offsetTop 可以获得 HTML 元素距离上方或外层元素的位置,style.top 也是可以的,二者的区别是:

一、offsetTop 返回的是数字,而 style.top 返回的是字符串,除了数字外还带有单位:px。
二、offsetTop 只读,而 style.top 可读写。
三、如果没有给 HTML 元素指定过 top 样式,则 style.top 返回的是空字符串。

offsetLeft 与 style.left、offsetWidth 与 style.width、offsetHeight 与 style.height 也是同样道理。
 

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