zoukankan      html  css  js  c++  java
  • rem 移动端适配

    rem移动端适配:

    在移动端(手机端、Pad端),设备尺寸参差不齐。如果想要写完一套代码,能够在所有移动设备上都正常运行,那么采用原生的px单位来设置是不行的。举个例子:iPhone6的尺寸是375px,如果我们想要一个盒子是占据整个宽度的一半,那么会将这个盒子的宽度设置为187.5px,但是并不是所有手机的宽度都是375px,因此就会造成问题。这时候我们可以通过rem来解决这个问题。

    什么是rem

    1. em:当前元素字体大小相对于父标签的字体大小。比如:
      <div style="font-size:16px;">
           <span style="font-size:2em">你好</span>
       </div>
      div中字体大小是16px,而在span标签中因为用的是2em,因此是2倍的父标签字体的大小,也就是32px
    2. rem:跟em类似,只不过此时的参照元素不是父元素,而是根元素,也就是html元素的大小。比如:
      <html style="font-size:14px">
           <div style="font-size:16px;">
               <span style="font-size:2rem">你好</span>
           </div>
       </html>
      此时的span标签字体大小为html标签字体大小的2倍,也就是28px

    rem适配原理:

    rem虽然本身是用来设置字体的大小,但是也可以延伸到设置其他属性的尺寸。利用rem我们可以实现等比缩放。比如我将一个页面的宽度平均分成100unit=windowWidth/100,然后让htmlfont-size等于unit,那么以下问题都可以实现:

    1. 要实现浏览器一半的宽度,我们就可以通过50rem来实现(rem是单位)。
    2. 设置字体大小为16px,转化成rem就是:(16/unit)rem

    Vue-cli中实现rem布局:

    在使用vue-cli创建的项目中,我们可以通过一些第三方包来方便的实现rem的布局。要安装两个包,分别是:postcss-pxtoremlib-flexible。安装命令通过npm install --save-dev postcss-pxtorem lib-flexible安装即可。在安装完包后,还需要配置两个地方:

    1. package.json
      "postcss": {
           "plugins": {
             "autoprefixer": {},
             "postcss-pxtorem": {
               "rootValue": 37.5,
               "propList": [
                 "*"
               ],
               "selectorBlackList": [
                 "van-*"
               ]
             }
           }
         }
    2. main.js
       import "lib-flexible"

    这样以后在写单位的时候,就不需要换算成rem,直接写px就可以,postcss-pxtorem会自动的将我们写的px转化成rem。而lib-flexible会根据当前的尺寸,来调整html上的font-size进行适配。

  • 相关阅读:
    build tools
    文档系统总结
    各进制及其转换详解
    JQuery 函数执行顺序
    计算页面宽高的函数
    Linq中的多表左联,详细语句
    css设置滚动条颜色与样式以及如何去掉与隐藏滚动条
    基于JQUERY写的 LISTBOX 选择器
    js/jquery 实时监听输入框值变化的完美方案:oninput & onpropertychange
    JQuery select控件的相关操作
  • 原文地址:https://www.cnblogs.com/huameixiao/p/11615424.html
Copyright © 2011-2022 走看看