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(); 
})