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 相关文章推荐
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
Aug 02 Javascript
JavaScript验证图片类型(扩展名)的函数分享
May 05 Javascript
一款由jquery实现的整屏切换特效
Sep 15 Javascript
Node.js 条形码识别程序构建思路详解
Feb 14 Javascript
Bootstrap开发实战之响应式轮播图
Jun 02 Javascript
js原生跨域_用script标签的简单实现
Sep 24 Javascript
Vue.js使用v-show和v-if的注意事项
Dec 13 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
May 20 Javascript
使用canvas实现一个vue弹幕组件功能
Nov 30 Javascript
关于js陀螺仪的理解分析
Apr 11 Javascript
js实现整体缩放页面适配移动端
Mar 31 Javascript
vue+axios全局添加请求头和参数操作
Jul 24 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 伪造本地文件包含漏洞的代码
2011/11/03 PHP
探讨各种PHP字符串函数的总结分析
2013/06/05 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
js 字符串转换成数字的三种方法
2013/03/23 Javascript
javascript实现div的显示和隐藏的小例子
2013/06/25 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
cookie的secure属性详解
2015/04/08 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
微信小程序商城项目之侧栏分类效果(1)
2017/04/17 Javascript
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
详解ECMAScript typeof用法
2018/07/25 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
[00:09]DOTA2全国高校联赛 精彩活动引爆全场
2018/05/30 DOTA
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
python设计模式大全
2016/06/27 Python
浅谈Python爬取网页的编码处理
2016/11/04 Python
python dict 相同key 合并value的实例
2019/01/21 Python
Python mutiprocessing多线程池pool操作示例
2019/01/30 Python
中英文求职信范文
2014/01/27 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
教师一岗双责责任书
2014/04/16 职场文书
化工工艺设计求职信
2014/06/25 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
高一英语教学反思
2016/03/03 职场文书
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript
分享几个实用的CSS代码块
2022/06/10 HTML / CSS
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL