JS获取DOM元素位置与大小

每一个HTML元素都有以下属性

offsetWidthoffsetHeightoffsetLeftoffsetTop
clientWidthclientHeight  
scrollWidthscrollHeightscrollLeftscrollTop

1. 偏移量(offsetHeight offsetWidth offsetLeft offsetTop)

offsetHeight/offsetWidth: 表述元素的外尺寸:元素内容+内边距+边框(不包括外边距)

offsetLeft/offsetTop: 表示该元素的左上角(边框外边缘)与已定位的父容器(offsetParent对象)左上角的距离。

offsetParent元素是指元素最近的定位(relative,absolute)祖先元素,可递归上溯。

/**
 * 获取元素在页面中的坐标(x, y) 
 * @param {Object} e
 */
function getElementPosition(e) {
    var x = 0, y = 0;
    while(e != null) {
        x += e.offsetLeft;
        y += e.offsetTop;
        e = e.offsetParent;
    }
    return { x: x, y: y };
}

2. 客户区大小(clientWidth clientHeight)

clientWidth/clientHeight: 用于描述元素的内尺寸:元素内容+两边内边距

innerWidth/innerHeight

常用于获取视口的高宽

/**
 * 获取视口的大小
 * 用法:
 * var viewport = getViewportSize();
 * viewport.width/viewport.height 
 * @param {Object} w
 */
function getViewportSize(w) {
    var w = w || window;
    if(w.innerHeight != null) {
        return { w: w.innerWidth, h: w.innerHeight };
    }
    var d = w.document;
    if(document.compatMode == 'CSS1Compat') {    //标准模式
        return { 
width: d.documentElement.clientWidth, 
height: d.documentElement.clientHeight 
};
    }
    return { w: d.body.clientWidth, h: d.body.clientHeight };
}

3. 滚动大小(scrollHeight scrollWidth scrollLeft scrollTop)

scrollHeight/scrollWidth: 元素内容的总高度或宽度

scrollLeft/scrollTop:是指元素滚动条位置,它们是可写的(被隐藏的内容区域左侧/上方的像素)

浏览器窗口的滚动条位置:window对象的pageXoffset和pageYoffset, IE 8及更早版本可以通过scrollLeft和scrollTop属性获得滚动条位置

/**
 * 获取滚动长度
 * 滚动条向下滚动被隐藏的页面长度
 * 通用的scrollLeft和scrollTop 
 * @param {Object} w
 */
function getScrollOffset(w) {
    var w = w || window;
    //Firefox
    if(w.pageXOffset != null) {
        return { x: w.pageXOffset, y: w.pageYOffset };
    }
    var d = w.document;
    if(document.compatMode == 'CSS1Compat') {    //标准模式
        return { 
x: d.documentElement.scrollLeft, 
y: d.documentElement.scrollTop 
};
    }
    //
    return { x: d.body.scrollLeft, y: d.body.scrollTop };
}

小结:

注意:这些属性都是很多是只读的,每次访问它们都需要重新计算

整个页面的高度:document.documentElement.scrollHeight

内容区上面被隐藏的页面高度: window.pageYOffset/document.documentElement.scrollTop

element.offsetHeight = element.clientHeight + borderLeft-width*2

参考:http://www.cnblogs.com/dolphinX/archive/2012/11/19/2777756.html
HTML DOCUMENT窗口的尺寸和位置

 

转载于:https://www.cnblogs.com/mackxu/archive/2012/12/29/html_window_dimension_position.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值