移动端是怎么做适配的?
meta viewport
默认情况下在移动端浏览器会把viewport的宽度设置为980px,然后把所有内容按比例缩小后硬塞进小的显示屏里。
在 head 元素内添加以下代码即可解决以上问题:
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
媒体查询
我们可以针对不同的屏幕宽度的设备设置不同的 css,借助媒体查询在不同屏幕宽度的设备调用不同的样式。
<!-- link元素中的CSS媒体查询 -->
<link rel="stylesheet" media="(max-width: 800px)" href="example.css" />
<!-- 样式表中的CSS媒体查询 -->
<style>
@media (max-width: 600px) {
  .sidebar {
    display: none;
  }
}
</style>
动态 rem 方案
使用 js 动态调整 rem
通过以下两种方法可以给不同宽度的设备设置不同的 1rem 的值。
方法一:
缺点:无法随着页面宽度的变化而变化。
let pageWidth = window.innerWidth  
document.write('<style>html{font-size:'+pageWidth/10+'px;}</style>')
方法二:
优点:可以随着页面宽度的变化而变化。
let pageWidth = window.innerWidth;
let html =document.getElementsByTagName('html')[0];
function setRem(){
    pageWidth = window.innerWidth;
    html.style.fontSize = pageWidth/10+'px';
}
setRem()
window.onresize = function(){
    setRem()
}
使用 css 动态调整 rem
用媒体查询的方法改变 html 的 font-size,从而改变 1rem 的值。
html {
    font-size: 16px;
}
@media screen and (max-width: 320px){
    html {
        font-size: 13.65px !important;
    }
}
@media screen and (min-width: 376px) and (max-width: 414px){
    html {
        font-size: 17.66px !important;
    }
}
@media screen and (min-width: 415px) and (max-width: 768px){
    html {
        font-size: 32.76px !important;
    }
}
@media screen and (min-width: 769px) and (max-width: 1024px) {
    html{
        font-size: 43.69px !important;
    }
}
使用 jQuery 动态调整 rem
let pageWidth
let oneRem
function setFont() { 
  pageWidth= window.innerWidth; 
  oneRem = pageWidth/10; 
  $('html').css('font-size',oneRem); 
}
setFont(); 
$(window).on('resize', function () { 
  setFont(); 
})