JavaScript与JQUERY获取元素的宽、高和位置


Posted in Javascript onFebruary 26, 2017

javascript中

ele.getBoundingClientRect():获取一个元素相对于浏览器视口的的坐标(无论父元素定位与否),返回一个Object对象,该对象有6个属性:top/left/right/bottom/width/height。几乎所有浏览器都支持该方法。jQuery中没有直接的方法,需要用$(ele).offset().top-$(document).scrollTop()计算得到。

注意:right是指元素右边界距窗口最左边的距离,bottom是指元素下边界距窗口最上面的距离。

pageYOffset 属性是scrollY属性的别名,设置或返回文档在垂直方向滚动的像素值。window.pageYOffset == window.scrollY;前者浏览器兼容性更好。

所以获取元素在页面文档中的位置:

var X= ele.getBoundingClientRect().left+scrollTop;

var Y =ele.getBoundingClientRect().top+scrollTop;
//在窗口的位置+文档滚动掉的尺寸

为了跨浏览器兼容,文档卷掉的长度请使用如下方式:

varscrollTop= document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

jQuery中

1.鼠标相对于页面的位置

event.pageX/event.pageY:鼠标相对于页面左/上边缘的距离。

2.元素的位置偏移量

offset():返回包含top和left两个属性的对象,相对于document文档的坐标。

position():返回包含top和left两个属性的对象,相对于最近的已定位的包含元素的位置。若无,则相对于document。只对可见元素有效,注意ele{visibility:hidden}也属于可见元素。

3.元素的宽高

width()/height():获得或设置元素【内容】的宽/高;若元素的display:none,其值为0。

innerWidth()/innerHeight():获得包括内边距(padding)的元素宽度/高度,不包括边框;

outerWidth()/outerHeight():获得包括内边距(padding)和边框(border)的元素宽度/高度;

outerWidth(true)/outerHeight(true):获得整个元素的宽度/高度,包括外边距、边框、内边距和内容;

JavaScript与JQUERY获取元素的宽、高和位置

注意:

1)ele.css("height"):返回带有完整单位的字符串(例如400px),若运算需要parseInt转换。ele.height():返回一个没有单位的number数值(例如400)。

2)height()总是返回内容宽度,不管CSS box-sizing属性值。若CSS box-sizing为border-box,将造成这个函数改变这个容器的outerHeight,而不仅是原来的内容高度。

4.浏览器相关宽高

$(window).height():获取浏览器可视窗口的高度;

$(document).height():获取整个网页文档的高度;当网页高度不足浏览器窗口时,返回的是$(window).height()。

$(document).scrollTop():document元素相对document元素对应的滚动条顶部的垂直偏移量,可获取已滚动的距离或设置将要滚动的距离。

即:当网页滚动条拉到最低端时,$(document).height() == $(window).height() + $(window).scrollTop()。

注意:不建议使用$("html").height()、$("body").height()这样的方法获取高度,原因有:

$("body").height():body可能会有边框,获取的高度会比$(document).height()小;

$("html").height():在不同的浏览器上获取的高度会有差异,浏览器不兼容。

$(window).height()若返回的不是浏览器窗口的高度,可能是网页没有加上<!DOCTYPE>声明。

Javascript 相关文章推荐
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
Aug 24 Javascript
js写一个弹出层并锁屏效果实现代码
Dec 07 Javascript
Node.js开发指南中的简单实例(mysql版)
Sep 17 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
Mar 11 Javascript
js中string和number类型互转换技巧(分享)
Nov 28 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
浅析vue数据绑定
Jan 17 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
Jun 28 Javascript
微信小程序之电影影评小程序制作代码
Aug 03 Javascript
vue移动端下拉刷新和上拉加载的实现代码
Sep 08 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
Apr 17 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
Oct 29 Javascript
JavaScript无阻塞加载和defer、async详解
Feb 26 #Javascript
浅谈JavaScript中的apply/call/bind和this的使用
Feb 26 #Javascript
JavaScript中Promise的使用详解
Feb 26 #Javascript
setTimeout函数的神奇使用
Feb 26 #Javascript
node.js入门学习之url模块
Feb 25 #Javascript
从零学习node.js之利用express搭建简易论坛(七)
Feb 25 #Javascript
从零学习node.js之express入门(六)
Feb 25 #Javascript
You might like
牡丹941资料
2021/03/01 无线电
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
Google 静态地图API实现代码
2010/11/19 Javascript
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
跟我学习javascript的作用域与作用域链
2015/11/19 Javascript
Javascript实现单例模式
2016/01/24 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
Python中unittest用法实例
2014/09/25 Python
python自动化测试之setUp与tearDown实例
2014/09/28 Python
Python中的super用法详解
2015/05/28 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
python difflib模块示例讲解
2017/09/13 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
Python迭代器与生成器基本用法分析
2018/07/26 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
PyTorch中的C++扩展实现
2020/04/02 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
活动邀请函范文
2014/01/19 职场文书
竞选部门副经理的自荐书范文
2014/02/11 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书