摘要:原原獲取元素高度這樣寫之后在的時(shí)候發(fā)現(xiàn)返回值為。那為什么會(huì)是的,百一下谷一下測(cè)試一下發(fā)現(xiàn)這個(gè)這里只能獲取的值是標(biāo)簽元素行內(nèi)樣式的值。
開篇的話
任何不是親身實(shí)踐中求得的知識(shí),都不是屬于你的。
任何求得的知識(shí)不去時(shí)常溫習(xí)運(yùn)用,也不是屬于你的。
在做個(gè)上拉廣告功能中遇到了一個(gè)“理所當(dāng)然”覺得對(duì)的用法,慢慢才排查出是獲取元素高度那里出了問題,這個(gè)問題記憶在書上或視頻中看到過,許久沒用,用的時(shí)候就想當(dāng)然了。遂決定深入剖析用法,增加記憶,記錄發(fā)表出來,也能給各位前端同行、求學(xué)者增加印象。
出錯(cuò)之處秉承結(jié)構(gòu)、樣式、行為分離的宗旨,每次不管大小案例都是分開寫html、css、js。這也算拋磚引出了我犯錯(cuò)的玉。
原css:
原js獲取DOM元素高度:
var adcon = document.getElementById("adcon"); var maxH = parseInt(adcon.style.height);
這樣寫之后在console的時(shí)候發(fā)現(xiàn):
返回值為NaN。 Orz...
寫個(gè)例子測(cè)試一下:
仔細(xì)查找CSSStyleDeclaration發(fā)現(xiàn)height對(duì)應(yīng)值為空
這樣就知道為什么會(huì)返回NaN了。
那為什么會(huì)是""的,百一下谷一下測(cè)試一下發(fā)現(xiàn):
這個(gè)test.style.xxx 這里只能獲取的值是標(biāo)簽元素行內(nèi)樣式的值。
也就是說如果這樣寫:
CSSStyleDeclaration里才會(huì)包括:
這種方式就會(huì)取得到值:
關(guān)于原生JS取dom元素寬高的方法,我總結(jié)了以下五種方法,有遺漏的望各位網(wǎng)友提出,謝謝~
window.getComputedStyle(dom元素,"偽類").屬性名
dom元素.clientHeight/clientWidth
dom元素.offsetHeight/offsetWidth
dom元素.scrollHeight/scrollWidth
dom元素.style.height/width
光說不練假把式,直接上codes來解釋:
這個(gè)方法是只讀的,具體語法和應(yīng)用的詳細(xì)講解可以參見張?chǎng)涡翊罄械倪@篇:傳送門
由此可見,這個(gè)方法取得值是內(nèi)容content區(qū)域的值,與padding、margin和邊框無關(guān)。
dom元素.clientHeight/clientWidth方法可見這是內(nèi)容區(qū)域+上下padding的值。
dom元素.offsetHeight/offsetWidth可見這是內(nèi)容區(qū)域+兩個(gè)padding+兩個(gè)border的值
dom元素.style.height/width這一開始分析過了,取得是元素行內(nèi)樣式的height值(內(nèi)容區(qū)域的值)
dom元素.scrollHeight/scrollWidth我給例子加了很多內(nèi)容,出現(xiàn)滾動(dòng)條:
測(cè)試結(jié)果:
由此可見,scrollHeight方法返回的還是content內(nèi)容區(qū)域+兩個(gè)padding的值。
scrollWidth方法返回的是正文內(nèi)容的總寬度
以上是通過實(shí)際測(cè)試得出來的結(jié)論,個(gè)人認(rèn)為比看一大片干巴巴的文字更容易理解。下一次在實(shí)戰(zhàn)中遇見應(yīng)該不會(huì)再犯錯(cuò)了。
小白一枚,淺面記錄,如有錯(cuò)誤、建議、缺漏,懇請(qǐng)指出。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/113964.html
摘要:原原獲取元素高度這樣寫之后在的時(shí)候發(fā)現(xiàn)返回值為。那為什么會(huì)是的,百一下谷一下測(cè)試一下發(fā)現(xiàn)這個(gè)這里只能獲取的值是標(biāo)簽元素行內(nèi)樣式的值。 開篇的話 任何不是親身實(shí)踐中求得的知識(shí),都不是屬于你的。任何求得的知識(shí)不去時(shí)常溫習(xí)運(yùn)用,也不是屬于你的。 記錄由來 在做個(gè)上拉廣告功能中遇到了一個(gè)理所當(dāng)然覺得對(duì)的用法,慢慢才排查出是獲取元素高度那里出了問題,這個(gè)問題記憶在書上或視頻中看到過,許久沒用,...
摘要:原原獲取元素高度這樣寫之后在的時(shí)候發(fā)現(xiàn)返回值為。那為什么會(huì)是的,百一下谷一下測(cè)試一下發(fā)現(xiàn)這個(gè)這里只能獲取的值是標(biāo)簽元素行內(nèi)樣式的值。 開篇的話 任何不是親身實(shí)踐中求得的知識(shí),都不是屬于你的。任何求得的知識(shí)不去時(shí)常溫習(xí)運(yùn)用,也不是屬于你的。 記錄由來 在做個(gè)上拉廣告功能中遇到了一個(gè)理所當(dāng)然覺得對(duì)的用法,慢慢才排查出是獲取元素高度那里出了問題,這個(gè)問題記憶在書上或視頻中看到過,許久沒用,...
摘要:本次技術(shù)調(diào)研來源于項(xiàng)目中的一個(gè)重要功能需求實(shí)現(xiàn)微信長(zhǎng)按網(wǎng)頁保存為截圖。以下主要解決兩類跨域的圖片資源包括已配置過的中的圖片資源和微信用戶頭像圖片資源。 本次技術(shù)調(diào)研來源于H5項(xiàng)目中的一個(gè)重要功能需求:實(shí)現(xiàn)微信長(zhǎng)按網(wǎng)頁保存為截圖。 這里有個(gè)栗子(請(qǐng)用微信打開,長(zhǎng)按圖片即可保存):3分鐘探索你的知識(shí)邊界 將整個(gè)網(wǎng)頁保存為圖片是一個(gè)十分有趣的功能,常見于H5活動(dòng)頁的結(jié)尾頁分享。以下則是項(xiàng)目中...
摘要:本次技術(shù)調(diào)研來源于項(xiàng)目中的一個(gè)重要功能需求實(shí)現(xiàn)微信長(zhǎng)按網(wǎng)頁保存為截圖。以下主要解決兩類跨域的圖片資源包括已配置過的中的圖片資源和微信用戶頭像圖片資源。 本次技術(shù)調(diào)研來源于H5項(xiàng)目中的一個(gè)重要功能需求:實(shí)現(xiàn)微信長(zhǎng)按網(wǎng)頁保存為截圖。 這里有個(gè)栗子(請(qǐng)用微信打開,長(zhǎng)按圖片即可保存):3分鐘探索你的知識(shí)邊界 將整個(gè)網(wǎng)頁保存為圖片是一個(gè)十分有趣的功能,常見于H5活動(dòng)頁的結(jié)尾頁分享。以下則是項(xiàng)目中...
摘要:本次技術(shù)調(diào)研來源于項(xiàng)目中的一個(gè)重要功能需求實(shí)現(xiàn)微信長(zhǎng)按網(wǎng)頁保存為截圖。以下主要解決兩類跨域的圖片資源包括已配置過的中的圖片資源和微信用戶頭像圖片資源。 本次技術(shù)調(diào)研來源于H5項(xiàng)目中的一個(gè)重要功能需求:實(shí)現(xiàn)微信長(zhǎng)按網(wǎng)頁保存為截圖。 這里有個(gè)栗子(請(qǐng)用微信打開,長(zhǎng)按圖片即可保存):3分鐘探索你的知識(shí)邊界 將整個(gè)網(wǎng)頁保存為圖片是一個(gè)十分有趣的功能,常見于H5活動(dòng)頁的結(jié)尾頁分享。以下則是項(xiàng)目中...
閱讀 1986·2021-11-23 10:03
閱讀 4193·2021-11-22 09:34
閱讀 2495·2021-10-08 10:05
閱讀 2259·2019-08-30 15:53
閱讀 1698·2019-08-30 13:56
閱讀 1169·2019-08-29 16:52
閱讀 1118·2019-08-26 13:31
閱讀 3358·2019-08-26 11:45