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 常用关键字列表集合
Dec 04 Javascript
javascript判断iphone/android手机横竖屏模式的函数
Dec 20 Javascript
Javascript基础教程之比较null和undefined值
May 16 Javascript
jQuery设置Easyui校验规则(推荐)
Nov 21 Javascript
Angular多选、全选、批量选择操作实例代码
Mar 10 Javascript
使用BootStrap实现标签切换原理解析
Mar 14 Javascript
Ajax验证用户名或昵称是否已被注册
Apr 05 Javascript
jQuery滚动插件scrollable.js用法分析
May 25 jQuery
史上最全JavaScript数组去重的十种方法(推荐)
Aug 17 Javascript
webpack4.0打包优化策略整理小结
Mar 30 Javascript
浅谈layui里的上传控件问题
Sep 26 Javascript
vue项目如何监听localStorage或sessionStorage的变化
Jan 04 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 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
js GridView 实现自动计算操作代码
2009/03/25 Javascript
Prototype String对象 学习
2009/07/19 Javascript
JavaScript定义类或函数的几种方式小结
2011/01/09 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
谷歌地图打不开的解决办法
2014/08/07 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
2016/10/21 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
python中ConfigParse模块的用法
2014/09/29 Python
python插入排序算法实例分析
2015/07/03 Python
Python中for循环和while循环的基本使用方法
2015/08/21 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
2020/01/06 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
关于python 跨域处理方式详解
2020/03/28 Python
Python中logger日志模块详解
2020/08/04 Python
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
自我评价怎么写好呢?
2013/12/05 职场文书
普通员工辞职信
2014/01/17 职场文书
初三家长会邀请函
2014/01/18 职场文书
运动会广播稿500字
2014/01/28 职场文书
入学生会自荐书范文
2014/02/05 职场文书
趣味体育活动方案
2014/02/08 职场文书
行政工作个人的自我评价
2014/02/13 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS