js怎么获取一个元素与屏幕右边的距离_js获取元素到屏幕左上角的距离

开发过程中经常会遇到 获取元素到屏幕左上角的距离, 当我们使用jQuery开发时,我们可以使用 $.offset()来获取准确的距离。

如果我们的项目中并没有引入jQuer的话,跟希望通过原生方法实现,此时我们使用 offetLeft/offetTop 或者clientLift/clientTop 其实都不能准确的获取这个距离,这个时候最好就是看看jQ怎么写的,为什么它就能够准确的获取到呢?这就要从$.offset() 源码看起了。

jQuery对于此功能的实现, 源码是这样写的:

jQuery.fn.offset = function( options ) {if( arguments.length ) {return options === undefined ?

this:this.each(function( i ) {

jQuery.offset.setOffset(this, options, i );

});

}vardocElem, win,

elem= this[ 0],

box= { top: 0, left: 0},

doc= elem &&elem.ownerDocument;if ( !doc ) {return;

}

docElem=doc.documentElement;//Make sure it's not a disconnected DOM node

if ( !jQuery.contains( docElem, elem ) ) {returnbox;

}//If we don't have gBCR, just use 0,0 rather than error

//BlackBerry 5, iOS 3 (original iPhone)

if ( typeof elem.getBoundingClientRect !==core_strundefined ) {

box=elem.getBoundingClientRect();

}

win=getWindow( doc );return{

top: box.top+ win.pageYOffset -docElem.clientTop,

left: box.left+ win.pageXOffset -docElem.clientLeft

};

};

可以看到,实现此功能的核心代码是: element.getBoundingClientRect 方法,

从名字上就可以看出,意思就是获取屏幕边界,与该元素相关的CSS 边框集合。

内容截图如下:

值得一提的是,该方法下 没有内容的边框会被忽略。

想要获取元素到屏幕左上角距离 可以使用如下方法

var div1 = document.getElementById('div1');var domRect ={

offsetLeft: div1.getBoundingClientRect().left,

offsetTop: div1.getBoundingClientRect().top,

}

(.)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值