获取JS中网页各种高宽与位置的方法总结


Posted in Javascript onJuly 27, 2016

screen对象

获取屏幕的高宽(分辨率)

screen.width     //屏幕的宽
screen.height    //屏幕的高
screen.availWidth  //屏幕可用宽度  屏幕的像素高度减去系统部件高度之后的值
screen.availHeight  //屏幕可用高度  屏幕的像素宽度减去系统部件宽度之后的值

window对象

获得窗口位置及大小

window.screenTop   //窗口顶部距屏幕顶部的距离
window.screenLeft  //窗口左侧距屏幕左侧的距离
window.innerWidth  //窗口中可视区域(viewpoint)的宽度
  alert(window.innerWidth); //chrome 1366 ff 1366 ie 1366
window.innerHeight  //窗口中可视区域(viewpoint)的高度 该值与浏览器是否显示菜单栏等因素有关
  alert(window.innerHeight); //chrome 643 ff 657 ie 673
window.outerWidth  //浏览器窗口本身的宽度(可视区域宽度+浏览器边框宽度)
  alert(window.outerWidth); //chrome 1366 ff 1382 ie 1382 
  //说明chrome在最大化时浏览器窗口没有边框宽度,非最大化时有8px边框
  //ff和ie上下左右有8px的边框宽度
window.outerHeight  //浏览器窗口本身的高度
  alert(window.outerHeight); //chrome 728 ff 744 ie 744

element对象

在介绍element对象各种高宽之前有必要解释一下盒模型
默认盒模型 box-sizing:content-box;

获取JS中网页各种高宽与位置的方法总结

boxWidth = 2*margin + 2*border + 2*padding + width
boxHeight = 2*margin + 2*border + 2*padding + height

当不出现滚动条时

body{margin:0;}
#demo{
  width:100px;
  height:100px;
  padding:10px;
  border:20px;
  margin:30px;
  background-color:red;
}
<div id="demo">123456789 123456789</div>

clientWidth:在页面上返回内容的可视宽度(不包括边框,边距或滚动条)

clientHeight:在页面上返回内容的可视高度(不包括边框,边距或滚动条)

clientWidth = 2*padding + width - scrollbarWidth   
console.log(document.getElementById('demo').clientWidth); //120 此时scrollbarWidth=0
clientHeight = 2*padding + height - scrollbarHeight 
console.log(document.getElementById('demo').clientHeight); //120 此时scrollbarWidth=0

offsetWidth:返回元素的宽度包括边框和填充,但不包括边距

offsetHeight:返回元素的高度包括边框和填充,但不包括边距

offsetWidth = 2*border + 2*padding + width 
console.log(document.getElementById('demo').offsetWidth)  //160
offsetHeight = 2*border + 2*padding + height 
console.log(document.getElementById('demo').offsetHeight)  //160

offsetLeft: 获取对象相对于版面或由 offsetLeft属性指定的父坐标的计算左侧位置
offsetTop: 获取对象相对于版面或由 offsetTop属性指定的父坐标的计算顶端位置

console.log(document.getElementById('demo').offsetLeft)  //30
console.log(document.getElementById('demo').offsetTop)  //30

获取JS中网页各种高宽与位置的方法总结

当出现滚动条时

body{
  margin:0;
  padding:20px;
  width:1000px;
  height:500px;
}
<div id="demo">123456789123456789</div>

scrollWidth: 返回元素的整个宽度(包括带滚动条的隐蔽的地方)

scrollHeight: 返回整个元素的高度(包括带滚动条的隐蔽的地方)

scrollWidth = 2*padding + width  
console.log(document.body.scrollWidth)  //1040
scrollHeight = 2*padding + width  
console.log(document.body.scrollHeight)  //540

scrollTop: 向下滑动滚动块时元素隐藏内容的高度。不设置时默认为0,其值随着滚动块滚动而变化

scrollLeft: 向右滑动滚动块时元素隐藏内容的宽度。不设置时默认为0,其值随着滚动块滚动而变化

event对象

Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。

event.pageX:相对整个页面的坐标,以页面的左上角为坐标原点到鼠标所在点的水平距离(IE8不支持)

event.pageY:相对整个页面的坐标,以页面的左上角为坐标原点到鼠标所在点的垂直距离(IE8不支持)

event.clientX:相对可视区域的坐标,以浏览器可视区域左上角为坐标原点到鼠标所在点的水平距离

event.clientY:相对可视区域的坐标,以浏览器可视区域左上角为坐标原点到鼠标所在点的垂直距离

event.screenX:相对电脑屏幕的坐标,以屏幕左上角为坐标原点到鼠标所在点的水平距离

event.screenY:相对电脑屏幕的坐标,以屏幕左上角为坐标原点到鼠标所在点的垂直距离

event.offsetX:相对于自身的坐标,以自身的padding左上角为坐标原点到鼠标所在点的水平距离

event.offsetY:相对于自身的坐标,以自身的padding左上角为坐标原点到鼠标所在点的水平距离

获取JS中网页各种高宽与位置的方法总结

总结

以上就是获取JS中网页各种高宽与位置的方法总结,对大家学习JS的时候提供了方便,有需要的小伙伴们可以参考学习。

Javascript 相关文章推荐
JavaScript EasyPager 分页函数
May 25 Javascript
jquery分页插件jpaginate在IE中不兼容问题
Apr 22 Javascript
jQuery获取样式中颜色值的方法
Jan 29 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
Feb 27 Javascript
jquery实现顶部向右伸缩的导航区域代码
Sep 02 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
Dec 20 Javascript
jQuery加载及解析XML文件的方法实例分析
Jan 22 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
Sep 27 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
Sep 21 Javascript
es6函数之尾递归用法实例分析
Apr 25 Javascript
小程序表单认证布局及验证详解
Jun 19 Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 jQuery
AngularJS 模型详细介绍及实例代码
Jul 27 #Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
Jul 27 #Javascript
详解Angular开发中的登陆与身份验证
Jul 27 #Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
Jul 27 #Javascript
jQuery+CSS实现简单切换菜单示例
Jul 27 #Javascript
AngularJS 指令详细介绍
Jul 27 #Javascript
js中遍历Map对象的方法
Jul 27 #Javascript
You might like
《PHP边学边教》(01.开篇――准备工作)
2006/12/13 PHP
MySQL数据源表结构图示
2008/06/05 PHP
PHP 判断变量类型实现代码
2009/10/23 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
PHP命名空间和自动加载类
2016/04/03 PHP
Laravel下生成验证码的类
2017/11/15 PHP
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
2013/04/03 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
2017/01/22 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
前端页面文件拖拽上传模块js代码示例
2017/05/19 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
使用canvas压缩图片上传的方法示例
2020/02/07 HTML / CSS
马耳他航空公司官方网站:Air Malta
2019/05/15 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
网络管理专业求职信
2014/03/15 职场文书
2014年学校国庆主题活动方案
2014/09/16 职场文书
导师鉴定意见
2015/06/05 职场文书
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python