摘要:判斷元素是否有滾動條因為出現(xiàn)滾動條便意味著元素空間將大于其內容顯示區(qū)域,根據(jù)這個現(xiàn)象便可以得到判斷是否出現(xiàn)滾動條的規(guī)則。
判斷元素是否有滾動條
因為出現(xiàn)滾動條便意味著元素空間將大于其內容顯示區(qū)域,根據(jù)這個現(xiàn)象便可以得到判斷是否出現(xiàn)滾動條的規(guī)則。判斷豎向滾動條
el.scrollHeight > el.clientHeight
這條規(guī)則使用了獲取元素不同高度的兩個屬性:
scrollHeight
指的是元素的內容高度,即如果有滾動條,它的值會等于內容實際的高度加padding值(并不包含border和margin值),在沒有內容溢出的情況下它的值等于clientHeight;
clientHeight
指的是元素的內部高度的px值,包括content和padding值之和,并不包括橫向滾動條(horizontal scrollbar)、border和margin的值。
故而如果每個元素的scrollHeight值大于clientHeight值,則可以說明其出現(xiàn)了豎向滾動條。判斷橫向滾動條
el.scrollWidth > el.clientWidth
同樣這里使用了獲取元素寬度的兩個屬性:
scrollWidth
指的是遠的內容高度,即它的值會等于內容實際的寬度加上padding值(不包含border和margin值),在沒有內容溢出的情況下它的值等于clientWidth;
clientWidth
指的是元素的內部寬度的px值,包括content和padding值之和,并不包括橫向滾動條(horizontal scrollbar)、border和margin的值。
故而如果每個元素的scrollWidth值大于clientWidth值,則可以說明其出現(xiàn)了橫向滾動條。兼容性
scrollWidth/scrollHeight:IE8及以上、Chrome 4.0、FireFox 3.0、Safari 4.9 和Opera均支持兼容該屬性;
clientWidth/clientWidth:IE6以上及其他現(xiàn)代瀏覽器都支持該屬性。
特殊情況當元素指定了`overflow:hidden`時,是不會出現(xiàn)滾動條的,就算元素的內容尺寸超過了元素尺寸也是不會出現(xiàn) 滾動條的,所以這里需要對元素是否應用了`overflow:hidden`進行判斷。
getComputedStyle
使用window對象下的getComputedStyle方法,可以獲得元素中最終應用的CSS屬性值,并且返回一個 CSSStyleDeclaration對象。故而我們可以通過以下寫法來獲取最終應用于元素上overflow的值:
window.getComputedStyle(el).getPropertyValue("overflow")
currentStyle
鑒于getComputedStyleIE9以下不支持,故而這里需要使用IE中特有的currentStyle來獲取最終應用于元素中的overflow屬性值:
el.currentStyle.overflow總結
綜上可以得出判斷元素出現(xiàn)滾動條方法的代碼,如下: function hasScrolled(el, direction = "vertical") { if(direction === "vertical") { return el.scrollHeight > el.clientHeight; }else if(direction === "horizontal") { return el.scrollWidth > el.clientWidth; } }
在線Demo:http://codepen.io/willshawzq/pen/PPVdNX
參考文檔http://www.zhangxinxu.com/wordpress/2012/05/getcomputedstyle-js-getpropertyvalue-currentstyle/
https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/49657.html
摘要:判斷元素是否有滾動條因為出現(xiàn)滾動條便意味著元素空間將大于其內容顯示區(qū)域,根據(jù)這個現(xiàn)象便可以得到判斷是否出現(xiàn)滾動條的規(guī)則。 判斷元素是否有滾動條 因為出現(xiàn)滾動條便意味著元素空間將大于其內容顯示區(qū)域,根據(jù)這個現(xiàn)象便可以得到判斷是否出現(xiàn)滾動條的規(guī)則。 判斷豎向滾動條 el.scrollHeight > el.clientHeight 這條規(guī)則使用了獲取元素不同高度的兩個屬性: scroll...
摘要:在這里一次性做個總結,以用來判斷元素是否在可視區(qū)域以及用原生簡單實現(xiàn)懶加載。被隱藏在內容區(qū)域左側的像素數(shù)。比如上篇文章文字跑馬燈項目中的使用戳此跳轉小結只讀屬性,不包括滾動條。 個性簽名: 生如夏花,逝如冬雪;人生如此,何悔何怨。 前言: 經常需要計算元素的大小或者所在頁面的位置,offsetWidth,clientWidth,scrollWidth,scrollTop這幾個關鍵字的出...
摘要:在這里一次性做個總結,以用來判斷元素是否在可視區(qū)域以及用原生簡單實現(xiàn)懶加載。被隱藏在內容區(qū)域左側的像素數(shù)。比如上篇文章文字跑馬燈項目中的使用戳此跳轉小結只讀屬性,不包括滾動條。 個性簽名: 生如夏花,逝如冬雪;人生如此,何悔何怨。 前言: 經常需要計算元素的大小或者所在頁面的位置,offsetWidth,clientWidth,scrollWidth,scrollTop這幾個關鍵字的出...
摘要:在這里一次性做個總結,以用來判斷元素是否在可視區(qū)域以及用原生簡單實現(xiàn)懶加載。被隱藏在內容區(qū)域左側的像素數(shù)。比如上篇文章文字跑馬燈項目中的使用戳此跳轉小結只讀屬性,不包括滾動條。 個性簽名: 生如夏花,逝如冬雪;人生如此,何悔何怨。 前言: 經常需要計算元素的大小或者所在頁面的位置,offsetWidth,clientWidth,scrollWidth,scrollTop這幾個關鍵字的出...
閱讀 1850·2023-04-26 00:59
閱讀 3142·2021-11-15 18:10
閱讀 3088·2021-09-22 16:02
閱讀 772·2021-09-02 15:15
閱讀 3726·2019-08-30 15:56
閱讀 1925·2019-08-30 15:54
閱讀 2869·2019-08-29 16:31
閱讀 2044·2019-08-29 16:10