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 相关文章推荐
ImageZoom 图片放大镜效果(多功能扩展篇)
Apr 14 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
Nov 10 Javascript
javascript:history.go()和History.back()的区别及应用
Nov 25 Javascript
高效的获取当前元素是父元素的第几个子元素
Oct 15 Javascript
JavaScript返回网页中超链接数量的方法
Apr 03 Javascript
JavaScript 中有关数组对象的方法(详解)
Aug 15 Javascript
bootstrap实现动态进度条效果
Mar 08 Javascript
深入理解vue2.0路由如何配置问题
Jul 18 Javascript
vue-better-scroll 的使用实例代码详解
Dec 03 Javascript
纯JS开发baguetteBox.js响应式画廊插件
Jun 28 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
Aug 17 Javascript
创建与框架无关的JavaScript插件
Dec 01 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 visitFile()遍历指定文件夹函数
2010/08/21 PHP
php设计模式 Mediator (中介者模式)
2011/06/26 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
jQuery事件用法详解
2016/10/06 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
vue实现购物车列表
2020/06/30 Javascript
iview实现动态表单和自定义验证时间段重叠
2021/01/10 Javascript
[02:17]2016完美“圣”典风云人物:Sccc专访
2016/12/03 DOTA
[01:13:08]2018DOTA2亚洲邀请赛4.6 淘汰赛 mineski vs LGD 第二场
2018/04/10 DOTA
python创建线程示例
2014/05/06 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
python模拟事件触发机制详解
2018/01/19 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
企业指导教师评语
2014/04/28 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
写给同事的离职感言
2015/08/04 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis
python单向链表实例详解
2022/05/25 Python