首先,先吓唬一下咱们的小白们!在js中的描述宽高的能够细分有22种。属性根据不一样的兼容性也分为五种javascript
1.与浏览器无关
window.innerWidth
window.outerWidth
window.screen.width
window.screen.availWidth
window.screenLeft (浏览器距离屏幕左侧的距离宽度)html
2.与浏览器有关java
语法:document.documentElement.clientWidth.或者doucment.body.clientWidth.chrome
clientWidth(距离父级元素clientLeft)浏览器
offsetWidth(距离父级元素offsetLeft)app
scrollWidth(距离滚动条顶部scrollTop)dom
通常无滚动条状况下offsetWidth=clientWidth=scrollWidth(有可能偏差1px)spa
IE浏览器兼容写法:firefox
document.body.scrollTopcode
document.body.offsetWidth
document.body.clientHeight
Chrome浏览器兼容写法:
var scrolltop = document.documentElement.scrollTop /*获取滚动条距离顶部得距离*/
var clientHeight = document.documentElement.clientHeight; /*获取页面可视区的高度*/
var offset = document.documentElement.offsetWidth; /*获取页面可视区的高度,包含border*/
js鼠标事件综合各大浏览器能获取到坐标的属性总共如下五种:
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
获取到的是触发点相对显示器屏幕左上角的距离,不随页面滚动而改变。
兼容性:全部浏览器均支持
console.log(e.clientX);
}function getMouseMove(event) { var e = event || window.event;