Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)


Posted in Javascript onApril 27, 2020

今天,我们使用Vue CLI3 做一个移动端适配 。

Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem) 

前言

首先确定你的项目是Vue CLI3版本以上的。

一、移动端适配包

1、安装移动端适配包

npm i lib-flexible -S

2、在 main.js 引入适配包

import Vue from 'vue'
import App from './App.vue'

import 'lib-flexible' // 引入适配包

Vue.config.productionTip = false

new Vue({
 render: h => h(App),
}).$mount('#app')

3、在 index.html 编辑 viewport

<!DOCTYPE html>
<html lang="en">
 <head>
 <meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <!-- 加上以下代码 -->
 <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 
 <link rel="icon" href="<%= BASE_URL %>favicon.ico" rel="external nofollow" >
 <title><%= htmlWebpackPlugin.options.title %></title>
 </head>
 <body>
 <noscript>
  <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
 </noscript>
 <div id="app"></div>
 <!-- built files will be auto injected -->
 </body>
</html>

二、CSS样式适配

1、安装 px2rem-loader 包( 只适用于css样式

npm i px2rem-loader -D

2、在 vue.config.js 配置

module.exports={
	 chainWebpack: config => {
  config.module
  .rule('css')
   .test(/\.css$/)
   .oneOf('vue')
   .resourceQuery(/\?vue/)
   .use('px2rem')
   .loader('px2rem-loader')
   .options({
    remUnit: 75
   })
 },
}

三、CSS预处理语言样式适配

1、安装 postcss-plugin-px2rem适用于css预处理语言

npm i postcss-plugin-px2rem -D

2、在 vue.config.js 配置

module.exports={
	 css: {
  loaderOptions: {
  postcss: {
   plugins: [
    require('postcss-plugin-px2rem')({
     rootValue: 75, //换算基数, 默认100 ,这样的话把根标签的字体规定为1rem为50px,这样就可以从设计稿上量出多少个px直接在代码中写多上px了。
     // unitPrecision: 5, //允许REM单位增长到的十进制数字。
     //propWhiteList: [], //默认值是一个空数组,这意味着禁用白名单并启用所有属性。
     // propBlackList: [], //黑名单
     exclude: /(node_module)/, //默认false,可以(reg)利用正则表达式排除某些文件夹的方法,例如/(node_module)\/如果想把前端UI框架内的px也转换成rem,请把此属性设为默认值
     // selectorBlackList: [], //要忽略并保留为px的选择器
     // ignoreIdentifier: false, //(boolean/string)忽略单个属性的方法,启用ignoreidentifier后,replace将自动设置为true。
     // replace: true, // (布尔值)替换包含REM的规则,而不是添加回退。
     mediaQuery: false, //(布尔值)允许在媒体查询中转换px。
     minPixelValue: 3 //设置要替换的最小像素值(3px会被转rem)。 默认 0
    }),
   ]
  }
 }
 }
}

3、在 package.json 配置,加入 postcss 相关插件

{
 "name": "app",
 "version": "0.1.0",
 "private": true,
 "scripts": {
 "serve": "vue-cli-service serve",
 "build": "vue-cli-service build",
 "lint": "vue-cli-service lint"
 },
 "dependencies": {
 "core-js": "^3.6.4",
 "lib-flexible": "^0.3.2",
 "vue": "^2.6.11"
 },
 "devDependencies": {
 "@vue/cli-plugin-babel": "~4.3.0",
 "@vue/cli-plugin-eslint": "~4.3.0",
 "@vue/cli-service": "~4.3.0",
 "babel-eslint": "^10.1.0",
 "eslint": "^6.7.2",
 "eslint-plugin-vue": "^6.2.2",
 "node-sass": "^4.14.0",
 "postcss-plugin-px2rem": "^0.8.1",
 "px2rem-loader": "^0.1.9",
 "sass-loader": "^8.0.2",
 "vue-template-compiler": "^2.6.11"
 },
 "postcss": {
 "plugins": {
  "autoprefixer": {},
  "precss": {}
 }
 }
}

结语

到此这篇关于Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)的文章就介绍到这了,更多相关Vue CLI3移动端适配内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JS 有趣的eval优化输入验证实例代码
Sep 22 Javascript
点击页面其它地方隐藏该div的两种思路
Nov 18 Javascript
js给selected添加options的方法
May 06 Javascript
详解jQuery的Cookie插件
Nov 23 Javascript
jQuery上传多张图片带进度条样式(DEMO)
Mar 02 Javascript
Vue.js实现模拟微信朋友圈开发demo
Apr 20 Javascript
解决jquery有正确返回值但不执行success函数的问题
Aug 20 jQuery
微信小程序实现多个按钮的颜色状态转换
Feb 15 Javascript
layui异步加载table表中某一列数据的例子
Sep 16 Javascript
Vue.js暴露方法给WebView的使用操作
Sep 07 Javascript
vue实现表格合并功能
Dec 01 Vue.js
JS前端使用canvas实现扩展物体类和事件派发
Aug 05 Javascript
js HTML DOM EventListener功能与用法实例分析
Apr 27 #Javascript
JS严格模式原理与用法实例分析
Apr 27 #Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
Apr 27 #Javascript
详解elementUI中input框无法输入的问题
Apr 27 #Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
Apr 27 #Javascript
Node.js API详解之 tty功能与用法实例分析
Apr 27 #Javascript
React.js组件实现拖拽排序组件功能过程解析
Apr 27 #Javascript
You might like
IStream与TStream之间的相互转换
2008/08/01 PHP
PHP 地址栏信息的获取代码
2009/01/07 PHP
四个PHP非常实用的功能
2015/09/29 PHP
分享20款好玩的jQuery游戏
2011/04/17 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
2015/03/04 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
2017/03/02 Javascript
javascript cookie的基本操作(添加和删除)
2017/07/24 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
Python遍历目录中的所有文件的方法
2016/07/08 Python
python中的二维列表实例详解
2018/06/19 Python
python 中字典嵌套列表的方法
2018/07/03 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
Python常用特殊方法实例总结
2019/03/22 Python
python hashlib加密实现代码
2019/10/17 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
Python3操作YAML文件格式方法解析
2020/04/10 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
谈谈python垃圾回收机制
2020/09/27 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
Python运算符+与+=的方法实例
2021/02/18 Python
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
飞利浦法国官网:Philips法国
2019/07/10 全球购物
后勤园长自我鉴定
2013/10/17 职场文书
优秀导游先进事迹材料
2014/01/25 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技
Android中的Launch Mode详情
2022/06/05 Java/Android