Have to investigate as to whether it was actually needed on mobile, doesn't seem to be the case from Firefox's Responsive Design Mode
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			764 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			764 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /** @type {number | null} */
 | |
| let cachedScrollbarWidth = null;
 | |
| 
 | |
| /**
 | |
|  * @return {number}
 | |
|  */
 | |
| const getActualScrollbarWidth = () => {
 | |
|   const outer = document.createElement('div');
 | |
|   outer.style.visibility = 'hidden';
 | |
|   outer.style.overflow = 'scroll';
 | |
|   document.body.appendChild(outer);
 | |
| 
 | |
|   const inner = document.createElement('div');
 | |
|   outer.appendChild(inner);
 | |
| 
 | |
|   const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;
 | |
|   outer.parentNode.removeChild(outer);
 | |
| 
 | |
|   return scrollbarWidth;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @return {number}
 | |
|  */
 | |
| export const getScrollbarWidth = () => {
 | |
|   if (cachedScrollbarWidth !== null) {
 | |
|     return cachedScrollbarWidth;
 | |
|   }
 | |
| 
 | |
|   const scrollbarWidth = getActualScrollbarWidth();
 | |
|   cachedScrollbarWidth = scrollbarWidth;
 | |
| 
 | |
|   return scrollbarWidth;
 | |
| };
 |