美文网首页
移动端适配

移动端适配

作者: jackie季 | 来源:发表于2018-08-22 21:56 被阅读0次

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

    • viewport
    <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)。

    • 媒体查询
      主要是通过查询设备的宽度来执行不同的 css 代码,最终达到界面的配置。例如:
    @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)">
    
    • 动态rem
      rem表示根元素(HTML)的font-size大小,当指定一个元素的font-size为2rem,如果HTML的font-size是12px,那么这个元素的font-size就是24px。所以只要根据不同屏幕设定好HTML的font-size大小,那么使用rem单位的元素就会自适应显示相应的尺寸了。
      那如何使屏幕大小和HTML的font-size大小相关联呢,一是利用媒体查询给不同宽度设置相应的HTML的font-size:
    @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 就是可以随时拿来用的一个固定参考值。

    相关文章

      网友评论

          本文标题:移动端适配

          本文链接:https://www.haomeiwen.com/subject/tvseiftx.html