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

浙公网安备 33010602011771号