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 相关文章推荐
用脚本调用样式的几种方法
Dec 09 Javascript
利用js 进行输入框自动匹配字符的小例子
Jun 29 Javascript
js 获取input点选按钮的值的方法
Apr 14 Javascript
JavaScript中的数组操作介绍
Dec 30 Javascript
jQuery实现自动调整字体大小的方法
Jun 15 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
Feb 25 Javascript
使用vue构建一个上传图片表单
Jul 04 Javascript
Mongoose实现虚拟字段查询的方法详解
Aug 15 Javascript
Express系列之multer上传的使用
Oct 27 Javascript
微信小程序实现流程进度的图样式功能
Jan 16 Javascript
Vue使用localStorage存储数据的方法
May 27 Javascript
Vue 组件注册全解析
Dec 17 Vue.js
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
菜鸟修复电子管记
2021/03/02 无线电
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
javascript里的条件判断
2007/02/27 Javascript
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
2014/06/06 Javascript
浅析javascript的间隔调用和延时调用
2014/11/12 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
Vue3.x源码调试的实现方法
2019/10/13 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
pyqt和pyside开发图形化界面
2014/01/22 Python
python实现ipsec开权限实例
2014/11/11 Python
python黑魔法之编码转换
2016/01/25 Python
总结Python编程中函数的使用要点
2016/03/20 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
如何解决python多种版本冲突问题
2020/10/13 Python
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
枚举与#define宏的区别
2014/04/30 面试题
Python是如何进行类型转换的
2013/06/09 面试题
优秀英语专业毕业生求职信
2013/11/23 职场文书
一名女生的自荐信
2013/12/08 职场文书
给公司的建议书范文
2014/05/13 职场文书
护士优质服务演讲稿
2014/08/26 职场文书
java设计模式--原型模式详解
2021/07/21 Java/Android
Go中的条件语句Switch示例详解
2021/08/23 Golang
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers