移动端适配

2018-08-22  本文已影响0人  jackie季

移动端适配有三个关键点:

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"/>

viewport指的是“视口”,即设置网页宽度等于设备宽度(device-width)。原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。禁止用户缩放(user-scalable=no)。

@media screen and (max-width: 600px) { /*当屏幕尺寸小于600px时,应用下面的CSS样式*/
  /*你的css代码*/
}

这是在CSS内部进行的媒体查询,也可以设置在head标签内为不同宽度的设备选择加载不同的CSS文件,以下CSS文件就只在设备宽度小于500px的时候才有效:

<link rel = "stylesheet" href = "./mobile.css" media="screen and (max-width:500px)">
@media screen and (min-width: 375px){
    html {
        font-size: 14px;   
    }
}
@media screen and (min-width: 360px){
    html {
        font-size: 13px;
    }
}

二是可以利用JS获取屏幕宽度:

const oHtml = document.getElementsByTagName('html')[0]
const width = oHtml.clientWidth;
oHtml.style.fontSize = width/10 + "px";

此时rem的单位长度就是屏幕宽度的1/10。
不过这种比较麻烦,需要手动计算px与rem,我们可以在 SCSS 里使用 PX2REM,自动进行转换:

@function pxToRem( $px ){
  @return $px/$designWidth*10 + rem;
}
$designWidth : 640; //设计稿宽度
div{
  width: px(300);
  height: px(300);
}

em和rem的区别

单位 定义 特点
rem font size of the root element 以根元素字体大小为基准
em font size of the element 以父元素字体大小为基准

虽然em带来了模块化的好处,但是由于 em 是相对于父元素的倍数,所以你可能在许多层嵌套的 em 中找不到一个固定值,rem 就是可以随时拿来用的一个固定参考值。

上一篇下一篇

猜你喜欢

热点阅读