util.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /**
  2. * 获取滚动条宽度
  3. */
  4. let cached = undefined;
  5. export const getScrollbarSize = fresh => {
  6. // #ifdef H5
  7. if (fresh || cached === undefined) {
  8. let inner = document.createElement("div");
  9. let innerStyle = inner.style;
  10. innerStyle.width = "100%";
  11. innerStyle.height = "200px";
  12. let outer = document.createElement("div");
  13. let outerStyle = outer.style;
  14. outerStyle.position = "absolute";
  15. outerStyle.top = 0;
  16. outerStyle.left = 0;
  17. outerStyle.pointerEvents = "none";
  18. outerStyle.width = "200px";
  19. outerStyle.height = "150px";
  20. outerStyle.visibility = "hidden";
  21. outer.appendChild(inner);
  22. document.body.appendChild(outer);
  23. // 设置子元素超出部分隐藏
  24. outerStyle.overflow = "hidden";
  25. let width1 = inner.offsetWidth;
  26. // 设置子元素超出部分滚动
  27. outer.style.overflow = "scroll";
  28. let width2 = inner.offsetWidth;
  29. if (width1 === width2) {
  30. width2 = outer.clientWidth;
  31. }
  32. document.body.removeChild(outer);
  33. cached = width1 - width2;
  34. }
  35. //#endif
  36. return cached;
  37. };