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模块模式分析
May 16 Javascript
javascript检查浏览器是否支持flash的实现代码
Aug 14 Javascript
jquery处理json对象
Nov 03 Javascript
javascript封装的sqlite操作类实例
Jul 17 Javascript
jquery实现点击变换导航样式的方法
Aug 31 Javascript
axios拦截设置和错误处理方法
Mar 05 Javascript
layui table设置前台过滤转义等方法
Aug 17 Javascript
vue.js父子组件通信动态绑定的实例
Sep 28 Javascript
原生js实现each方法实例代码详解
May 27 Javascript
微信小程序实现锚点功能
Nov 20 Javascript
微信小程序:报错(in promise) MiniProgramError
Oct 30 Javascript
vue的项目如何打包上线
Apr 13 Vue.js
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 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
JavaScript对象、属性、事件手册集合方便查询
2010/07/04 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
jquery prop的使用介绍及与attr的区别
2013/12/19 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
浅谈react.js 之 批量添加与删除功能
2017/04/17 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
2017/04/22 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
2018/10/09 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
Python二进制串转换为通用字符串的方法
2018/07/23 Python
Python静态类型检查新工具之pyright 使用指南
2019/04/26 Python
python统计文章中单词出现次数实例
2020/02/27 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
html Table 表头固定的实现
2019/01/22 HTML / CSS
html5中为audio标签增加停止按钮动作实现方法
2013/01/04 HTML / CSS
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
应届生求职简历的自我评价怎么写
2013/10/23 职场文书
个人自我鉴定怎么写
2013/10/28 职场文书
巡警年度自我鉴定
2014/02/21 职场文书
个人课题方案
2014/05/08 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL
使用Python拟合函数曲线
2022/04/14 Python