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 相关文章推荐
javascript window.confirm确认 取消对话框实现代码小结
Oct 21 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
Aug 09 Javascript
JS实现同时搜索百度和必应的方法
Jan 27 Javascript
jQuery插件简单实现方法
Jul 18 Javascript
Ionic如何创建APP项目
Jun 03 Javascript
jquery实现用户登陆界面(示例讲解)
Sep 06 jQuery
Vue引入sass并配置全局变量的方法
Jun 27 Javascript
Javascript 之封装(Package)
Sep 14 Javascript
vue实现的双向数据绑定操作示例
Dec 04 Javascript
小程序文字跑马灯效果
Dec 28 Javascript
vue elementui el-form rules动态验证的实例代码详解
May 23 Javascript
微信小程序用户授权最佳实践指南
May 08 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
php分页函数
2006/07/08 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
PHP7 windows支持
2021/03/09 PHP
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
JavaScript极简入门教程(二):对象和函数
2014/10/25 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
设置cookie指定时间失效(实例代码)
2017/05/28 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
python和shell变量互相传递的几种方法
2013/11/20 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
python基础教程之while循环
2019/08/14 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
iPython pylab模式启动方式
2020/04/24 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
Python 使用office365邮箱的示例
2020/10/29 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
详解HTML5 录音的踩坑之旅
2017/12/26 HTML / CSS
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
校运会班级霸气口号
2015/12/24 职场文书
python实现简单反弹球游戏
2021/04/12 Python
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL