44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| (function flexible(window, document) {
 | |
|     var docEl = document.documentElement
 | |
|     var dpr = window.devicePixelRatio || 1
 | |
|    
 | |
|     // adjust body font size
 | |
|     function setBodyFontSize() {
 | |
|       if (document.body) {
 | |
|         document.body.style.fontSize = (16 * dpr) + 'px'
 | |
|       }
 | |
|       else {
 | |
|         document.addEventListener('DOMContentLoaded', setBodyFontSize)
 | |
|       }
 | |
|     }
 | |
|     setBodyFontSize();
 | |
|    
 | |
|     function setRemUnit() {
 | |
|       var rem = docEl.clientWidth / 24
 | |
|       docEl.style.fontSize = rem + 'px'
 | |
|     }
 | |
|    
 | |
|     setRemUnit()
 | |
|    
 | |
|     // reset rem unit on page resize
 | |
|     window.addEventListener('resize', setRemUnit)
 | |
|     window.addEventListener('pageshow', function (e) {
 | |
|       if (e.persisted) {
 | |
|         setRemUnit()
 | |
|       }
 | |
|     })
 | |
|    
 | |
|     
 | |
|     // detect 0.5px supports
 | |
|     if (dpr >= 2) {
 | |
|       var fakeBody = document.createElement('body')
 | |
|       var testElement = document.createElement('div')
 | |
|       testElement.style.border = '.5px solid transparent'
 | |
|       fakeBody.appendChild(testElement)
 | |
|       docEl.appendChild(fakeBody)
 | |
|       if (testElement.offsetHeight === 1) {
 | |
|         docEl.classList.add('hairlines')
 | |
|       }
 | |
|       docEl.removeChild(fakeBody)
 | |
|     }
 | |
|   }(window, document)) |