页面适配移动端

前提:我使用的是vue-cli2创建的项目其中使用了vant移动端组件库,近期有项目需要项目适配大屏的需求。但是由于平时我们使用的组件库的单位都是px 所以页面需要适配pc和移动端。所以进过大佬点拨找到了2个解决方案

  1. px2rem-loader 将px转换为rem适配移动端
    下载以下两个依赖
    npm i lib-flexible --save
    npm i px2rem-loader
    在main.js中引入
    import 'lib-flexible/flexible'
    然后在build文件夹中找到utils.js 将px2rem-loader 添加到cssLoaders中,
    同时,在generateLoaders方法中添加px2remLoader
exports.cssLoaders = function (options) {
  options = options || {}
  const cssLoader = {
    loader: 'css-loader',
    options: {
      sourceMap: options.sourceMap
    }
  }
  // -----重点-----
  const px2remLoader = {
    loader: 'px2rem-loader',
    options: {
      remUnit: 40
    }
  }
  const postcssLoader = {
    loader: 'postcss-loader',
    options: {
      sourceMap: options.sourceMap
    }
  }
  // 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)
    }
  }
  // https://vue-loader.vuejs.org/en/configurations/extract-css.html
  return {
    css: generateLoaders(),
    postcss: generateLoaders(),
    // less: generateLoaders('less'),
    less: generateLoaders('less', {
      modifyVars: {
        'hack': `true; @import "${path.join(__dirname, '../src/styles/resetui.less')}";`
      }
    }),
    sass: generateLoaders('sass', { indentedSyntax: true }),
    scss: generateLoaders('sass'),
    stylus: generateLoaders('stylus'),
    styl: generateLoaders('stylus')
  }
}

配置完之后重启服务即可。
2. 通过配置ui组件的重置样式将所有用到的px单位都改成rem。
不管是element 还是vant都是支持重置样式的基础变量的。再根据自己的UI设计,将基础变量都重置成为rem。然后动态的设置root的font-size就可以实现原有UI组件库支持rem的响应式。

posted @ 2022-03-28 09:35  明月南楼  阅读(48)  评论(0)    收藏  举报