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.
		
		
		
		
		
			
		
			
				
					
					
						
							46 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							46 lines
						
					
					
						
							1.3 KiB
						
					
					
				
								(function (designWidth, maxWidth) {
							 | 
						|
								  var doc = document
							 | 
						|
								  var win = window
							 | 
						|
								  var docEl = doc.documentElement
							 | 
						|
								  var remStyle = document.createElement('style')
							 | 
						|
								  var tid
							 | 
						|
								
							 | 
						|
								  function refreshRem () {
							 | 
						|
								    var width = docEl.getBoundingClientRect().width
							 | 
						|
								    maxWidth = maxWidth || 540
							 | 
						|
								    width > maxWidth && (width = maxWidth)
							 | 
						|
								    var rem = width * 100 / designWidth
							 | 
						|
								    remStyle.innerHTML = 'html{font-size:' + rem + 'px;}'
							 | 
						|
								  }
							 | 
						|
								
							 | 
						|
								  if (docEl.firstElementChild) {
							 | 
						|
								    docEl.firstElementChild.appendChild(remStyle)
							 | 
						|
								  } else {
							 | 
						|
								    var wrap = doc.createElement('div')
							 | 
						|
								    wrap.appendChild(remStyle)
							 | 
						|
								    doc.write(wrap.innerHTML)
							 | 
						|
								    wrap = null
							 | 
						|
								  }
							 | 
						|
								  // 要等 wiewport 设置好后才能执行 refreshRem,不然 refreshRem 会执行2次;
							 | 
						|
								  // refreshRem()
							 | 
						|
								
							 | 
						|
								  win.addEventListener('resize', function () {
							 | 
						|
								    clearTimeout(tid) // 防止执行两次
							 | 
						|
								    tid = setTimeout(refreshRem, 300)
							 | 
						|
								  }, false)
							 | 
						|
								
							 | 
						|
								  win.addEventListener('pageshow', function (e) {
							 | 
						|
								    if (e.persisted) { // 浏览器后退的时候重新计算
							 | 
						|
								      clearTimeout(tid)
							 | 
						|
								      tid = setTimeout(refreshRem, 300)
							 | 
						|
								    }
							 | 
						|
								  }, false)
							 | 
						|
								
							 | 
						|
								  // if (doc.readyState === 'complete') {
							 | 
						|
								  //   doc.body.style.fontSize = '16px'
							 | 
						|
								  // } else {
							 | 
						|
								  //   doc.addEventListener('DOMContentLoaded', function (e) {
							 | 
						|
								  //     doc.body.style.fontSize = '16px'
							 | 
						|
								  //   }, false)
							 | 
						|
								  // }
							 | 
						|
								})(1920, 1920)
							 |