亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

通過 JS 判斷頁面是否有滾動條的實現方法

2024-05-06 16:43:34
字體:
來源:轉載
供稿:網友

前言

最近在寫插件的過程中,需要使用 JS 判斷是否有滾動條,搜了一下,大致方法都差不多,但都有些啰嗦,代碼不夠簡潔。最終通過參考不同方法,寫了一個比較簡單的方法。在判斷滾動條的同時也需要計算滾動條的寬度,通過本篇文章一并與大家分享。

為什么要判斷滾動條

JS,判斷,滾動條

判斷滾動條的需求在彈窗插件中用的較多,因為彈窗大多會添加 overflow: hidden 的屬性,如果頁面比較長的話,添加這個屬性之后頁面會有晃動。

為了增強用戶體驗,通過判斷是否有滾動條而添加 margin-left 屬性以抵消 overflow: hidden 之后的滾動條位置。

判斷是否有滾動條的方法

其實只需要一行 JS 就可以,測試兼容 IE7

function hasScrollbar() {  return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);}

一般情況下,使用 document.body.scrollHeight > window.innerHeight 就可以判斷。

但是在 IE7,IE8 中 window.innerHeight 為 underfined,所以為了兼容 IE7、IE8,需要使用document.documentElement.clientHeight 屬性計算窗口高度。

計算滾動條寬度的方法

還是以彈窗為例,因為 IE 10 以上以及移動端瀏覽器的滾動條都是不占據頁面寬度的透明樣式(其中 IE 10 以上瀏覽器可以通過 CSS 屬性還原原始的滾動條樣式),所以為了進一步增強用戶體驗,我們還需要計算滾動條的寬度,根據情況添加合理的 margin-left 數值。

JS,判斷,滾動條

計算滾動條寬度的方法比較簡單,新建一個帶有滾動條的 div 元素,通過該元素的 offsetWidth clientWidth 的差值即可獲得,我在此借鑒 Magnific-popup 中的方法

function getScrollbarWidth() {  var scrollDiv = document.createElement("div");  scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';  document.body.appendChild(scrollDiv);  var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;  document.body.removeChild(scrollDiv);  return scrollbarWidth;}

總結

使用 JS 實現一個功能可能并不困難,但作為編程人員應該時刻思考如何更簡單更優雅的實現這個功能,并且時刻以提升用戶體驗為原則。對于條件判斷,也許十行的邏輯判斷可能只需要一行,最近感受極為深刻,而且要善于使用三元表達式替代 if..else 來精簡代碼。

原理就是判斷 是文檔高度大于可視區域高度。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品小视频在线观看| 国产mv久久久| 成人a在线视频| 国产日韩精品综合网站| 国产69精品久久久| 亚洲视频第一页| 亚洲电影成人av99爱色| 欧美精品生活片| 深夜福利91大全| 欧美视频一区二区三区…| 国产亚洲精品一区二区| 欧美成人精品h版在线观看| 国产男女猛烈无遮挡91| 国产亚洲视频在线| 日韩女优人人人人射在线视频| 亚洲三级av在线| 九九热这里只有精品免费看| 国产精品第1页| 欧美激情免费看| 亚洲国产天堂网精品网站| 91精品成人久久| 亚洲精品黄网在线观看| 亚洲xxxx妇黄裸体| 在线不卡国产精品| 中日韩美女免费视频网址在线观看| 精品国产成人在线| 国产精品精品视频一区二区三区| 亚洲国产另类久久精品| 国产成人久久精品| 日韩欧中文字幕| 国产在线观看91精品一区| 国产成人精品久久久| 色综合久综合久久综合久鬼88| 亚洲国产婷婷香蕉久久久久久| 免费91麻豆精品国产自产在线观看| 亚洲欧美在线磁力| 欧美黑人巨大精品一区二区| 亚洲欧美国产精品专区久久| 另类视频在线观看| 亚洲精品资源美女情侣酒店| 日韩中文字幕精品| 亚洲性日韩精品一区二区| 国产精品视频自在线| 久久深夜福利免费观看| 免费91麻豆精品国产自产在线观看| 国产精品久久久久久久天堂| 国产不卡精品视男人的天堂| 亚洲欧美日韩一区二区三区在线| 亚洲国产精久久久久久久| 亚洲国产欧美一区二区三区同亚洲| 亚洲精品suv精品一区二区| 久久人91精品久久久久久不卡| 国产精品视频最多的网站| 久久免费视频这里只有精品| 国产免费一区二区三区在线观看| 久久天天躁狠狠躁夜夜av| 国产欧美一区二区三区四区| 精品欧美激情精品一区| 成人国产精品一区| 亚洲最大福利网站| 久久久精品999| 久久精品国产一区二区电影| 国产91在线视频| 亚洲精品动漫100p| 国产精品www网站| 国产综合福利在线| 亚洲国产精品人人爽夜夜爽| 成人性生交大片免费观看嘿嘿视频| 2023亚洲男人天堂| 欧美日韩加勒比精品一区| 欧美xxxx做受欧美.88| 国产精品美女www| 亚洲日本中文字幕| 91社影院在线观看| 秋霞成人午夜鲁丝一区二区三区| 欧美黄色片在线观看| 久久久久久久色| 国产深夜精品福利| 一区二区三区日韩在线| 色悠悠国产精品| 久久免费视频网| 亚洲片国产一区一级在线观看| 欧美激情视频免费观看| 国产一区二区三区视频在线观看| 色多多国产成人永久免费网站| 亚洲精品一区中文| 国产一区二区久久精品| 亚洲欧洲黄色网| 中文字幕日韩在线观看| 亚洲香蕉成人av网站在线观看| 日韩在线视频网站| 国内伊人久久久久久网站视频| 欧美性生活大片免费观看网址| 精品国产一区av| 亚洲香蕉在线观看| 91中文字幕在线观看| 亚洲日韩中文字幕在线播放| 日韩视频免费观看| 日韩亚洲欧美成人| 久久夜精品香蕉| 92看片淫黄大片看国产片| 91精品久久久久久久久久久久久久| 国产欧美在线播放| 久久国产精品99国产精| 欧美激情一二三| 91热福利电影| 日韩精品在线视频| 日韩精品欧美国产精品忘忧草| 国产日韩欧美日韩大片| 美乳少妇欧美精品| 亚洲综合色激情五月| 国产精品白丝av嫩草影院| 午夜精品三级视频福利| 久久亚洲影音av资源网| 欧美成年人视频网站欧美| 91在线|亚洲| 久久久久久国产三级电影| 日韩高清不卡av| 午夜精品久久久久久99热软件| 亚洲美女在线视频| 欧美国产乱视频| 国产精品嫩草影院一区二区| 欧美日韩国产中文精品字幕自在自线| www.日韩不卡电影av| 欧美整片在线观看| 中文字幕日韩av电影| 久久久久久久网站| 久久综合久久八八| 91在线观看欧美日韩| 欧美激情久久久久| 亚洲在线观看视频网站| 成人有码在线视频| 久久亚洲精品毛片| 欧美区二区三区| 青青久久aⅴ北条麻妃| 欧美最猛性xxxx| 国产精品一区二区久久久久| 在线亚洲午夜片av大片| 亚洲欧美国产日韩中文字幕| 97视频免费在线看| 欧美精品亚州精品| 97福利一区二区| 色噜噜国产精品视频一区二区| 欧美激情视频在线观看| 日韩黄色av网站| 成人免费观看49www在线观看| 欧美一区视频在线| 性欧美办公室18xxxxhd| 欧美极品第一页| 国产精品第1页| 亚洲自拍偷拍色图| 久久久亚洲影院| 欧美激情亚洲激情| 国产亚洲精品成人av久久ww| 国产经典一区二区| 69**夜色精品国产69乱| 国产91露脸中文字幕在线| 国产精品久久久久久超碰| 最新69国产成人精品视频免费| 北条麻妃在线一区二区| 一区二区三区久久精品| 成人网在线视频| 欧美国产日韩一区| 欧美高清视频一区二区|