Js获取宽高度的归纳集锦总结
首先,先吓唬一下我们的小白们!在js中的描述宽高的可以细分有22种。属性根据不同的兼容性也分为五种
- window.innerWidth //除去菜单栏的窗口宽度,与浏览器相关
- window.innerHeight//除去菜单栏的窗口高度,与浏览器相关
- window.outerWidth//包括菜单栏的窗口宽度,与浏览器相关
- window.outerHeight//包括菜单栏的窗口宽度,与浏览器相关
- window.screen.height//电脑整个屏幕的高度,与浏览器无关
- window.screen.width//电脑整个屏幕的宽度,与浏览器无关
- window.screen.availHeight//电脑屏幕的可利用高度,不包含任务栏,与浏览器无关,应该是获取window对象的属性。
- window.screen.availWidth//电脑屏幕的可利用宽度,不包含任务栏,与浏览器无关,应该是获取window对象的属性。
- window.screenTop//浏览器距离屏幕的高度,与浏览器无关
- window.screenLeft//浏览器距离屏幕左侧的距离宽度,与浏览器无关
- document.body.clientWidth//指元素的自身宽度(包括padding),网页可见区域宽,不包括滚动条
- document.body.clientHeight//指元素的自身的高度(包括padding),网页可见区域高
- document.body.clientLeft//子级div内容位置到父级内容区域的视区宽度距离(获得的是border值)
- document.body.clientTop//子级div内容位置到父级内容区域的高度距离(获得的是border值)
- document.body.offsetWidth//指定元素的宽度(包括padding,border和内容),包括滚动条
- document.body.offsetHeight//指定元素的高度(包括padding,border和内容)
- document.body.offsetTop//距离父级元素的高度,默认是document
- document.body.offsetLeft//距离父级元素的宽度,默认是document
- document.body.scrollWidth//获取的是文档的宽度(当指定的宽度小于浏览器窗口的时候,为浏览器的宽度)(无滚动条时会等于clientWidth)
- document.body.scrollHeight//获取的是文档的高度(当指定的高度小于浏览器窗口的时候,为浏览器的高度)(一般情况下会等于clientHeight)
- document.body.scrollTop//文档被滚动上去的时候(即滚动条往上滚动的距离)
- document.body.scrollLeft//文档被滚动右去的时候(即滚动条往右滚动的距离)
1.与浏览器无关
window.innerWidth
window.outerWidth
window.screen.width
window.screen.availWidth
window.screenLeft (浏览器距离屏幕左侧的距离宽度)
2.与浏览器有关
语法:document.documentElement.clientWidth.或者doucment.body.clientWidth.
clientWidth(距离父级元素clientLeft)
offsetWidth(距离父级元素offsetLeft)
scrollWidth(距离滚动条顶部scrollTop)
一般无滚动条情况下offsetWidth=clientWidth=scrollWidth(有可能误差1px)
IE浏览器兼容写法:
document.body.scrollTop
document.body.offsetWidth
document.body.clientHeight
Chrome浏览器兼容写法:
var scrolltop = document.documentElement.scrollTop /*获取滚动条距离顶部得距离*/
var clientHeight = document.documentElement.clientHeight; /*获取页面可视区的高度*/
var offset = document.documentElement.offsetWidth; /*获取页面可视区的高度,包含border*/
js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种:
- event.clientX/Y /*相对于浏览器窗口*/
- event.pageX/Y
- event.offsetX/Y
- event.layerX/Y
- event.screenX/Y /*相对于屏幕*/
clientX/Y
clientX/Y获取到的是触发点相对浏览器可视区域左上角距离,不随页面滚动而改变。
兼容性:所有浏览器均支持
pageX/Y
pageX/Y获取到的是触发点相对文档区域左上角距离,会随着页面滚动而改变
兼容性:除IE6/7/8不支持外,其余浏览器均支持
offsetX/Y
offsetX/Y获取到是触发点相对被触发dom的左上角距离,不过左上角基准点在不同浏览器中有区别,其中在IE中以内容区左上角为基准点不包括边框,如果触发点在边框上会返回负值,而chrome中以边框左上角为基准点。
兼容性:IE所有版本,chrome,Safari均完美支持,Firefox不支持
layerX/Y
layerX/Y获取到的是触发点相对被触发dom左上角的距离,数值与offsetX/Y相同,这个变量就是firefox用来替代offsetX/Y的,基准点为边框左上角,但是有个条件就是,被触发的dom需要设置为position:relative或者position:absolute,否则会返回相对html文档区域左上角的距离。
兼容性:IE6/7/8不支持,opera不支持,IE9/10和Chrome、Safari均支持
screenX/Y
screenX/Y获取到的是触发点相对显示器屏幕左上角的距离,不随页面滚动而改变。
兼容性:所有浏览器均支持

function getMouseMove(event) {
var e = event || window.event;
console.log(e.clientX);
}
Js获取宽高度的归纳集锦总结的更多相关文章
- Js获取宽高度的归纳总结
		首先,先吓唬一下我们的小白们!在js中的描述宽高的可以细分有22种. window.innerWidth //除去菜单栏的窗口宽度 window.innerHeight//除去菜单栏的窗口高度 win ... 
- js获取浏览器高度和宽度值,尽量的考虑了多浏览器。
		js获取浏览器高度和宽度值,尽量的考虑了多浏览器. IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ... 
- jquery、js获取页面高度宽度等
		jquery获取页面高度宽度 //获取浏览器显示区域(可视区域)的高度 : $(window).height(); //获取浏览器显示区域(可视区域)的宽度 : $(window).width(); ... 
- 【转】js 获取浏览器高度和宽度值(多浏览器
		原文地址:http://www.jb51.net/article/19844.htm js获取浏览器高度和宽度值,尽量的考虑了多浏览器. IE中: document.body.clientWidth ... 
- JS获取div高度的方法
		有时在写页面时,需要获取一个div的高度.怎么才能获取呢?哈哈,先上结论.有两种方法. offsetHeight .clientHeight getComputedStyle offsetHeight ... 
- js获取浏览器高度
		常用: JS 获取浏览器窗口大小 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // 获取窗口宽度 if (window.innerWidth) winWidth = ... 
- JS获取浏览器高度 并赋值给类
		在给网站做轮播焦点图的时候,如果需要全屏的话,可以用下面的jQuery来获取浏览器高度,然后赋值给类. $(window).load(function () { var maxHeight = 0; ... 
- 原生js获取宽高与jquery获取宽高的方法的关系
		说明:1.因为获取高度的情况跟获取宽度的情况一样,所以以下只说获取宽度的情况. 2.以下所说的所有方法与属性所返回的值都是不带单位的. 3.为了方便说明,以下情况采用缩写表示: obj -> ... 
- js 获取浏览器高度和宽度值(多浏览器)(转)
		IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.d ... 
随机推荐
- 解决homebrew下install时出现的问题
			在homebrew下install influxdb时出现error: Error: Failure while executing: git config --local --replace-a ... 
- 【Redis】主从复制
			一.概述 1.redis的复制功能是支持多个数据库之间的数据同步.一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从 ... 
- 【Hystrix】实现服务隔离和降级
			一.背景 1.1 服务熔断 1.2 服务降级 1.3 服务隔离 1.4 总结 二.使用Hystrix实现服务隔离和降级 2.1 Hytrix 简介 2.2 线程池方式 2.3 信号量 三.项目搭建 3 ... 
- VUE中CSS样式穿透
			VUE中CSS样式穿透 1. 问题由来 在做两款H5的APP项目,前期采用微信官方推荐的weui组件库.后来因呈现的效果不理想,组件不丰富,最终项目完成后全部升级采用了有赞开发的vant组件库.同时将 ... 
- 运行sudo apt-get install nginx时报错有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?解决
			运行sudo apt-get install nginx时报错有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?解决办法 第一步:运行s ... 
- FreeSql (六)批量插入数据
			var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initia ... 
- ExpandableListView 可折叠的下拉listview
			ExpandableListView用法如下 1.定义布局文件main.xml文件 <?xml version="1.0" encoding="utf-8" ... 
- 关于解决web编码问题的总结
			网页的编码问题,一般分为两个方面 1 是网页本身的编码格式, 一般不同的操作系统网页文件存取的编码是不一样的, 但一般来说, 新建网页文件一般都和IDE有关,因为我们平时我是使用编辑工具新建网页文件. ... 
- Laravel 5.4 快速开发简书:
			Laravel 5.4 快速开发简书第1章 课程介绍 介绍课程的大体脉络和课程安排 第2章 Laravel 5.4介绍 本节课会带领大家介绍laravel的各个版本历史以及讨论php框架的未来发展趋势 ... 
- mysql安装和配置环境
			第一步:打开网址,https://www.mysql.com,点击downloads之后跳转到https://www.mysql.com/downloads 第二步 :跳转至网址https://dev ... 
