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比较和逻辑运算符的介绍
Mar 10 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
Nov 08 Javascript
使用jquery动态加载Js文件和Css文件
Oct 24 Javascript
分享几种比较简单实用的JavaScript tabel切换
Dec 31 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
Apr 13 Javascript
详解使用nvm安装node.js
Jul 18 Javascript
vue+swiper实现组件化开发的实例代码
Oct 26 Javascript
vue中promise的使用及异步请求数据的方法
Nov 08 Javascript
jquery的$().each和$.each的区别
Jan 18 jQuery
javascript实现弹幕墙效果
Nov 28 Javascript
JavaScript文档加载模式以及元素获取
Jul 28 Javascript
OpenLayers实现图层切换控件
Sep 25 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
PHP中数组的分组排序实例
2014/06/01 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
网页开发中的容易忽略的问题 javascript HTML中的table
2009/04/15 Javascript
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
javascript中创建对象的几种方法总结
2013/11/01 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
javascript如何实现create方法
2019/11/04 Javascript
python k-近邻算法实例分享
2014/06/11 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
2017/12/25 Python
Python入门必须知道的11个知识点
2018/03/21 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
Python列表切片常用操作实例解析
2020/03/10 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
国外软件测试工程师面试题
2016/12/09 面试题
个人自我鉴定怎么写
2013/10/28 职场文书
3分钟英语演讲稿
2014/04/29 职场文书
简单租房协议书范本
2014/08/20 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
公司离职证明标准样本
2014/10/05 职场文书
2014年库房工作总结
2014/11/26 职场文书
浅谈redis缓存在项目中的使用
2021/05/20 Redis
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python
Java 异步任务计算FutureTask
2022/04/28 Java/Android