日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

clientHeight、offsetHeight 和 scrollHeight

發布時間:2023/12/9 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 clientHeight、offsetHeight 和 scrollHeight 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

window.screen.availWidth?????返回當前屏幕寬度(空白空間)? window.screen.availHeight?????返回當前屏幕高度(空白空間)? window.screen.width?????返回當前屏幕寬度(分辨率值)? window.screen.height?????返回當前屏幕高度(分辨率值)? window.document.body.offsetHeight;?????返回當前網頁高度? window.document.body.offsetWidth;?????返回當前網頁寬度? clientHeight與offsetHeight的區別許多文章已經介紹了clientHeight和offsetHeight的區別,就是clientHeight的值不包括scrollbar的高度,而offsetHeight的值包括了scrollbar的高度。然而,clientHeight和offsetHeight的值到底由什么組成的呢?如何計算這兩個數的值?1.?clientHeight和offsetHeight的值由什么決定?假如我們有以下的DIV,主要顯示的文字為"This?is?the?main?body?of?DIV"。如上圖所示,clientHeight的值由DIV內容的實際高度和CSS中的padding值決定,而offsetHeight的值由DIV內容的實際高度,CSS中的padding值,scrollbar的高度和DIV的border值決定;至于CSS中的margin值,則不會影響?clientHeight和offsetHeight的值。2.?CSS中的Height值對clientHeight和offsetHeight有什么影響?首先,我們看一下CSS中Height定義的是什么的高度。如在本文最后部分“APPENDIX示例代碼”(注:以下稱為“示例代碼”)中,innerDIVClass的Height值設定為50px,在IE下計算出來的值如下所示。也就是說,在IE里面,CSS中的Height值定義了?DIV包括padding在內的高度(即offsetHeight的值);在Firefox里面,CSS中的Height值只定義的DIV實際內容的高度,padding并沒有包括在這個值里面(70?=?50?+?10?*?2)。in?IE: innerDiv.clientHeight:?46 innerDiv.offsetHeight:?50 outerDiv.clientHeight:?0 outerDiv.offsetHeight:?264in?Firfox: innerDiv.clientHeight:?70 innerDiv.offsetHeight:?74 outerDiv.clientHeight:?348 outerDiv.offsetHeight:?362在上面的示例中,也許你會很奇怪,為什么在IE里面outerDiv.clientHeight的值為0。那是因為示例代碼中,沒有定義?outerDIVClass的Height值,這時,在IE里面,則clientHeight的值是無法計算的。同樣,在示例代碼中,如果將?innerDIVClass中的Height值去年,則innerDIV.clientHeight的值也為0。(注:在Firefox下不存在這種情況)。如果CSS中Height值小于DIV要顯示內容的高度的時候呢(當CSS中沒有定義overflow的行為時)?在IE里面,整個?clientHeight(或者offsetHeight)的值并沒有影響,DIV會自動被撐大;而在Firefox里面,DIV是不會被撐開的。如在示例代碼中,將innerDivClass的Height值設為0,則計算結果如下所示。IE里面的DIV被撐開,其clientHeight值等于內容的高度與padding*2的和;而Firefox里面,文字將溢出DIV的邊界,其clientHeight值正好是padding值的兩倍。前兩天修改代碼時接觸到網頁高度和可視區域高度的概念,發現clientHeight、offsetHeight、scrollHeight在不同的瀏覽器里會有不同的結果,于是做了一下測試。 HTML?4.01下的測試 測試代碼如下: <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"> <html> <head> <meta?http-equiv="Content-Type"?content="text/html;?charset=UTF-8"?/> <title>clientHeight、offsetHeight和scrollHeight?測試</title> </head> <body><div?id="info"></div> <script?type="text/javascript"> <!-- var?info?=?document.getElementByIdx_x_x("info"); var?infoStr?=?"&lt;!DOCTYPE?HTML?PUBLIC?\"-//W3C//DTD?HTML?4.01?Transitional//EN\"&gt;<br?/>&lt;html&gt;<br?/><br?/>";function?SetInfoStr() {infoStr?+=?"info.style.width?=?"?+?info.style.width?+?"<br?/>"?+"info.style.height?=?"?+?info.style.height?+?"<br?/>"?+"document.body.clientHeight?=?"?+?document.body.clientHeight?+?"<br?/>"?+"document.body.offsetHeight?=?"?+?document.body.offsetHeight?+?"<br?/>"?+"document.body.scrollHeight?=?"?+?document.body.scrollHeight?+?"<br?/>"?+"document.documentElement.clientHeight?=?"?+?document.documentElement.clientHeight?+?"<br?/><br?/>"; }info.style.width?=?"0px"; info.style.height?=?"0px"; SetInfoStr();info.style.width?=?"2000px"; info.style.height?=?"0px"; SetInfoStr();info.style.width?=?"0px"; info.style.height?=?"2000px"; SetInfoStr();info.style.width?=?"2000px"; info.style.height?=?"2000px"; SetInfoStr();infoStr?+=?"<br?/><a?href=\"http://witmax.cn\">晴楓</a>?制作"; info.innerHTML?=?infoStr; --> </script> </body> </html> 測試使用現在主流的四個瀏覽器:IE、Firefox、Opera、Chrome。數據太多,測試結果不予列出。 HTML?4.01下的測試結果分析: document.body.clientHeight 在各個瀏覽器中都是等于內容可視區域的高度。內容可視區域是指瀏覽器最后一個工具條以下到狀態欄以上的區域,與頁面內容無關,如有滾動條的話則排除滾動條所占的區域。因為各瀏覽器對寬度超過屏幕寬度、高度為0的div是否會使屏幕出現滾動條理解不一,因此測試結果會略有不同。測試結果顯示Firefox不顯示滾動條,IE、Opera、Chrome都會顯示滾動條。 document.body.offsetHeight IE和Opera下該值一直等于document.body.clientHeight+滾動條高度+窗口邊框(IE為4,Opera為0),即瀏覽器最后一個工具條以下到狀態欄以上的區域的高度。 Firefox下該值等于網頁內容實際高度,即body上下border外延之間的距離(包括body的border和padding、不包括body的margin,通過對body標簽增加樣式對比結果可知),可小于document.body.clientHeight。 注:body的border和padding默認值為0px,margin-top和margin-bottom默認值IE為15px、其他為8px。 Chrome下該值等于網頁內容實際高度(定義同上);但當網頁內容實際高度于document.body.clientHeight時,該值等于document.body.clientHeight-body的margin寬度。 document.body.scrollHeight IE下該值等于網頁內容實際高度(定義同上)+body的上下magin寬度,可小于document.body.clientHeight。 Firefox、Opera、Chrome下該值等于網頁內容實際高度(定義同上)+body的上下magin寬度;但當等于網頁內容實際高度(定義同上)+body的上下magin寬度小于document.body.clientHeight時,該值等于document.body.clientHeight。 document.documentElement.clientHeight IE下該值一直為0。 Firefox和Opera下該值等于網頁內容實際高度(定義同上)+body的上下magin寬度,可小于document.body.clientHeight。 Chrome下該值等于document.body.scrollHeight。 同理,clientWidth、offsetWidth?和?scrollWidth?的解釋與上面相同,只是把高度換成寬度即可。 出于瀏覽器兼容的考慮,要獲取頁面的實際高度就需要區別獲取。顯得麻煩。 注:不指定doctype,結果與上述測試相同,即HTML?4.01是瀏覽器的默認渲染模式。XHTML?1.1下的測試 下面修改HTML文檔的doctype,只修改了前兩行代碼,將測試代碼改為如下:<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.1//EN"?"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html?xmlns="http://www.w3.org/1999/xhtml"?> <head> <meta?http-equiv="Content-Type"?content="text/html;?charset=UTF-8"?/> <title>clientHeight、offsetHeight和scrollHeight?測試</title> </head> <body><div?id="info"></div> <script?type="text/javascript"> <!-- var?info?=?document.getElementByIdx_x_x("info"); var?infoStr?=?"&lt;!DOCTYPE?html?PUBLIC?\"-//W3C//DTD?XHTML?1.1//EN\"?\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\"&gt;<br?/>&lt;html?xmlns=\"http://www.w3.org/1999/xhtml\"?&gt;<br?/><br?/>";function?SetInfoStr() {infoStr?+=?"info.style.width?=?"?+?info.style.width?+?"<br?/>"?+"info.style.height?=?"?+?info.style.height?+?"<br?/>"?+"document.body.clientHeight?=?"?+?document.body.clientHeight?+?"<br?/>"?+"document.body.offsetHeight?=?"?+?document.body.offsetHeight?+?"<br?/>"?+"document.body.scrollHeight?=?"?+?document.body.scrollHeight?+?"<br?/>"?+"document.documentElement.clientHeight?=?"?+?document.documentElement.clientHeight?+?"<br?/><br?/>"; }info.style.width?=?"0px"; info.style.height?=?"0px"; SetInfoStr();info.style.width?=?"2000px"; info.style.height?=?"0px"; SetInfoStr();info.style.width?=?"0px"; info.style.height?=?"2000px"; SetInfoStr();info.style.width?=?"2000px"; info.style.height?=?"2000px"; SetInfoStr();infoStr?+=?"<br?/><a?href=\"http://witmax.cn\">晴楓</a>?制作"; info.innerHTML?=?infoStr; --> </script> </body> </html>依然使用上述四個瀏覽器——IE、Firefox、Opera、Chrome進行測試。數據太多,測試結果不予列出。 XHTML?1.1下的測試結果分析: document.body.clientHeight?/?document.body.offsetHeight 都相等,且各瀏覽器表現一致,都等于頁面內容實際高度(定義同上),最小可為0。 document.body.scrollHeight IE、Firefox、Opera表現相同,都等于document.body.clientHeight和document.body.offsetHeight,最小可為0。 Chrome下該值等于HTML?4.01下的document.body.scrollHeight。 document.documentElement.clientHeight 各瀏覽器表現一致,都等于內容可視區域的高度(定義同上),等于HTML?4.01下的document.body.clientHeight值。 注:指定doctype為<!DOCTYPE?HTML>,結果與上述測試相同,即HTML?5延續了XHTML?1.1的一些規范。總???結 要保證瀏覽器兼容,建議是采用XHTML?1.1,這樣便可以使用document.body.clientHeight或document.body.offsetHeight獲得頁面的實際高度,使用document.documentElement.clientHeight獲得內容可視區域的高度。因為HTML?5標準并沒有被所有主流瀏覽器全部支持,所以暫不推薦使用,當然這將是未來的發展趨勢。最后,關于doctype的知識建議學習下《用doctype激活瀏覽器模式》。


轉載于:https://my.oschina.net/meng527/blog/481219

總結

以上是生活随笔為你收集整理的clientHeight、offsetHeight 和 scrollHeight的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 我把护士日出水了视频90分钟 | 午夜av一区二区 | 最近中文字幕在线免费观看 | 男人资源网站 | 四虎av| 日本大尺度床戏揉捏胸 | 亚洲精品天堂成人片av在线播放 | 99re国产| 欧美精品第一区 | 日本人妻一区二区三区 | 麻豆91视频 | 麻豆chinese极品少妇 | 亚洲色图视频在线观看 | 九九爱精品 | 亚日韩欧美 | 日韩美女少妇 | 少妇人妻一级a毛片 | 欧美视频免费看 | 欧美日韩综合视频 | 免费网站污 | 日韩专区中文字幕 | 激情av中文字幕 | 男女插孔视频 | 欧美变态口味重另类在线视频 | 男生桶女生肌肌 | 台湾av在线 | 青青草视频在线看 | 播播成人网 | 国产天堂久久 | xxxxav| 久久手机免费视频 | 人妻视频一区 | 日本一区不卡在线观看 | 亚洲无线视频 | 久久久成人精品一区二区三区 | 深夜福利国产 | 亚洲免费a | 一级少妇毛片 | 亚洲欧美成人网 | 另类综合视频 | 午夜国产一区二区 | 99久久久无码国产 | 性高跟鞋xxxxhd人妖 | 日日噜噜噜夜夜爽爽狠狠 | 爱搞逼综合 | 男女激情网 | 色一区二区 | 国产精品videossex久久发布 | av老司机在线播放 | 99亚洲精品| 一级片麻豆 | 国产九九九 | 日韩久久久精品 | 国产探花在线精品一区二区 | 在线观看成人免费视频 | 国产成人91 | xxxx在线播放 | 成人黄色免费在线观看 | 日本中文在线 | 国产精品一区二区三区线羞羞网站 | 国产尻逼| 欧美性猛交ⅹxxx乱大交3 | 亚洲午夜影视 | 成人动漫一区二区三区 | 亚洲男人的天堂在线 | 日韩一区二区三区电影 | 久久综合鬼色 | 久久高清国产 | 国产精品69毛片高清亚洲 | 一级黄色片免费看 | 亚洲精品888| 日韩成人精品一区二区三区 | 香蕉在线看 | a√天堂资源 | 日韩毛片一区二区三区 | 奇米在线777 | 午夜激情小视频 | 黄站在线观看 | 一本大道综合伊人精品热热 | 欧美激情视频一区二区 | 国产无套视频 | 操一操av| 精品一区二区三区四 | 精品国产伦一区二区三区免费 | 色天天 | 成人午夜激情视频 | 在线播放a| 少妇激情四射 | 加勒比综合网 | 天天干天天上 | 免费看欧美大片 | 4438x全国最大成人 | 噼里啪啦动漫高清在线观看 | 日韩电影三级 | hitomi一区二区三区精品 | 日本二区在线观看 | 精品人妻少妇嫩草av无码 | 中文字幕欧美激情 | 精品一区二区三区蜜臀 |