javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法


Posted in Javascript onMay 14, 2020

关于js中的offsetWidth、clientWidth、scrollWidth等一系列属性及其方法一直都傻傻分不清,这里就来总结一下这些方法的用法和含义。

一、clientWidth和clientHeigh 、 clientTop和clientLeft

1,clientWidth的实际宽度
clientWidth = width+左右padding

2,clientHeigh的实际高度
clientHeigh = height + 上下padding 

3,clientTop的实际宽度
clientTop = boder.top(上边框的宽度)

4,clientLeft的实际宽度
clientLeft = boder.left(左边框的宽度)

二、offsetWidth和offsetHight 、 offsetTop和offsetLeft

1,offsetWidth的实际宽度
offsetWidth = width + 左右padding + 左右boder

2,offsetHeith的实际高度
offsetHeith = height + 上下padding + 上下boder

3,offsetTop实际宽度
offsetTop:当前元素 上边框 外边缘 到 最近的已定位父级(offsetParent) 上边框 内边缘的 距离。如果父级都没有定位,则分别是到body 顶部 和左边的距离

4,offsetLeft实际宽度
offsetLeft:当前元素 左边框 外边缘 到 最近的已定位父级(offsetParent) 左边框 内边缘的            距离。如果父级都没有定位,则分别是到body 顶部 和左边的距离

三、scrollWidth和scrollHeight 、 scrollTop和scrollLeft

1,scrollWidth实际宽度
scrollWidth:获取指定标签内容层的真实宽度(可视区域宽度+被隐藏区域宽度)。

2,scrollHeight的实际高度
scrollHeight:获取指定标签内容层的真实高度(可视区域高度+被隐藏区域高度)

3,scrollTop
scrollTop :内容层顶部 到 可视区域顶部的距离。
实例:var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;持续获取高度的方式:

window.addEventListener('scroll', ()=>{
var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
});

4,scrollLeft
scrollLeft:内容层左端 到 可视区域左端的距离.

注意: 下面元素属性和元素方法都通过 elem.属性 或 elem.方法 的方式使用,window属性通过 window.属性 的方式使用,document属性则通过document调用。

<script>
  /*
   ****** 元素视图属性
   * offsetWidth 水平方向 width + 左右padding + 左右border-width
   * offsetHeight 垂直方向 height + 上下padding + 上下border-width
   * 
   * clientWidth 水平方向 width + 左右padding
   * clientHeight 垂直方向 height + 上下padding
   * 
   * offsetTop 获取当前元素到 定位父节点 的top方向的距离
   * offsetLeft 获取当前元素到 定位父节点 的left方向的距离
   * 
   * scrollWidth 元素内容真实的宽度,内容不超出盒子高度时为盒子的clientWidth
   * scrollHeight 元素内容真实的高度,内容不超出盒子高度时为盒子的clientHeight
   * 
   ****** 元素视图属性结束
   * 
   ****** Window视图属性(低版本IE浏览器[<IE9]不支持) 【自测包含滚动条,但网络教程都说不包含???】
   * innerWidth 浏览器窗口可视区宽度(不包括浏览器控制台、菜单栏、工具栏) 
   * innerHeight 浏览器窗口可视区高度(不包括浏览器控制台、菜单栏、工具栏)
   * ***** Window视图属性结束
   * 
   ****** Document文档视图
   * (低版本IE的innerWidth、innerHeight的代替方案)
   * document.documentElement.clientWidth 浏览器窗口可视区宽度(不包括浏览器控制台、菜单栏、工具栏、滚动条)
   * document.documentElement.clientHeight 浏览器窗口可视区高度(不包括浏览器控制台、菜单栏、工具栏、滚动条)
   * 
   * document.documentElement.offsetHeight 获取整个文档的高度(包含body的margin)
   * document.body.offsetHeight 获取整个文档的高度(不包含body的margin)
   * 
   * document.documentElement.scrollTop 返回文档的滚动top方向的距离(当窗口发生滚动时值改变)
   * document.documentElement.scrollLeft 返回文档的滚动left方向的距离(当窗口发生滚动时值改变)
   ****** Document文档视图结束
   * 
   ****** 元素方法
   * 1. getBoundingClientRect() 获取元素到body
   * bottom: 元素底边(包括border)到可视区最顶部的距离
   * left: 元素最左边(不包括border)到可视区最左边的距离
   * right: 元素最右边(包括border)到可视区最左边的距离
   * top: 元素顶边(不包括border)到可视区最顶部的距离
   * height: 元素的offsetHeight
   * width: 元素的offsetWidth
   * x: 元素左上角的x坐标 
   * y: 元素左上角的y坐标 
   * 
   * 2. scrollIntoView() 让元素滚动到可视区
   * 
   * ***** 元素方法结束
   * 
   */
</script>

上面属性中,关于 window.innerWidth 和 window.innerHeight, 我自己测试的结果值是包含滚动条的,但网上的教程和相关文档都说不包括滚动条,虽然滚动条的宽度不大,对整体影响也不明显,但如果有道友有准确答案的,还请不吝赐教,顺手留个言,谢谢!

到此这篇关于javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法的文章就介绍到这了,更多相关javascript offsetWidth clientWidth innerWidth内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery ui dialog ie8出现滚动条的解决方法
Dec 06 Javascript
javascript textarea光标定位方法(兼容IE和FF)
Mar 12 Javascript
利用Jquery实现可多选的下拉框
Feb 21 Javascript
js实现按一下删除键删除整个单词附demo
Sep 05 Javascript
JavaScript函数详解
Feb 27 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
Apr 06 Javascript
Javascript显示和隐藏ul列表的方法
Jul 15 Javascript
第一次接触神奇的Bootstrap网格系统
Jul 27 Javascript
bootstrap模态框消失问题的解决方法
Dec 02 Javascript
JavaScript实现经典排序算法之冒泡排序
Dec 28 Javascript
JavaScript中错误正确处理方式小结你用对了吗
Oct 10 Javascript
PHP读取远程txt文档到数组并实现遍历
Aug 25 Javascript
vue组件系列之TagsInput详解
May 14 #Javascript
ant-design-vue按需加载的坑的解决
May 14 #Javascript
JavaScript数组排序功能简单实现
May 14 #Javascript
Typescript3.9 常用新特性一览(推荐)
May 14 #Javascript
Node.js API详解之 Error模块用法实例分析
May 14 #Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
May 14 #Javascript
JavaScript, select标签元素左右移动功能实现
May 14 #Javascript
You might like
php 动态多文件上传
2009/01/18 PHP
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
动态控制Table的js代码
2007/03/07 Javascript
Javascript 中的 &amp;&amp; 和 || 使用小结
2010/04/25 Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
Vue 自定义指令功能完整实例
2019/09/17 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
[01:02:30]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
Python如何判断数独是否合法
2016/09/08 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
Matplotlib.pyplot 三维绘图的实现示例
2020/07/28 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
Exception类的常用方法
2012/06/16 面试题
中英文求职信范文
2014/01/27 职场文书
职务任命书范本
2014/06/05 职场文书
大专生求职信
2014/06/29 职场文书
公司地址变更通知
2015/04/25 职场文书
党员理论学习心得体会
2016/01/21 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
Django migrate报错的解决方案
2021/05/20 Python