js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法


Posted in Javascript onNovember 21, 2016

如下所示:

screen.width
screen.height


screen.availHeight //获取去除状态栏后的屏幕高度
screen.availWidth //获取去除状态栏后的屏幕高度

一、通过浏览器获得屏幕的尺寸

二、获取浏览器窗口内容的尺寸

//高度
window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight

//宽度
window.innerWidth || document.documentElement.clientWidth || document.body.clientWidht

/ * 
 * window.innerHeight  FF/CH 支持,获取窗口尺寸。
 * document.documentElement.clientHeight  IE/CH支持
 * document.body.client  通过body元素获取内容的尺寸

* /

三、滚动条支持的差异性

不进行任何滚动条更改的页面,Firefox/IE 默认认为HTML元素具有滚动条属性。而body不具有。

但Chrome 则认为body是具有滚动条属性的。

因此兼容性的写法是:

document.documentElement.scrollTop || document.body.scrollTop

四、获取元素的尺寸

elemnt.offsetWidth
elemnt.offsetHeight

// 仅IE5不支持,放心使用吧

说明图:

js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法

* offsetWidth 可以获取元素的高度尺寸,包括:width + padding[left,right] + border[left,right]

* offsetHeight 可以获取元素的宽度尺寸,包括:height + padding[top,bottom] + bottom[top,bottom]

五、元素的偏移属性

element.offsetTop //获取元素与其偏移参考父元素顶部的间隔距离
element.offsetLeft //获取元素与其偏移参考父元素左边的间隔距离
element.offsetParent //获取当前元素的参考父元素

*offsetTop 可以获取元素距其上一级的偏移参考父元素顶部的距离。包括:margin[top] + top

*offsetLeft 可以获取元素距其上一级的偏移参考父元素左边的距离。包括:margin[left] + left

*注意的是offsetParent在IE6/7,与IE8/FF/CH中存在兼容性问题:

在FF/Chrome/IE8+ :

如果当前元素有定位,则偏移参考父元素是其上一级的最近的那个定位元素。

如果当前元素没有定位,则默认以body为最终的参考父元素。

在IE6/7:

不论有没有定位,其偏移参考父元素都是其上一级的父元素。

总的来说:

不论是FF/Chrome还是IE,最终的参考父元素都是body元素, 因此兼容的方法就是获取当前元素到body元素的偏移位置值。

兼容性写法

function getOffestValue(elem){

    var Far = null;
    var topValue = elem.offsetTop;
    var leftValue = elem.offsetLeft;
    var offsetFar = elem.offsetParent;

    while(offsetFar){
      alert(offsetFar.tagName)
      topValue += offsetFar.offsetTop;
      leftValue += offsetFar.offsetLeft;
      Far = offsetFar;
      offsetFar = offsetFar.offsetParent;
    }
    return {'top':topValue,'left':leftValue,'Far':Far}
  }

/*
 * top 当前元素距离body元素顶部的距离。
 * left 当前元素距离body元素左侧的距离。
 * Far 返回最终的参考父元素。
*/

以上这篇js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery判断密码强度实现思路及代码
Apr 24 Javascript
javascript验证身份证完全方法具体实现
Nov 18 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
Dec 25 Javascript
js实现分享到随页面滚动而滑动效果的方法
Apr 10 Javascript
什么是JavaScript注入攻击?
Sep 14 Javascript
Angular1.x复杂指令实例详解
Mar 01 Javascript
详解 vue.js用法和特性
Oct 15 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
Jan 22 jQuery
node使用request请求的方法
Dec 20 Javascript
JavaScript计算出两个数的差值
Mar 19 Javascript
精读《Vue3.0 Function API》
May 20 Javascript
Javascript中async与await的捕捉错误详解
Mar 03 Javascript
JS中判断null的方法分析
Nov 21 #Javascript
javascript 利用arguments实现可变长参数
Nov 21 #Javascript
js 点击a标签 获取a的自定义属性方法
Nov 21 #Javascript
浅谈JS读取DOM对象(标签)的自定义属性
Nov 21 #Javascript
AngularJS Phonecat实例讲解
Nov 21 #Javascript
浅谈React 属性和状态的一些总结
Nov 21 #Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
Nov 21 #Javascript
You might like
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
十天学会php(1)
2006/10/09 PHP
一些常用的php函数
2006/12/06 PHP
PHP URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
python递归全排列实现方法
2018/08/18 Python
python 实现多线程下载视频的代码
2019/11/15 Python
python tornado使用流生成图片的例子
2019/11/18 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
美国社交购物市场:MassGenie
2019/02/18 全球购物
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
如何从一个文件档案的尾端新增记录
2016/12/02 面试题
十八届三中全会报告学习材料
2014/02/17 职场文书
职工小家建设活动方案
2014/08/25 职场文书
标准单位租车协议书
2014/09/23 职场文书
嘉宾邀请函
2015/01/31 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏
Android中的Launch Mode详情
2022/06/05 Java/Android