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 相关文章推荐
Javascript base64编码实现代码
Dec 02 Javascript
5个最佳的Javascript日期处理类库分享
Apr 15 Javascript
动态加载jQuery的方法
Jun 16 Javascript
JavaScript实现复制文章自动添加版权
Aug 02 Javascript
AngularJS入门教程之AngularJS 模板
Aug 18 Javascript
JS设置时间无效问题的解决办法
Feb 18 Javascript
angular bootstrap timepicker TypeError提示怎么办
Jun 13 Javascript
你可能不知道的前端算法之文字避让(inMap)
Jan 12 Javascript
Angular路由ui-router配置详解
Aug 01 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
Aug 20 Javascript
vscode 开发Vue项目的方法步骤
Nov 25 Javascript
JavaScript中展开运算符及应用的实例代码
Jan 14 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
网站当前的在线人数
2006/10/09 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
php中文验证码实现方法
2015/06/18 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
Span元素的width属性无效果原因及解决方案
2010/01/15 Javascript
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
python实现黑客字幕雨效果
2018/06/21 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
英国创新设计文具、卡片和礼品包装网站:Paperchase
2018/07/14 全球购物
中学教师自我鉴定
2014/02/07 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
公司董事任命书
2015/09/21 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android