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 相关文章推荐
比较详细的javascript对象的property和prototype是什么一种关系
Aug 06 Javascript
快速解决FusionCharts联动的中文乱码问题
Dec 04 Javascript
关于JS 预解释的相关理解
Jun 28 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
Mar 20 jQuery
如何实现双向绑定mvvm的原理实现
May 28 Javascript
VUE实现密码验证与提示功能
Oct 18 Javascript
vue props 单项数据流实例分享
Feb 16 Javascript
JavaScript中的this妙用实例分析
May 09 Javascript
JS sort排序详细使用方法示例解析
Sep 27 Javascript
react ant Design手动设置表单的值操作
Oct 31 Javascript
JavaScript事件的委托(代理)的用法示例详解
Feb 18 Javascript
使用vue判断当前环境是安卓还是IOS
Apr 12 Vue.js
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
PHP的分页功能
2007/03/21 PHP
php 多线程上下文中安全写文件实现代码
2009/12/28 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
jQuery中的常用事件总结
2009/12/27 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
vue.js iview打包上线后字体图标不显示解决办法
2020/01/20 Javascript
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
Python查看多台服务器进程的脚本分享
2014/06/11 Python
python网络编程实例简析
2014/09/26 Python
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
python黑魔法之编码转换
2016/01/25 Python
Python实现简单多线程任务队列
2016/02/27 Python
python实现汉诺塔方法汇总
2016/07/25 Python
Python中断言Assertion的一些改进方案
2016/10/27 Python
Python解决八皇后问题示例
2018/04/22 Python
python使用代理ip访问网站的实例
2018/05/07 Python
python list转置和前后反转的例子
2019/08/26 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
python实现图像外边界跟踪操作
2020/07/13 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
python实现学生信息管理系统源码
2021/02/22 Python
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
小学生考试获奖感言
2014/01/30 职场文书
婚前协议书范本
2014/04/15 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
小学三年级班主任工作经验交流材料
2015/11/02 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python