版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、js獵取隱蔽元素寬高的實(shí)現(xiàn)方法_ 下面我就為大家?guī)?lái)一篇js獵取隱蔽元素寬高的實(shí)現(xiàn)方法。我覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。 網(wǎng)上有一些js獵取隱蔽元素寬高的方法,但是可能會(huì)存在某些狀況獵取不了。 例如: !DOCTYPE html html lang=en head meta http-equiv=Content-Type content=text/html;charset=UTF-8 / titletest/title /head body div id=test style=display:none 我有一壺酒,足以慰風(fēng)塵。盡傾江海里,贈(zèng)飲天下人。 /div div id=
2、test2 style=display:none div style=display:none div id=test2_child 我有一壺酒,足以慰風(fēng)塵。盡傾江海里,贈(zèng)飲天下人。 /div /div /div div id=test3 div div id=test3_child 我有一壺酒,足以慰風(fēng)塵。盡傾江海里,贈(zèng)飲天下人。 /div /div /div /div /body /html test獵取得了,但是test2_child是獵取不到的。鑒于這種狀況,于是自己寫(xiě)了一個(gè)方法解決。 解決思路: 1. 獵取元素(拿寬高那個(gè))全部隱蔽的祖先元素直到body元素,包括自己。 2. 獵取全
3、部隱蔽元素的style的display、visibility 屬性,保存下來(lái)。 3. 設(shè)置全部隱蔽元素為 visibility:hidden;display:block !important;(之所以要important是避開(kāi)優(yōu)先級(jí)不夠)。 4. 獵取元素(拿寬高那個(gè))的寬高。 5. 復(fù)原全部隱蔽元素的style的display、visibility 屬性。 6. 返回元素寬高值。 代碼實(shí)現(xiàn): function getSize(id) var width, height, elem = document.getElementById(id), noneNodes = , nodeStyle =
4、 ; getNoneNode(elem); /獵取多層display:none;的元素 setNodeStyle(); width = elem.clientWidth; height = elem.clientHeight; resumeNodeStyle(); return width : width, height : height function getNoneNode(node) var display = getStyles(node).getPropertyValue(display), tagName = node.nodeName.toLowerCase(); if(dis
5、play != none tagName != body) getNoneNode(node.parentNode); else noneNodes.push(node); if(tagName != body) getNoneNode(node.parentNode); /這方法才能獵取最終是否有display屬性設(shè)置,不能style.display。 function getStyles(elem) / Support: IE=11+, Firefox=30+ (#15098, #14150) / IE throws on elements created in popups / FF m
6、eanwhile throws on frame elements through defaultView.getComputedStyle var view = elem.ownerDocument.defaultView; if (!view | !view.opener) view = window; return view.getComputedStyle(elem); ; function setNodeStyle() var i = 0; for(; i noneNodes.length; i+) var visibility = noneNodesi.style.visibili
7、ty, display = noneNodesi.style.display, style = noneNodesi.getAttribute(style); /掩蓋其他display樣式 noneNodesi.setAttribute(style, visibility:hidden;display:block !important; + style); nodeStylei = visibility :visibility, display : display function resumeNodeStyle() var i = 0; for(; i noneNodes.length; i
8、+) noneNodesi.style.visibility = nodeStylei.visibility; noneNodesi.style.display = nodeStylei.display; 例子演示: var testSize = getSize(test); console.log(test- width: + testSize.width + height: + testSize.height); var test2ChildSize2 = getSize(test2_child); console.log(test2Child2- width: + test2ChildS
9、ize2.width + height: + test2ChildSize2.height); var test3ChildSize = getSize(test3_child); console.log(test3_child- width: + test3ChildSize.width + height: + test3ChildSize.height); /打印值如下 test- width:417 height:18 test2Child2- width:417 height:18 test3_child- width:417 height:18 留意事項(xiàng): 1. 打開(kāi)顯示全部隱蔽祖先元素,然后獵取元素的寬高值,可能在某些狀況下獵取值是不正確的。 PS:不過(guò)這個(gè)不用擔(dān)憂,真正出錯(cuò)時(shí)再hack方法就行。 2. 之所以要保存隱蔽祖先元素display、visibility 屬性,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年荊州江陵縣事業(yè)單位人才引進(jìn)筆試真題
- 2024年撫州客運(yùn)從業(yè)資格證考試技巧
- 2024年??诳瓦\(yùn)資格從業(yè)證考試內(nèi)容
- 2024年沈陽(yáng)客運(yùn)駕駛員考試題庫(kù)及答案選擇題
- 2024年宿州貨運(yùn)從業(yè)資格證考試題
- 鄉(xiāng)村健康養(yǎng)生基地行業(yè)相關(guān)項(xiàng)目診斷報(bào)告
- 2024年廊坊客運(yùn)資格證摸擬考試題
- 2024年石家莊客運(yùn)資格證培訓(xùn)內(nèi)容
- 2024年c1客運(yùn)資格證模擬考試
- 2024年慶陽(yáng)客運(yùn)從業(yè)資格證仿真考試題庫(kù)
- 建筑概論課件
- 羅氏試劑盒說(shuō)明書(shū) IgE II 04840771001-en-t
- 高校與地方合作協(xié)議范文
- 人教版小學(xué)語(yǔ)文課本生字表(2500字)
- 初中英語(yǔ)翻譯綜合訓(xùn)練100題含參考答案
- 北師大版二年級(jí)上冊(cè)數(shù)學(xué)第二單元購(gòu)物單元復(fù)習(xí)課件
- 小學(xué)數(shù)學(xué)青島版四年級(jí)上冊(cè)《總復(fù)習(xí)線與角》課件
- 冷凍機(jī)組施工方案
- 牛津上海版(試用本)三年級(jí)上冊(cè)小學(xué)英語(yǔ)同步練習(xí)試題(全冊(cè))
- 手術(shù)通知單模板
- 31863:2015企業(yè)履約能力達(dá)標(biāo)管理手冊(cè)
評(píng)論
0/150
提交評(píng)論