开发过程中经常会遇到 获取元素到屏幕左上角的距离, 当我们使用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,

}

(.)

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

  1. html 原生弹出框,html、css和js原生写一个模态弹出框,顺便解决父元素半透明子元素不透明效果...

    模态框: html部分: 弹出框 hhhhh 取消 确认 css部分: #box{ width: 80px; height: 40px; background: #fd7430; border:non ...

  2. html、css和js原生写一个模态弹出框,顺便解决父元素半透明子元素不透明效果...

    模态框: html部分: <!-- 按钮 --><button id="box" onclick="pop_box()">弹出框< ...

  3. php获取一个文件名的函数,PHP 文件系统函数之获取文件名及文件名后缀-php文件...

    获取文件名(包含扩展): 1.用PHP 文件函数 basename获取 例: $filename = "/home/httpd/html/index.php"; $file = b ...

  4. 怎么获取一个类型的所有字段的名字 和获取给予数据相应的值

    下面的代码你只要注意  怎么样获取字段名和相应数据的值就OK了其它的就不要管 View Code public FlexiGridData GetFlexiGridData<T>(Page ...

  5. angularjs获取上一个元素的id_DOM(1)-DOM概念和获取元素

    1. 概念 JavaScript共有三部分组成:ECMAScript.DOM.BOM,其中DOM和BOM成为Web API,可以被包括ECMAScript在内的Web编程语言使用,现在就来开始学习DO ...

  6. 微信小程序根据wx.getSystemInfo获取屏幕尺寸,并动态改变元素宽高尺寸,示例

    通过js获取屏幕尺寸,并改变元素尺寸 效果图 index.wxml <view class="body-view" style="width:{{wWidth}}r ...

  7. php获取div高度,JS获取一个未知DIV高度的方法

    本文实例讲述了JS获取一个未知DIV高度的方法.分享给大家供大家参考,具体如下: 通过元素的clientHeight属性能够得到元素的高度,如:var height = element.clientH ...

  8. java map 随机取值_随机获取一个集合(List, Set)中的元素,随机获取一个Map中的key或value...

    利用Java提供的Random类.从List或Set中随机取出一个元素,从Map中随机获取一个key或value. 因为Set没有提供get(int index)方法,仅仅能先获取一个随机数后.利用一 ...

  9. js获取一个月份最大天数和获取月的最后一天

    代码如下: <html xmlns=http://www.w3.org/1999/xhtml >     <head>     <title>标题页</tit ...

最新文章

  1. R语言dplyr包as.tbl函数(转化为tibble类型)和is.tbl函数(检查数据是否为tibble类型)实战
  2. redis系列(一)-----日常使用详解
  3. java poi jar maven_使用maven引入Apache poi jar包
  4. Tkinter Learning:tkinter上实现视频流的播放(附源码)
  5. 北京招聘 | 百度智能生活事业群组小度科技招聘对话系统算法实习生、工程师...
  6. 类的加载连接和初始化
  7. Matplotlib(三) rcParams 自定义样式控制
  8. SAP UI5 Logon Handler of Frame
  9. 杭电计算机14年笔试真题
  10. 在 MAC下安装 Exuberant ctags
  11. python机器人仿真软件_RoboDK(机器人仿真软件)软件下载_RoboDK(机器人仿真软件)v4.2.3 官方版 - Windows10系统之家...
  12. .NetCore下使用NPOI绘制统计图表
  13. 学习单片机必须要学的八大知识点,你知道吗?
  14. Linux FTDI
  15. 近年创业目睹之怪现状
  16. owlBus 的uwp版本上架了
  17. 3917 【NOIP2014模拟11.2A组】福慧双修 (Standard IO)题解
  18. 基于机器学习技术的用户行为分析:当前模型和应用研究综述(A survey for user behavior analysis based on machine learning technique)
  19. matlab grayslice,MATLAB图像处理函数汇总大全(2)
  20. 电脑视频html5全屏掉帧,uwp看视频全屏掉帧或卡机怎么办-解决uwp看视频全屏掉帧或卡机的方法 - 河东软件园...

热门文章

  1. GLPI开源资产管理系统
  2. Java多线程1:进程与线程概述
  3. Java事务(转载)
  4. centos 彻底删除nodejs默认安装文件
  5. Paths on a Grid
  6. POJ1042 Gone Fishing
  7. 解决vue在ios或android中用webview打开H5链接时#号后面的参数被忽略问题angular同样适用
  8. Spark SQL中出现 CROSS JOIN 问题解决
  9. Android:如何将Enum放入捆绑包中?
  10. Frame Buster Buster ......需要buster代码