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判断是否已经弹出页面
Oct 20 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
Mar 17 Javascript
基于jquery的button默认enter事件(回车事件)。
May 18 Javascript
图片翻转效果具体实现代码
Jan 09 Javascript
基于javascript如何传递特殊字符
Nov 30 Javascript
JavaScript知识点整理
Dec 09 Javascript
javascript实现禁止复制网页内容汇总
Dec 30 Javascript
js 截取或者替换字符串中的数字实现方法
Jun 13 Javascript
JS实现搜索框文字可删除功能
Dec 28 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
Apr 22 Javascript
基于rollup的组件库打包体积优化小结
Jun 18 Javascript
React注册倒计时功能的实现
Sep 06 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
mysql数据库差异比较的PHP代码
2012/02/05 PHP
PHP合并两个数组的两种方式的异同
2012/09/14 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
PHP加MySQL消息队列深入理解
2021/02/27 PHP
js 实现复制到粘贴板的功能代码
2010/05/13 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
Node.js文件操作详解
2014/08/16 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
性能优化之代码优化页面加载速度
2017/03/01 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
vue实现分页组件
2020/06/16 Javascript
vue模式history下在iis中配置流程
2019/04/17 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
pandas实现选取特定索引的行
2018/04/20 Python
将python代码和注释分离的方法
2018/04/21 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
python实现石头剪刀布小游戏
2021/01/20 Python
Python全栈之列表数据类型详解
2019/10/01 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
介绍一下JNDI的基本概念
2013/07/26 面试题
综合素质评价个性与发展自我评价
2015/03/06 职场文书
驾驶员管理制度范本
2015/08/06 职场文书