javascript中的offsetWidth、clientWidth、innerWidth及相關(guān)屬性方法
關(guān)于js中的offsetWidth、clientWidth、scrollWidth等一系列屬性及其方法一直都傻傻分不清,這里就來總結(jié)一下這些方法的用法和含義。
一、clientWidth和clientHeigh 、 clientTop和clientLeft
1,clientWidth的實(shí)際寬度
clientWidth = width+左右padding
2,clientHeigh的實(shí)際高度
clientHeigh = height + 上下padding
3,clientTop的實(shí)際寬度
clientTop = boder.top(上邊框的寬度)
4,clientLeft的實(shí)際寬度
clientLeft = boder.left(左邊框的寬度)
二、offsetWidth和offsetHight 、 offsetTop和offsetLeft
1,offsetWidth的實(shí)際寬度
offsetWidth = width + 左右padding + 左右boder
2,offsetHeith的實(shí)際高度
offsetHeith = height + 上下padding + 上下boder
3,offsetTop實(shí)際寬度
offsetTop:當(dāng)前元素 上邊框 外邊緣 到 最近的已定位父級(offsetParent) 上邊框 內(nèi)邊緣的 距離。如果父級都沒有定位,則分別是到body 頂部 和左邊的距離
4,offsetLeft實(shí)際寬度
offsetLeft:當(dāng)前元素 左邊框 外邊緣 到 最近的已定位父級(offsetParent) 左邊框 內(nèi)邊緣的 距離。如果父級都沒有定位,則分別是到body 頂部 和左邊的距離
三、scrollWidth和scrollHeight 、 scrollTop和scrollLeft
1,scrollWidth實(shí)際寬度
scrollWidth:獲取指定標(biāo)簽內(nèi)容層的真實(shí)寬度(可視區(qū)域?qū)挾?被隱藏區(qū)域?qū)挾龋?br />
2,scrollHeight的實(shí)際高度
scrollHeight:獲取指定標(biāo)簽內(nèi)容層的真實(shí)高度(可視區(qū)域高度+被隱藏區(qū)域高度)
3,scrollTop
scrollTop :內(nèi)容層頂部 到 可視區(qū)域頂部的距離。
實(shí)例:var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;持續(xù)獲取高度的方式:
window.addEventListener('scroll', ()=>{ var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop; });
4,scrollLeft
scrollLeft:內(nèi)容層左端 到 可視區(qū)域左端的距離.
注意: 下面元素屬性和元素方法都通過 elem.屬性 或 elem.方法 的方式使用,window屬性通過 window.屬性 的方式使用,document屬性則通過document調(diào)用。
<script> /* ****** 元素視圖屬性 * offsetWidth 水平方向 width + 左右padding + 左右border-width * offsetHeight 垂直方向 height + 上下padding + 上下border-width * * clientWidth 水平方向 width + 左右padding * clientHeight 垂直方向 height + 上下padding * * offsetTop 獲取當(dāng)前元素到 定位父節(jié)點(diǎn) 的top方向的距離 * offsetLeft 獲取當(dāng)前元素到 定位父節(jié)點(diǎn) 的left方向的距離 * * scrollWidth 元素內(nèi)容真實(shí)的寬度,內(nèi)容不超出盒子高度時(shí)為盒子的clientWidth * scrollHeight 元素內(nèi)容真實(shí)的高度,內(nèi)容不超出盒子高度時(shí)為盒子的clientHeight * ****** 元素視圖屬性結(jié)束 * ****** Window視圖屬性(低版本IE瀏覽器[<IE9]不支持) 【自測包含滾動(dòng)條,但網(wǎng)絡(luò)教程都說不包含???】 * innerWidth 瀏覽器窗口可視區(qū)寬度(不包括瀏覽器控制臺、菜單欄、工具欄) * innerHeight 瀏覽器窗口可視區(qū)高度(不包括瀏覽器控制臺、菜單欄、工具欄) * ***** Window視圖屬性結(jié)束 * ****** Document文檔視圖 * (低版本IE的innerWidth、innerHeight的代替方案) * document.documentElement.clientWidth 瀏覽器窗口可視區(qū)寬度(不包括瀏覽器控制臺、菜單欄、工具欄、滾動(dòng)條) * document.documentElement.clientHeight 瀏覽器窗口可視區(qū)高度(不包括瀏覽器控制臺、菜單欄、工具欄、滾動(dòng)條) * * document.documentElement.offsetHeight 獲取整個(gè)文檔的高度(包含body的margin) * document.body.offsetHeight 獲取整個(gè)文檔的高度(不包含body的margin) * * document.documentElement.scrollTop 返回文檔的滾動(dòng)top方向的距離(當(dāng)窗口發(fā)生滾動(dòng)時(shí)值改變) * document.documentElement.scrollLeft 返回文檔的滾動(dòng)left方向的距離(當(dāng)窗口發(fā)生滾動(dòng)時(shí)值改變) ****** Document文檔視圖結(jié)束 * ****** 元素方法 * 1. getBoundingClientRect() 獲取元素到body * bottom: 元素底邊(包括border)到可視區(qū)最頂部的距離 * left: 元素最左邊(不包括border)到可視區(qū)最左邊的距離 * right: 元素最右邊(包括border)到可視區(qū)最左邊的距離 * top: 元素頂邊(不包括border)到可視區(qū)最頂部的距離 * height: 元素的offsetHeight * width: 元素的offsetWidth * x: 元素左上角的x坐標(biāo) * y: 元素左上角的y坐標(biāo) * * 2. scrollIntoView() 讓元素滾動(dòng)到可視區(qū) * * ***** 元素方法結(jié)束 * */ </script>
上面屬性中,關(guān)于 window.innerWidth 和 window.innerHeight, 我自己測試的結(jié)果值是包含滾動(dòng)條的,但網(wǎng)上的教程和相關(guān)文檔都說不包括滾動(dòng)條,雖然滾動(dòng)條的寬度不大,對整體影響也不明顯,但如果有道友有準(zhǔn)確答案的,還請不吝賜教,順手留個(gè)言,謝謝!
到此這篇關(guān)于javascript中的offsetWidth、clientWidth、innerWidth及相關(guān)屬性方法的文章就介紹到這了,更多相關(guān)javascript offsetWidth clientWidth innerWidth內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- scrollWidth,clientWidth,offsetWidth的區(qū)別
- javascript scrollLeft,scrollWidth,clientWidth,offsetWidth 完全詳解
- scrollWidth,clientWidth與offsetWidth的區(qū)別
- HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth完全詳解
- this.clientWidth和this.offsetWidth兩個(gè)有什么不同
- 與ClientWidth有關(guān)的一點(diǎn)資料
- JavaScript中clientWidth,offsetWidth,scrollWidth的區(qū)別
相關(guān)文章
javascript腳本編程解決考試分?jǐn)?shù)統(tǒng)計(jì)問題
該考試題目共有25道,每一道都是2選1的選擇題,總分是100分。那么javascript的代碼如下2008-10-10javascript發(fā)送短信驗(yàn)證碼實(shí)現(xiàn)代碼
我們在注冊賬號,或者是參加活動(dòng)時(shí),都會向手機(jī)發(fā)送收短信驗(yàn)證碼,短信驗(yàn)證碼到底是如何實(shí)現(xiàn)的,本文為大家揭曉,并為大家分項(xiàng)1javascript發(fā)送短信驗(yàn)證碼實(shí)現(xiàn)代碼,感興趣的小伙伴們可以參考一下2015-11-11解決在Bootstrap模糊框中使用WebUploader的問題
這篇文章主要介紹了在Bootstrap模糊框中使用WebUploader的問題及解決方法,,需要的朋友可以參考下2018-03-03uniapp實(shí)現(xiàn)橫向滾動(dòng)選擇日期
這篇文章主要為大家詳細(xì)介紹了uniapp實(shí)現(xiàn)橫向滾動(dòng)選擇日期,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10JavaScript利用閉包實(shí)現(xiàn)模塊化
本文主要介紹了JavaScript利用閉包實(shí)現(xiàn)模塊化的方法。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01javascript 事件處理、鼠標(biāo)拖動(dòng)效果實(shí)現(xiàn)方法詳解
在經(jīng)歷了漫長的時(shí)期,終于下定了決心自己寫一個(gè)層的拖動(dòng)。當(dāng)然了,其它的拖動(dòng)也是這樣的思路和做法,或者說,這樣的拖動(dòng)適合所有的可見元素2012-05-05