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 Undefined,Null类型和NaN值区别
Oct 22 Javascript
基于jquery的Repeater实现代码
Jul 17 Javascript
javascript中的float运算精度实例分析
Aug 21 Javascript
jQuery 操作option的实现代码
Mar 03 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
Jan 07 Javascript
js全选实现和判断是否有复选框选中的方法
Feb 17 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
Mar 04 Javascript
微信jssdk在iframe页面失效问题的解决措施
Mar 03 Javascript
微信小程序 解析网页内容详解及实例
Feb 22 Javascript
详解AngularJS ui-sref的简单使用
Apr 24 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
Jun 14 Javascript
p5.js入门教程和基本形状绘制
Mar 15 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
PHP脚本的10个技巧(1)
2006/10/09 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
php+ajax实时刷新简单实例
2015/02/25 PHP
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
如何快速上手Vuex
2017/02/14 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
2020/03/08 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
使用Python操作Elasticsearch数据索引的教程
2015/04/08 Python
浅谈Python中数据解析
2015/05/05 Python
python虚拟环境完美部署教程
2019/08/06 Python
keras 权重保存和权重载入方式
2020/05/21 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
个人查摆剖析材料
2014/02/04 职场文书
房地产项目策划书
2014/02/05 职场文书
成人继续教育实施方案
2014/03/01 职场文书
幼儿园六一儿童节文艺汇演主持词
2014/03/21 职场文书
干部对照检查材料范文
2014/08/26 职场文书
怎样写离婚协议书
2014/09/10 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
财务工作失误检讨书
2015/02/19 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
年度考核个人总结
2015/03/06 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python
详解nodejs内置模块
2021/05/06 NodeJs