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可突破windows弹退效果代码
Aug 09 Javascript
JS实现网页标题随机显示名人名言的方法
Nov 03 Javascript
Javascript的表单验证-初识正则表达式
Mar 18 Javascript
轻松5句话解决JavaScript的作用域
Jul 15 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
Sep 29 Javascript
微信小程序手机号码验证功能的实例代码
Aug 28 Javascript
JS/jQuery实现简单的开关灯效果【案例】
Feb 19 jQuery
JS实现的合并两个有序链表算法示例
Feb 25 Javascript
vue下使用nginx刷新页面404的问题解决
Aug 02 Javascript
深入理解令牌认证机制(token)
Aug 22 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 jQuery
react 路由Link配置详解
Nov 11 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
codeigniter中测试通过的分页类示例
2014/04/17 PHP
php实现webservice实例
2014/11/06 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
常用PHP封装分页工具类
2017/01/14 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
2018/05/23 PHP
JS+CSS实现实用的单击输入框弹出选择框的方法
2015/02/28 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
详解Python中的条件判断语句
2015/05/14 Python
Python中map和列表推导效率比较实例分析
2015/06/17 Python
tensorflow获取变量维度信息
2018/03/10 Python
对python读取zip压缩文件里面的csv数据实例详解
2019/02/08 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
Python如何安装第三方模块
2020/05/28 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
俄罗斯天然和有机产品、健康生活网上商店:Fitomarket.ru
2020/10/09 全球购物
经典c++面试题五
2014/12/17 面试题
校园之声广播稿
2014/01/31 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
卫生系统先进事迹
2014/05/13 职场文书
推广活动策划方案
2014/08/23 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
python实现A*寻路算法
2021/06/13 Python
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers