vue-cli3.0结合lib-flexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题

Chase620 等级 587 0 0

vue-cli3.0结合lib-flexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题 公司最近做的一个移动端项目从搭框架到前端开发由我独立完成,以前做移动端适配用的媒体查询,这次想用点别的适配方案,然后就采用了vue-cli3.0结合lib-flexible、px2rem实现移动端适配的方案,开发过程中也遇到一些坑,自己选的方案自己填坑吧。以下记录我的项目框架搭建及填坑方案。

搭建可以参考我的另一篇文章vue-cli 3.0 搭建项目流程,这里就不再另外说明了。下面说明项目搭建成功后的适配方案。

第一部分:项目中引入lib-flexible

一、项目中安装lib-flexible

npm install lib-flexible --save 二、在项目的入口main.js文件中引入lib-flexible

import 'lib-flexible' 第二部分:使用postcss-px2rem自动将css中的px转换成rem

一、安装postcss-px2rem (一定看完文章再安装不然你会哭o(╥﹏╥)o)

npm install postcss-px2rem --save-dev 二、项目配置postcss

项目开始我是在vue.config.js(项目创建完初始是没有这个js文件的,需要自己手动创建)中配置的,上代码

复制代码 module.exports = { css: { loaderOptions: { postcss: { // 这是rem适配的配置 注意: remUnit在这里要根据lib-flexible的规则来配制,如果您的设计稿是750px的,用75就刚刚好。 plugins: [ require("postcss-px2rem")({ remUnit: 75 }) ] } } } 复制代码 初始的适配方案就完成了,然后可以直接在css或.vue文件中写已px为单位的样式了,到浏览器会自动转为rem。

因为前期项目安排不是太赶,ui给的设计图也相对简单,所以自己写了按钮组件之类的,适配还挺好,觉得自己棒棒哒~

直到ui的后续设计图出现时间插件,然后就引入了vant的组件库。

放了一个简单的cell组件,npm run serve项目跑起来,我想哭o(╥﹏╥)o,组件中的样式都变小了,F12看了一下果然组件的样式也都被转换成了rem。

问题

变小的主要原因是第三库 css一依据 data-dpr="1" 时写的尺寸

这时我们使用的flexible引入时 data-dpr不是一个写死了的,是一个动态的;就导致这个问题

然后就各种查解决方案,网络上给的解决方案一个是改写第三方库的样式,还有一个就是让flexible不编译第三方库的文件(忽略ui组件库的样式文件)。

解决方案一: 将第三方组件的css文件复制出来第三方库的css代码px统一扩大2倍,或者用全局替换将px替换为px/no/。我觉的这个方案不太好没有采用,具体操作可以参考以下两篇文章:segmentfault.com/a/119000001…blog.csdn.net/weixin_4246…

解决方案二: 使用postcss-px2rem-exclude,网上好多说用这个方法不起作用,经过一个下午的折腾才发现是使用方法不对,我的错误方法就不跟你们说了,直接来正确的。 首先,需要卸载项目中的postcss-px2rem。 npm uninstall postcss-px2rem --save-dev 其次,安装postcss-px2rem-exclude

npm install postcss-px2rem-exclude --save 最后是配置exclude选项,需要注意的是这个配置在vue.config.js中式不起作用的,如图。

正确的配置位置是项目根目录下的postcss.config.js文件,如果你的项目没有生成这个独立文件,就需要在你的package.js里设置。

复制代码 postcss.config.js

module.exports = { plugins: { autoprefixer: {}, "postcss-px2rem-exclude": { remUnit: 75, exclude: /node_modules|folder_name/i } } }; 复制代码 复制代码 package.json

"postcss": { "plugins": { "autoprefixer": {}, "postcss-px2rem-exclude":{ "remUnit": 75, "exclude":"/node_modules|floder_name/i" } } }, 复制代码 ok,完成。

以上就是我这个项目的填坑经历,希望对你有用,能少走点弯路 o()o

本文转自 https://www.jianshu.com/p/30052dee27f1,如有侵权,请联系删除。

收藏
评论区

相关推荐

vue-cli3.0结合lib-flexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题
vuecli3.0结合libflexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题 公司最近做的一个移动端项目从搭框架到前端开发由我独立完成,以前做移动端适配用的媒体查询,这次想用点别的适配方案,然后就采用了vuecli3.0结合libflexible、px2rem实现移动端适配的方案,开发过程中也遇到一些坑,自己选的方案自己
Vue UI组件库对比与选择
主流组件库对比PC端| UI组件库名 | github star | 是否可自定义主题 | 是否支持vue3 | 发布时间 | 稳定性 | 贡献者 || | | | | | | || | | 可自定义 | 支持,beta版本,, | 201608,4年半 | 长期支持,最新两个
Vue组件(30)封装一下数据列表的控件
UI库的 table好像前端喜欢叫 table,而后端喜欢叫grid。就是现实数据的列表。当然table还有其他的含义,UI库的table也是有其他的功能的。而数据列表控件其实也没啥好封装的,各种功能UI库都提供了,一般使用也是很方便的,只是为了我的那种想法还是需要小小的封装一下。功能 锁定行列(UI库自带) 多选(整理)
11个基于vue的UI框架_U.R.M.L
Element UI 来自中国,由与 Mint UI 相同的开发者所创建。Element UI 是用于 Web 和桌面应用程序的桌面 UI 工具包,如果你需要开发 Electron 应用,这个库会是你的理想之选。 iView 是一个 UI 工具包,其中包含简洁又设计优雅的小部件和各种组件。iView 团队维护非常及时,最近一次的更新在19年3
5款vue前端UI框架
Vue.js是一套构建用户界面的 渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。实用的 Vue.js组件库可以帮助我们快速搭建页面,下面介绍小编认为比较受欢迎的五个vue前端ui框架。TOP5——VueBluVueBlu是基于Vuejs和Bulma开发的开源UI组件库。旨在为PC端的前端开发(特别是中后台产品)提供一个快速且灵
AT
![](https://oscimg.oschina.net/oscnet/9bcf9c4a197687d0f09aa8b0d010e9470c7.jpg) AT-UI 是一款基于 Vue 2.x 的前端 UI 组件库,主要用于快速开发 PC 网站产品。 没错,这是又一款基于 Vue 的前端 UI 组件库,又双叒叕款 UI 库~又双叒叕款轮子
055. SkyWalking 集群环境搭建
1\. 环境准备 -------- ### 1.1. 用于搭建 SkyWalking 的三台服务器 #### 1.1.1. 服务器 * 10.1.62.78 * 10.1.62.79 * 10.1.62.80 #### 1.1.2. 需要端口 * 11800(gRPC 数据收集和内网节点间通信) * 12800(SkyWalki
055. SkyWalking 集群环境搭建
1\. 环境准备 -------- ### 1.1. 用于搭建 SkyWalking 的三台服务器 #### 1.1.1. 服务器 * 10.1.62.78 * 10.1.62.79 * 10.1.62.80 #### 1.1.2. 需要端口 * 11800(gRPC 数据收集和内网节点间通信) * 12800(SkyWalki
Android史上最好的日历,是怎样设计开发的?
[首先放出码云仓库地址](https://gitee.com/huanghaibin_dev/CalendarView "码云仓库地址") ##### 对于开源的UI库,最突出的特点莫过于以下三点 * UI方便自定义 * 性能要优秀 * 功能要强大 ##### 记得2017年的时候,我从github、git上寻
LTUI v2.2 发布, 一个基于lua的跨平台字符终端UI界面库
LTUI是一个基于lua的跨平台字符终端UI界面库。 此框架源于xmake中图形化菜单配置的需求,类似linux kernel的menuconf去配置编译参数,因此基于curses和lua实现了一整套跨平台的字符终端ui库。 而样式风格基本上完全参照的kconfig-frontends,当然用户也可以自己定制不同的ui风格。 另外,LTUI是完全跨平
LTUI v2.4 发布, 一个基于lua的跨平台字符终端UI界面库
LTUI是一个基于lua的跨平台字符终端UI界面库。 此框架源于xmake中图形化菜单配置的需求,类似linux kernel的menuconf去配置编译参数,因此基于curses和lua实现了一整套跨平台的字符终端ui库。 而样式风格基本上完全参照的kconfig-frontends,当然用户也可以自己定制不同的ui风格。 另外,LTUI是完全跨平
Mint UI文档
Mint UI文档:[http://elemefe.github.io/mint-ui/#/](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Felemefe.github.io%2Fmint-ui%2F%23%2F) 一、Mint UI的安装和基本用法。 1.**NPM :**npm i
Vue 开源项目库汇总
![图片1](http://evgetimg.oss-cn-hangzhou.aliyuncs.com/Content/files/2017/3/30/6e14c1c665e24072900300b55919f411636264715611223167.jpg) **UI组件** * element ★9305 - 饿了么出品的Vue2的web UI
swagger
如果项目已经集成了swagger,只需要在pom.xml添加,如果你的项目没有集成swagger,自行百度或看最下方的链接 swagger-bootstrap-ui是Swagger的前端UI实现,目的是替换Swagger默认的UI实现Swagger-UI,使文档更友好一点儿.... swagger-bootstrap-ui 只是Swagger的UI实现,
vue+element UI + axios封装文件上传及进度条组件
1.前言 ==== 之前在做项目的时候,需要实现一个文件上传组件并且需要有文件上传进度条,现将之前的实现过程简单记录一下,希望可以帮助到有需要的人。 项目用的是Vue框架,UI库使用的是element UI,前后端交互请求使用的是Vue官方推荐的axios。其中,UI方面主要使用了element UI库中的`Upload`文件上传组件、`Progress