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 编程引入命名空间的方法
Jun 29 Javascript
让Firefox支持event对象实现代码
Nov 07 Javascript
document.getElementById为空或不是对象的解决方法
Jan 24 Javascript
理解Javascript_09_Function与Object
Oct 16 Javascript
IE6浏览器下resize事件被执行了多次解决方法
Dec 11 Javascript
js操作CheckBoxList实现全选/反选(在客服端完成)
Feb 02 Javascript
js判断生效时间不得大于失效时间的思路及代码
Apr 23 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
Feb 02 Javascript
原生js实现商品放大镜效果
Jan 12 Javascript
JS和JQuery实现雪花飘落效果
Nov 30 jQuery
在Vue中获取组件声明时的name属性方法
Sep 12 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
Apr 14 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
微信小程序动态显示项目倒计时
2019/06/20 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
python中with用法讲解
2020/02/07 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
Herschel美国官网:背包、手提袋及配件
2020/03/10 全球购物
如何查看在weblogic中已经发布的EJB
2012/06/01 面试题
警察思想汇报
2014/01/04 职场文书
两年的个人工作自我评价
2014/01/10 职场文书
母婴店促销方案
2014/03/05 职场文书
正风肃纪查摆剖析材料
2014/10/10 职场文书
2014年维修工作总结
2014/11/22 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书
企业文化学习心得体会
2016/01/21 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python