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 live( type, fn ) 委派事件实现
Oct 11 Javascript
js onclick事件传参讲解
Nov 06 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
May 28 Javascript
jscript读写二进制文件的方法
Apr 22 Javascript
javascript中substring()、substr()、slice()的区别
Aug 30 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
May 31 Javascript
js中数组的常用方法小结
Dec 30 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
Aug 15 Javascript
JS监控关闭浏览器操作的实例详解
Sep 12 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
Sep 04 Javascript
vue中axios请求的封装实例代码
Mar 23 Javascript
微信小程序 弹窗输入组件的实现解析
Aug 12 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
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
一句话JavaScript表单验证代码
2009/08/02 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
window.ActiveXObject使用说明
2010/11/08 Javascript
js禁止回车提交表单的示例代码
2013/12/23 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
jQuery手机拨号界面特效代码分享
2015/08/27 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
python条件和循环的使用方法
2013/11/01 Python
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
Python3.6简单反射操作示例
2018/06/14 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
Funko官方商店:源自美国,畅销全球搪胶收藏玩偶
2018/09/15 全球购物
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
经典优秀个人求职信分享
2013/12/12 职场文书
新春联欢会主持词
2014/03/24 职场文书
给市场的环保建议书
2014/05/14 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
沈阳故宫导游词
2015/01/31 职场文书
文体活动总结
2015/02/04 职场文书
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL