You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
936 B
39 lines
936 B
7 years ago
|
let cached
|
||
|
|
||
|
export default function getScrollBarSize (fresh) {
|
||
|
if (fresh || cached === undefined) {
|
||
|
const inner = document.createElement('div')
|
||
|
inner.style.width = '100%'
|
||
|
inner.style.height = '200px'
|
||
|
|
||
|
const outer = document.createElement('div')
|
||
|
const outerStyle = outer.style
|
||
|
|
||
|
outerStyle.position = 'absolute'
|
||
|
outerStyle.top = 0
|
||
|
outerStyle.left = 0
|
||
|
outerStyle.pointerEvents = 'none'
|
||
|
outerStyle.visibility = 'hidden'
|
||
|
outerStyle.width = '200px'
|
||
|
outerStyle.height = '150px'
|
||
|
outerStyle.overflow = 'hidden'
|
||
|
|
||
|
outer.appendChild(inner)
|
||
|
|
||
|
document.body.appendChild(outer)
|
||
|
|
||
|
const widthContained = inner.offsetWidth
|
||
|
outer.style.overflow = 'scroll'
|
||
|
let widthScroll = inner.offsetWidth
|
||
|
|
||
|
if (widthContained === widthScroll) {
|
||
|
widthScroll = outer.clientWidth
|
||
|
}
|
||
|
|
||
|
document.body.removeChild(outer)
|
||
|
|
||
|
cached = widthContained - widthScroll
|
||
|
}
|
||
|
return cached
|
||
|
}
|