js获取页面滚动条宽度

阳光穿透心脏的1/2处 2021-12-14 05:57 464阅读 0赞
  1. let cached;
  2. function getScrollBarSize(fresh){
  3. //fresh 是否重新获取, cached: 是否获取过
  4. if(fresh || cahced===undefined) {
  5. const inner = document.createElement('div');
  6. inner.style.width = '100%';
  7. inner.style.height = '200px';
  8. const outer = document.createElement('div');
  9. outer.style.position = 'absolute';
  10. outer.style.top = 0;
  11. outer.style.left = 0;
  12. outer.style.visibility = 'hidden';
  13. outer.style.width = '200px';
  14. outer.style.height = '150px'; //父元素高度比内部元素高度小
  15. outer.style.overflow = 'hidden';
  16. outer.appendChild(inner);
  17. document.body.appendChild(outer);
  18. const widthContained = inner.offsetWidth;
  19. outer.style.overflow = 'scroll'; //让滚动条显示出来
  20. let widthScroll = inner.offsetWidth; //offsetWidth: content+padding+border
  21. if(widthContained === widthScroll){
  22. widthScroll = outer.clientWidth; //clientWidth: content + padding
  23. }
  24. document.body.removeChild(outer);
  25. /** const widthContained = outer.offsetWidth; const widthScroll = outer.clientWidth; document.body.removeChild(outer); **/
  26. cached = widthContained - widthScroll
  27. }
  28. return cached;
  29. }

发表评论

表情:
评论列表 (有 0 条评论,464人围观)

还没有评论,来说两句吧...

相关阅读