Html5踩坑记之mandMobile使用小记


Posted in HTML / CSS onApril 02, 2020

Mand Mobile使用小记

mandMobile是滴滴开源的专门面向金融场景的Vue移动端UI组件库(非金融类也可以用),最近我司正在孵化一个金融类产品,本人准备使用。

对初次使用者来说,按照官方文档 来,多少会踩一些坑或者不顺畅,下面是我初次使用之后的总结。另外,本小记也会持续更新,记录使用中的各种问题。如果各位在使用中也遇到了问题,欢迎留言交流,我们一起提bug:smile:哈哈哈。

1. 首先安装

npm i mand-mobile -S

2. 引入

全局引入

如果使用  import { Button } from 'mand-mobile'; 的写法会引入 mand-mobile 下所有的模块.

为了提高提升打包和浏览器下载速度,推荐使用 按需引入

你可以通过以下方式按需引入

import Button from 'mand-mobile/lib/button'
import 'mand-mobile/lib/mand-mobile.css'  // 样式单独引入

这样可以将组件按需引入,但是样式还是全部引入。

更好的方法是使用 插件 babel-plugin-import

安装插件 cnpm i babel-plugin-import --save-dev
使用插件,添加babel.config.js或者.babelrc.js文件,添加以下配置

module.exports = {
    "plugins": [
        ["import", {
          "libraryName": "mand-mobile",
          "libraryDirectory": "lib",
          "style": true              // 文档说无需配置style,可能是默认值为true吧
        }]
    ]
 };

配置之后,你可以直接在项目中这样使用了: import { Button } from 'mand-mobile';

这样组件和样式都是按需引入了,而且相对来说少写了几行代码,如果引入的组件多的情况下配置一下还是比较有用的。

3. 配置postcss.config.js或者.postcssrc.js

module.exports = {
  plugins: [
    require('postcss-pxtorem')({
      rootValue: 75,    // 结果为:设计稿元素尺寸/75
      minPixelValue: 2,  // 小于等于 2 的元素不做处理
      propWhiteList: []
    })
  ]
}

如果想要忽略单个属性不做转化,最简单的方法是在像素单元声明中使用大写PX,例如有些字体不需要转换。至此,项目接入该UI库完成。

4. 如何定制主题

我们有两种方式定制主题:一种是css样式覆盖,一种是样式变量覆盖

第一种方式是我们自己写一套样式主题,然后全局引入,强行覆盖掉原来的样式,稍微有点不太优雅,但是也没什么不可以的。

第二种是文档上介绍的,即覆盖样式变量 ,这种方式需要我们做一些配置:

首先修改 babel.config.js,将libraryDirectory的值改为 "components",components这个文件夹存放的是所有组件。改完之后重新运行,这时候你会发现你的样式都没有了,原因是 components中少了一些东西,可以跟lib文件夹对比一下,例如下图所示是lib文件夹下的而components没有这些,如果这时你加上  import 'mand-mobile/lib/mand-mobile.css'; 样式就可以出现了,但是不能加上它,因为我们要通过覆盖样式变量的方式来定制主题。   

Html5踩坑记之mandMobile使用小记

如何覆盖呢?其实components中的组件是有样式的,只不过这些样式的值都是样式变量,而组件内部并没有引入变量,比如看下Button的源码,它的其中一些样式是这样的

.md-button
  position relative
  display block
  height button-height   // 样式变量
  line-height button-height  // 样式变量
  font-size button-font-size  // 样式变量
  font-weight button-font-weight  // 样式变量
  font-family font-family-normal
  text-align center
  border none
  border-radius button-radius  // 样式变量
  box-sizing border-box

所以我们只需要引入这些变量,样式就可以正常显示了,然后我们通过覆盖这些变量的值就可以改变主题了。关键是我们要如何引入这些变量。

根据文档,首先我们新建自定义主题文件,如 theme.custom.styl, 然后在这里引入样式变量

@import '~mand-mobile/components/_style/mixin/util'
@import '~mand-mobile/components/_style/mixin/theme.components'
@import '~mand-mobile/components/_style/mixin/theme.basic'

// 安装并引入css拓展nib(可选)
@import '~nib/lib/nib/vendor'
@import '~nib/lib/nib/gradients'

引入之后还需配置一下webpack让它在我们的项目中生效,我是用的是vue-cli3,所以在vue.config.js中做如下配置:

module.exports = {
  css: {
    loaderOptions: {
      stylus: {
        import: [resolve(`.src/assets/theme.custom`)]  // 根据你项目的实际情况配置路径
      }
    }
  }
}

这个时候基本上就可以了,但是还有一个样式文件需要引入,就是全局样式,因为是在component文件夹,so这个样式也要我们单独引入进来,在你的入口文件(mian.is)加入以下代码即可

import 'mand-mobile/components/_style/global.styl'

参考

全局样式变量   和 组件样式变量 ,在  theme.custom.styl  中设置这些值,就可以自定义主题了。

5. 项目开始

如果有些属性没有生效,看看是不是UI库版本太低了

6. 小结

其实,总体而言,mandMobile还是相当贴心的,提供的组件也很丰富且灵活,相信它在金融类产品中使用它还是很香的,推荐大家使用,毕竟金融类产品的业务逻辑还是比较复杂的。

 到此这篇关于Html5踩坑记之mandMobile使用小记的文章就介绍到这了,更多相关Html5使用mandMobile内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

HTML / CSS 相关文章推荐
CSS3 优势以及网页设计师如何使用CSS3技术
Jul 29 HTML / CSS
css3.0新属性效果在ie下的解决方案
May 10 HTML / CSS
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
Dec 10 HTML / CSS
基于css3的属性transition制作菜单导航效果
Sep 01 HTML / CSS
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
Aug 18 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
May 12 HTML / CSS
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
Jan 06 HTML / CSS
html5读取本地文件示例代码
Apr 22 HTML / CSS
吃透移动端 1px的具体用法
Dec 16 HTML / CSS
AmazeUi Tree(树形结构) 应用小结
Aug 17 HTML / CSS
CSS变量实现主题切换的方法
Jun 23 HTML / CSS
CSS三大特性继承性、层叠性和优先级详解
Jan 18 HTML / CSS
总结html5自定义属性有哪些
Apr 01 #HTML / CSS
详解canvas.toDataURL()报错的解决方案全都在这了
Mar 31 #HTML / CSS
浅谈Html5页面打开app的一些思考
Mar 30 #HTML / CSS
详解HTML5常用的语义化标签
Sep 27 #HTML / CSS
html5 移动端视频video的android兼容(去除播放控件、全屏)
Mar 26 #HTML / CSS
HTML5 Canvas实现放大镜效果示例
Mar 25 #HTML / CSS
HTML5 图片预加载的示例代码
Mar 25 #HTML / CSS
You might like
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
2013/03/06 PHP
提升PHP性能的21种方法介绍
2013/06/25 PHP
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
亲自动手实现vue日历控件
2019/06/26 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
总结Python编程中函数的使用要点
2016/03/20 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
python ubplot使用方法解析
2020/01/10 Python
使用python turtle画高达
2020/01/19 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
《雷雨》教学反思
2014/02/20 职场文书
车间核算员岗位职责
2014/07/01 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
2014年采购员工作总结
2014/11/18 职场文书
公司人事任命通知
2015/04/20 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
golang DNS服务器的简单实现操作
2021/04/30 Golang
完美解决golang go get私有仓库的问题
2021/05/05 Golang
Vue图片裁剪组件实例代码
2021/07/02 Vue.js