vue移动端配置flexible.js

1. 适配背景

针对vue移动端项目适配问题,手淘团队flexible.js个人觉得还是挺好用的。flexible.js适配方案采用rem布局,根据屏幕分辨率大小不同,调整根元素html的font-size,从而达到每个元素宽高自动变化,适配不同屏幕。

2.配置步骤

第一步:安装lib-flexible.js

css 复制代码
npm install lib-flexible --save

第二步:在项目入口文件main.js中引入lib-flexible

arduino 复制代码
import 'lib-flexible/flexible'

第三步:检查一下html文件的head,如果有meta name="viewport"标签,需要将他注释掉,需使用lib-flexible自己生成的meta name="viewport"来达到高清适配的效果

css 复制代码
<meta content=" width=device-width, initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover" />

通过以上,就完成了在vue项目使用lib-flexible来解决移动端适配了。
实现效果 : lib-flexible会自动在html的head中添加一个meta name="viewport"的标签,同时会自动设置html的font-size为屏幕宽度除以10,也就是1rem等于html根节点的font-size。假如设计稿的宽度是750px,此时1rem应该等于75px。假如量的某个元素的宽度是150px,那么在css里面定义这个元素的宽度就是 width: 2rem。

3.延伸方法

由于每次都需根据设计稿量出来的尺寸去计算一下rem,降低效率,所以我们可以使用px2rem-loader自动将css中的px转成rem。

第一步:安装px2rem-loader

css 复制代码
npm install px2rem-loader --save-dev

第二步:配置px2rem-loader

php 复制代码
首先找到 build/utils.js文件,在utils.js中添加如下配置

const cssLoader = {
    loader: 'css-loader',
    options: {
      sourceMap: options.sourceMap,
      importLoader: 2, // 在css-loader前应用的loader的数目,默认为0 // 如果不加这个,@import的外部CSS文件将不能正常转换,如果还是不行可试着调大数字
    }
  }

  const px2remLoader = {
    loader: 'px2rem-loader',
    options: {
      renUnit: 75
    }
  }

  // generate loader string to be used with extract text plugin
  function generateLoaders (loader, loaderOptions) {
    const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader]

    if (loader) {
      loaders.push({
        loader: loader + '-loader',
        options: Object.assign({}, loaderOptions, {
          sourceMap: options.sourceMap
        })
      })
    }

    // Extract CSS when that option is specified
    // (which is the case during production build)
    if (options.extract) {
      return ExtractTextPlugin.extract({
        use: loaders,
        fallback: 'vue-style-loader'
      })
    } else {
      return ['vue-style-loader'].concat(loaders)
    }
  }

4.使用实例

安装px2rem后,再使用px上有些不同,大家可以参考px2rem官方介绍,下面简单介绍一下。在样式代码中尽量不要使用行内样式,根据设计稿直接使用px即可。

1、直接写px,编译后会直接转化成rem ---- 除开下面两种情况,其他长度用这个

2、在px后面添加/no/,不会转化px,会原样输出。 ---- 一般border需用这个

3、在px后面添加/px/,会根据dpr的不同,生成三套代码。---- 一般字体需用这个

相关推荐
前端付豪1 分钟前
美团路径缓存淘汰策略全解析(性能 vs 精度 vs 成本的三难选择)
前端·后端·架构
abigale0314 分钟前
webpack+vite前端构建工具 -4webpack处理css & 5webpack处理资源文件
前端·css·webpack
sirius星夜25 分钟前
鸿蒙开发实践:深入使用 AppGallery Connect 提升应用开发效率
javascript
500佰26 分钟前
如何开发Cursor
前端
InlaidHarp28 分钟前
Elpis DSL领域模型设计理念
前端
lichenyang45330 分钟前
react-route-dom@6
前端
番茄比较犟32 分钟前
widget的同级移动
前端
每天吃饭的羊36 分钟前
面试题-函数入参为interface类型进行约束
前端
屋外雨大,惊蛰出没1 小时前
Vue+spring boot前后端分离项目搭建---小白入门
前端·vue.js·spring boot
梦语花1 小时前
如何在前端项目中优雅地实现异步请求重试机制
前端