lib-flexible与viewport--关于移动端适配方案的替换

做移动端开发经常会用到 lib-flexible + postcss-pxtorem 这两个插件,对于他的使用我们都已经比较熟悉了,这里就不在介绍使用方法了。本文内容主要是介绍 lib-flexible 的源码内容,以及他的替代方法viewport 的使用。
由于 viewport 单位得到众多浏览器的兼容,lib-flexible这个过渡方案已经可以放弃使用,官方已经不再维护了,不管是现在的版本还是以前的版本,都存有一定的问题。建议大家开始使用vw的兼容方案来替代此方案。

viewport

这里我介绍一下viewport的使用方法,viewport配置起来很容易,只需要新增一个postcss.config.js文件,然后下载yarn add -D postcss-px-to-viewport,这样在代码中写入的px会自动转换成vw单位,同样可以达到移动端适配的效果。

安装postcss-px-to-viewport插件

npm install postcss-px-to-viewport -save-dev

meta的配置

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

postcss.config.js文件内容

// postcss.config.js文件内容
module.exports = {
  // 以iPhone6、7、8为基础
  plugins: {
    'postcss-px-to-viewport': {
      unitToConvert: 'px', //需要转换的单位,默认为"px"
      viewportWidth: 750, // 视窗的宽度,对应的是我们设计稿的宽度
      viewportHeight: 1334, //视窗的高度,根据375设备的宽度来指定,一般指定667,也可以不配置
      unitPrecision: 13, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除)
      propList: ['*'], // 能转化为vw的属性列表
      viewportUnit: 'vw', // 指定需要转换成的视窗单位,建议使用vw
      fontViewportUnit: 'vw', //字体使用的视口单位
      selectorBlackList: ['.ignore-', '.hairlines', 'wrap'], //指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名
      minPixelValue: 1, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值
      mediaQuery: false, // 允许在媒体查询中转换`px`
      replace: true, //是否直接更换属性值,而不添加备用属性
      exclude: [/RightBar/, /gotop.vue/, /node_modules/], //忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
      landscape: false, //是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)
      landscapeUnit: 'vw', //横屏时使用的单位
      landscapeWidth: 1334 //横屏时使用的视口宽度
    }
  }
};


px会自动转换成vw的效果:

<template>
  <div class="about">
    <h1>This is an about page</h1>
    <div class="box">这是一个box</div>
  </div>
</template>
<style scoped>
.box {
  width: 200px;
  height: 100px;
  border: 1px solid black;
  font-size: 16px;
}
</style>

在这里插入图片描述

总结

之前的项目我基本都是使用lib-flexible开发,但是阅读其源码的时候看到作者的说明,所以我就去了解了viewport适配方案,目前viewport的浏览器兼容度已经达到92%以上,所以在日常开发使用基本已经没有什么问题,所以我后续的项目
应该都会使用viewport适配方案来开发。

在这里插入图片描述
但是viewport也有不足之处,vw与vh会在 pc 与移动端均产生效果,而不像flexible只会转换一定宽度(dpr=1就是540px)以下设备的px为rem,因此若设计稿为移动端而生,全权使用vw单位会使得页面在 pc 端出现字体过大等现象,需酌情处理,根据应用场景自行选择。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值