javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
关于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中offsetWidth的bug及解决方法
-
js中clientWidth, scrollWidth, innerWidth, outerWidth和offsetWidth属性的区别
-
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
-
JavaScript中易混淆的DOM属性及方法对比
-
JavaScript中offsetWidth的bug及解决方法
-
谈谈js中的prototype及prototype属性解释和常用方法_javascript技巧
-
谈谈js中的prototype及prototype属性解释和常用方法_javascript技巧
-
js中clientWidth, scrollWidth, innerWidth, outerWidth和offsetWidth属性的区别
-
JavaScript中易混淆的DOM属性及方法对比
-
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法