43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			43 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))
							 |