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 相关文章推荐
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
Sep 22 Javascript
JavaScript 类似flash效果的立体图片浏览器
Feb 08 Javascript
JavaScript中的排序算法代码
Feb 22 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
May 07 Javascript
jQuery中closest和parents的区别分析
May 07 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
Nov 24 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
Jun 12 Javascript
js图片延迟加载(Lazyload)三种实现方式
Mar 01 Javascript
vue中锚点的三种方法
Jul 06 Javascript
nuxt.js中间件实现拦截权限判断的方法
Nov 21 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
May 14 jQuery
浅谈Vue的响应式原理
May 30 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
php生成WAP页面
2006/10/09 PHP
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
PHP的PDO连接讲解
2019/01/24 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
popdiv
2006/07/14 Javascript
JavaScript 快捷键设置实现代码
2009/03/13 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
javascript常用的设计模式
2017/02/09 Javascript
javascript回调函数的概念理解与用法分析
2017/05/27 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
python 随机数生成的代码的详细分析
2011/05/15 Python
python通过socket查询whois的方法
2015/07/18 Python
Python 中的with关键字使用详解
2016/09/11 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
python实现控制COM口的示例
2019/07/03 Python
Python学习笔记之函数的定义和作用域实例详解
2019/08/13 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
通过实例解析python and和or使用方法
2020/11/14 Python
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
优秀团干部个人事迹
2014/05/29 职场文书
初中班级口号
2014/06/09 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书