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 $(document).ready() 与window.onload的区别
Dec 28 Javascript
jquery下异步提交表单 异步跨域提交表单
Nov 17 Javascript
一个简单的JS鼠标悬停特效具体方法
Jun 17 Javascript
JS去除右边逗号的简单方法
Jul 03 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
Dec 27 Javascript
jQuery针对各类元素操作基础教程
Aug 29 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
Aug 31 Javascript
JS获取随机数和时间转换的简单实例
Jul 10 Javascript
JS高级运动实例分析
Dec 20 Javascript
jQuery插件artDialog.js使用与关闭方法示例
Oct 09 jQuery
React优化子组件render的使用
May 12 Javascript
node运行js获得输出的三种方式示例详解
Jul 02 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设计聊天室步步通
2006/10/09 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
2019/08/03 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
javascript级联下拉列表实例代码(自写)
2013/05/10 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
jQuery使用deferreds串行多个ajax请求
2016/08/22 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
Python爬取成语接龙类网站
2018/10/19 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
python解析含有重复key的json方法
2019/01/22 Python
python实现诗歌游戏(类继承)
2019/02/26 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
python config文件的读写操作示例
2019/09/27 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
翻译学院毕业生自荐书
2014/02/02 职场文书
法律进社区实施方案
2014/03/21 职场文书
新年爱情寄语
2014/04/08 职场文书
合伙经营协议书范本
2014/04/18 职场文书
第二批党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
浅谈Laravel中使用Slack进行异常通知
2021/05/29 PHP
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS
MySQL池化框架学习接池自定义
2022/07/23 MySQL