vue-cli配置移动端自适应flexible.js
第一部分:项目中引入lib-flexible
一、项目中安装lib-flexible
npm install lib-flexible --save-dev
二、在项目入口文件main.js中引入lib-flexible
import 'lib-flexible/flexible.js'
三、在项目根目录的index.html 头部加入手机端适配的meta
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=1.0">
通过以上,就完成了在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。
注意:
1、因为html的font-size是根据屏幕宽度除以10计算出来的,所以我们需要设置页面的最大宽度是10rem。
2、如果每次从设计稿量出来的尺寸都手动去计算一下rem,就会导致我们效率比较慢,还有可能会计算错误,所以我们可以使用px2rem-loader自动将css中的px转成rem
实际开发中,我们通过设计稿得到的值单位是 px,所以要将 px 转换成 rem 再写进样式中。
将 px 转换成 rem 我们将使用 px2rem 这个工具,它有 webpack 的 loader:px2rem-loader
第二部分:使用px2rem-loader自动将css中的px转换成rem
一、安装px2rem-loader
npm install px2rem-loader --save-dev
二、配置px2rem-loader
1.打开build/utils.js文件,找到exports.cssLoaders方法,在里面添加如下代码
const px2remLoader = { loader: 'px2rem-loader', options: { remUint: 75 } }
2.修改generateLoaders方法中的loaders
// 注释掉这一行 // const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader] // 修改为 const loaders = [cssLoader, px2remLoader] if (options.usePostCSS) { loaders.push(postcssLoader) }
然后重新npm run dev,打开控制台可以看到代码中的px已经被转成了rem
解析:
在 vue-cli 生成的 webpack 配置中,vue-loader 的 options 和其他样式文件 loader 最终是都是由 build/utils.js 里的一个方法生成的。 我们只需在 cssLoader 后再加上一个 px2remLoader 即可,px2rem-loader 的 remUnit 选项意思是 1rem=多少像素,结合 lib-flexible 的方案,
我们将 px2remLoader 的 options.remUnit 设置成设计稿宽度的 1/10,这里我们假设设计稿宽为 750px。
修改配置后需要重启,然后我们在组件中写单位直接写 px,设计稿量多少就可以写多少了,舒服多了
注意:
1.此方法只能将.vue文件style标签中的px转成rem,不能将script标签和元素style里面定义的px转成rem
2.如果在.vue文件style中的某一行代码不希望被转成rem,只要在后面写上注释 /* no*/就可以了
.
相关文章
- JS框架_(JQuery.js)纯css3进度条动画
- JS框架_(JQuery.js)图片相册掀开切换效果
- JS框架_(Laydate.js)简单实现日期日历
- vue.js入门(五,组件更新,计算属性,watch监听)
- 面试时面试官想要听到什么答案(关于一些vue的问题)
- vue ui 使用图形化界面
- vue.config.js常用配置详解
- vue.js3: 用pdf-lib给pdf文件添加中文字体水印(pdf-lib@1.17.1 / vue@3.2.37)
- vue.js3: js下载图片的两种方式:url和canvas(vue@3.2.37)
- vue.js3: 使用全局变量(vue@3.2.37)
- vue.js 3.0.5:用vue-i18n开发i18n国际化功能(vue-i18n@9.2.0)
- 使用vue搭建应用五引入Mock.js
- [Vue] Use Vue.js Watchers to Respond to Async Updates
- vue-tour快速入门:VUE项目中如何使用vue-tour新手引导指引插件?怎样使用?包含具体实例
- vue父组件通过$refs调用子组件方法时报undefined的问题
- vue - 通过JS屏蔽自带右键菜单
- CDN方式Vue组件注册
- Vue中组件化编码使用(实战练习一)
- vue-router2路由参数注意问题
- ECharts用法及常用配置项详解(Vue环境)
- Vue.js面试题
- uni-app的Vue项目中Echarts的报错提示:[Vue warn]: Error in data(): “ReferenceError: echarts is not defined“
- vue.js