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 获取URL参数的插件
Mar 04 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
Dec 12 Javascript
jquery选择器大全 全面详解jquery选择器
Mar 06 Javascript
JavaScript 表单处理实现代码
Apr 13 Javascript
JS代码防止SQL注入的方法(超简单)
Apr 12 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
Feb 06 Javascript
JavaScript在控件上添加倒计时功能的实现代码
Jul 04 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
Sep 29 Javascript
jquery层次选择器的介绍
Jan 18 jQuery
vue中组件的3种使用方式详解
Mar 23 Javascript
Vue实现开心消消乐游戏算法
Oct 22 Javascript
一篇文章带你浅入webpack的DLL优化打包
Feb 20 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
在JavaScript中调用php程序
2009/03/09 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
php密码生成类实例
2014/09/24 PHP
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
jQuery实现定位滚动条位置
2016/08/05 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
Javascript继承机制详解
2017/05/30 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
nodeJs爬虫的技术点总结
2018/05/13 NodeJs
layui获取选中行数据的实例讲解
2018/08/19 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
python 排列组合之itertools
2013/03/20 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
python如何实现视频转代码视频
2019/06/17 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
HTML5样式控制示例代码
2013/11/27 HTML / CSS
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
一名老师的自我评价
2014/02/07 职场文书
物业管理工作方案
2014/05/10 职场文书
树转促学习心得体会
2014/09/10 职场文书
小学语文复习计划
2015/01/19 职场文书
团委工作总结2015
2015/04/02 职场文书
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
Pygame如何使用精灵和碰撞检测
2021/11/17 Python
在Docker容器中部署SQL Server
2022/04/11 Servers