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判断是否已经弹出页面
Oct 20 Javascript
JS鼠标事件大全 推荐收藏
Nov 01 Javascript
基于jQuery的图片不完全按比例自动缩小
Jul 11 Javascript
jquery验证邮箱格式是否正确实例讲解
Nov 16 Javascript
js简单实现图片延迟加载的方法
Jul 19 Javascript
React实现双向绑定示例代码
Sep 19 Javascript
Javascript获取图片原始宽度和高度的方法详解
Sep 20 Javascript
如何把vuejs打包出来的文件整合到springboot里
Jul 26 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
Aug 20 Javascript
微信小程序Flex布局用法深入浅出分析
Apr 25 Javascript
CKeditor4 字体颜色功能配置方法教程
Jun 26 Javascript
javascript实现获取中文汉字拼音首字母
May 19 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
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
PHP判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
解析php中的escape函数
2013/06/29 PHP
完美的php分页类
2017/10/24 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
javascript 用记忆函数快速计算递归函数
2010/03/15 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
Node.js Express安装与使用教程
2018/05/11 Javascript
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
python实现文本去重且不打乱原本顺序
2016/01/26 Python
python遍历目录的方法小结
2016/04/28 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
tensorflow实现残差网络方式(mnist数据集)
2020/05/26 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
迷你分体式空调:SoGoodToBuy
2018/08/07 全球购物
美体小铺法国官方网站:The Body Shop法国
2020/06/04 全球购物
广告学专业应届生求职信
2013/10/01 职场文书
党员一句话承诺大全
2014/03/28 职场文书
我的画教学反思
2014/04/28 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
企业宣传口号
2014/06/12 职场文书
综治维稳工作汇报
2014/10/27 职场文书
公司备用金管理制度
2015/08/04 职场文书
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js