tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 3.69 kB
Source Map (JSON)
{"version":3,"file":"getScrollbarWidth.mjs","sources":["../../../../src/_common/js/utils/getScrollbarWidth.ts"],"sourcesContent":["/**\n * 计算滚动条宽度的方法\n * 新建一个带有滚动条的 div 元素,通过该元素的 offsetWidth 和 clientWidth 的差值即可获得\n * CSS 中设置了 -webkit-scrollbar { width: 6px; height: 6px },固定浏览器滚动条宽度,仅限 Chrome/Safari\n * Safari UA\n * \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)\n * AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Safari/605.1.15\"\n * Chrome UA\n * Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)\n * AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36\n * FireFox UA\n * Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:94.0) Gecko/20100101 Firefox/94.0\n * IE UA\n * \"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2;\n * .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\"\n */\nimport { getIEVersion } from './helper';\n\nexport function getScrollbarWidthWithCSS() {\n const defaultScrollbarWidth = 6;\n if (typeof navigator === 'undefined' || !navigator) return defaultScrollbarWidth;\n if (/(Chrome|Safari)/i.test(navigator.userAgent)) return defaultScrollbarWidth;\n const scrollDiv = document.createElement('div');\n scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';\n document.body.appendChild(scrollDiv);\n let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n // 火狐浏览器需要再减去 4\n if (/Firefox/.test(navigator.userAgent)) {\n scrollbarWidth -= 4;\n }\n if (getIEVersion() <= 11) {\n scrollbarWidth = 12;\n }\n return scrollbarWidth;\n}\n\n/**\n * @description: Calculate scroll bar width\n * @param container Container used to calculate scrollbar width\n * @default container: document.body\n */\nexport function getScrollbarWidth(container: HTMLElement = document.body) {\n if (container === document.body) {\n return window.innerWidth - document.documentElement.clientWidth;\n }\n return container.offsetWidth - container.clientWidth;\n}\n"],"names":["getScrollbarWidthWithCSS","defaultScrollbarWidth","navigator","test","userAgent","scrollDiv","document","createElement","style","cssText","body","appendChild","scrollbarWidth","offsetWidth","clientWidth","removeChild","getIEVersion","getScrollbarWidth","container","arguments","length","undefined","window","innerWidth","documentElement"],"mappings":";;;;;;;;;;;;;;;AAkBO,SAASA,wBAA2BA,GAAA;EACzC,IAAMC,qBAAwB,GAAA,CAAA,CAAA;EAC1B,IAAA,OAAOC,SAAc,KAAA,WAAA,IAAe,CAACA,SAAA,EAAkB,OAAAD,qBAAA,CAAA;EACvD,IAAA,kBAAA,CAAmBE,IAAK,CAAAD,SAAA,CAAUE,SAAS,CAAA,EAAU,OAAAH,qBAAA,CAAA;AACnD,EAAA,IAAAI,SAAA,GAAYC,QAAS,CAAAC,aAAA,CAAc,KAAK,CAAA,CAAA;AAC9CF,EAAAA,SAAA,CAAUG,MAAMC,OAAU,GAAA,gFAAA,CAAA;AACjBH,EAAAA,QAAA,CAAAI,IAAA,CAAKC,YAAYN,SAAS,CAAA,CAAA;EAC/B,IAAAO,cAAA,GAAiBP,SAAU,CAAAQ,WAAA,GAAcR,SAAU,CAAAS,WAAA,CAAA;AAC9CR,EAAAA,QAAA,CAAAI,IAAA,CAAKK,YAAYV,SAAS,CAAA,CAAA;EAEnC,IAAI,SAAU,CAAAF,IAAA,CAAKD,SAAU,CAAAE,SAAS,CAAG,EAAA;AACrBQ,IAAAA,cAAA,IAAA,CAAA,CAAA;AACpB,GAAA;AACI,EAAA,IAAAI,YAAA,MAAkB,EAAI,EAAA;AACPJ,IAAAA,cAAA,GAAA,EAAA,CAAA;AACnB,GAAA;AACO,EAAA,OAAAA,cAAA,CAAA;AACT,CAAA;AAOgB,SAAAK,iBAAAA,GAA0D;AAAA,EAAA,IAAxCC,SAAyB,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAAb,CAAAA,CAAAA,GAAAA,QAAA,CAASI,IAAM,CAAA;AACpE,EAAA,IAAAQ,SAAA,KAAcZ,SAASI,IAAM,EAAA;IACxB,OAAAY,MAAA,CAAOC,UAAa,GAAAjB,QAAA,CAASkB,eAAgB,CAAAV,WAAA,CAAA;AACtD,GAAA;AACO,EAAA,OAAAI,SAAA,CAAUL,cAAcK,SAAU,CAAAJ,WAAA,CAAA;AAC3C;;;;"}