热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【前端】Vant:在uniapp小程序上使用vant库

【前端】Vant:在uniapp小程序上使用vant库-1.创建目录在项目的src目录下创建目录wxcomponents,再在该目录下创建vant目录。2.安装组件库方法

1.创建目录

在项目的src目录下创建目录wxcomponents,再在该目录下创建vant目录。

2.安装组件库

方法一:下载组件库zip包

在vant-weapp的GitHub Releases版块下载最新的zip包。下载完毕后进行解压,将其dist目录下的文件放到vant目录下。

https://github.com/youzan/vant-weapp/releases

方法二:通过npm安装组件库

通过npm安装Vant Weapp,如果项目中存在package.json,执行下方的命令安装Vant Weapp,如果没有,则在项目根目录使用命令npm init,一路回车即可,会自动生成package.json。

npm i vant-weapp -S --production

安装完成后在项目根目录node_modules中找到@vant,同上找到dist目录,复制到wxcomponents中并改名为vant。个人更倾向与方法二,因为几个星期或者几个月后估计就不知道具体用的什么版本了。

3.引入Vant Weapp

方法一:在pages.json中引入

找到pages.json,在globalStyle或者具体page的style中引入Vant的组件,如果需要全局使用该组件,可以在globalStyle中usingComponents中全局引入。

"usingComponents": {
  "van-button": "/wxcomponents/vant/button/index",
  "van-grid": "/wxcomponents/vant/grid/index",
  "van-grid-item": "/wxcomponents/vant/grid-item/index",
  "van-index-bar": "/wxcomponents/vant/index-bar/index",
  "van-index-anchor": "/wxcomponents/vant/index-anchor/index"
}

如果只需要单独在个别页面使用,可在具体页面的style中配置usingComponents。

{
  "path": "pages/test",
  "style": {
    "navigationBarTitleText": "测试",
    "usingComponents": {
      "van-button": "/wxcomponents/vant/button/index"
    }
  }
}

在uni-app中是不存在app.wxss,只有经过编译后才会生成app.wxss,所以需要在App.vue中的style中引入才可以正常使用。


方法二:直接在页面中按需引用

由于uniapp是基于vue进行二次开发,所以可以直接在相关的页面文件中进行@import导入使用。

最终编译得到:

4.样式覆盖

有时候Vant的样式不满足现在的需求,需要对其做些简单的调整,这是就可以根据官网进行修改:

"primary" block class="custom-button">自定义样式覆盖按钮

通过定义个class直接进行样式覆盖:


如果你的style样式中存在scoped,我们可以利用vue中的语法,加个/deep/进行样式覆盖,如下所示:


5.定制主题

如果你对Vant的颜色样式不满意,可以通过官方提供的方法进行主题定制。 官方的介绍:

小程序基于 Shadow DOM 来实现自定义组件,所以 Vant Weapp 使用与之配套的 Css 变量 来实现定制主题。链接中的内容可以帮助你对这两个概念有基本的认识,避免许多不必要的困扰。 Css变量 的兼容性要求可以在 这里 查看。对于不支持 Css变量 的设备,定制主题将不会生效,不过不必担心,默认样式仍会生效。

(1)全局定制

可以在项目根目录建立assets\css文件夹,用于存放和样式相关的代码。 assets\css中新建2个文件: index.scss和定制主题的vant-theme.scss文件,index.scss引入vant-theme.scss。

@import "./vant-theme.scss";

然后在main.js中引入index.scss。

import Vue from 'vue'
import App from './App'
import './assets/css/index.scss' // 引入index.scss
// 其他省略

接着再vant-theme.scss中进行主题定制。官方配置如下:

// Component Colors
@text-color: #323233;
@border-color: #ebedf0;
@active-color: #f2f3f5;
@background-color: #f8f8f8;
@background-color-light: #fafafa;

最后在vant-theme.scss根据配置文件的内容进行需要的变量定制,如下所示,也可以使用uni.scss中的变量:

page {
  --button-info-background-color: $uni-text-color;
  --button-info-border-color: $uni-text-color;
}

(2)局部定制

在实际应用中,我们需要对单独组件进行定制,官方提供的方法有: 方法1:通过设置class,单独设置设置变量

"info" block class="my-button">class局部定制主题的信息按钮van-button>
.my-button {
  --button-info-background-color: grey;
  --button-info-border-color: grey;
}

方法2:通过style属性来动态设置变量。

"info" block :hljs-string">"buttonStyle">style局部定制主题的信息按钮
data() {
  return {
    buttonStyle: `
      --button-info-background-color: pink;
      --button-info-border-color: pink;
    `
  }
}

6.引入iconfont

vant-weapp中虽然内置了不少icon图标,但实际开发过程中肯定不满足我们的需要,因此可以根据自己的需求进行引入iconfont图标库文件。 在asssets/css中新建一个icon.scss用于管理字体图标,然后再index.scss中引入。

@import "./icon.scss";

然后将上面复制的链接看到的内容复制下,写入到icon.scss中,去除掉一些不需要的字体链接和其他的一些修改,变成如下形式:

@font-face {
  font-family: 'iconfont';
  src: url('https://at.alicdn.com/t/font_998792_mo2p0a3obyo.ttf?t=1579424702259') format('truetype');
}
 
[class^=""],
[class*=" "] {
  font-family: 'iconfont' !important;
  position:relative;
  font-size:inherit;
  text-rendering:auto;
  -webkit-font-smoothing:antialiased;
}
 
.iconfont-edit:before {
  content:"\e61d";
}
.iconfont-drag:before {
  content:"\e636";
}
.iconfont-rectangle:before {
  content:"\e790";
}

其中[class^=""]和[class*=" "]中的iconfont保持和上面的图标前缀一致,不建议使用icon前缀。 如果图标有变动后重新将.ttf的字体链接复制过来替换原来的font-face中的字体链接,重新将图标的class的复制过来即可。 配合van-icon组件,指定class-prefix为iconfont,name为图标的名称,不带iconfont-。

class-prefix="iconfont" name="edit" />
<van-icon class-prefix="iconfont" name="drag" />
<van-icon class-prefix="iconfont" name="rectangle" />

这样内置的图标也可以正常使用,不会有影响。

"chat-o" />
<van-icon name="https://b.yzcdn.cn/vant/icon-demo-1126.png" />

7.结语

以上是使用uni-app开发小程序引入vant weapp的过程的记录和所遇到的问题,在解决过程中得到一些经验,可以对后面学习的人有所帮助。

参考文章:

  1. uni-app引入UI组件库(Vant-weapp)步骤blog.csdn.net/yanghongyan…
  2. uni-app微信小程序引入vant weapp

liubing.me/uniapp-use-…


推荐阅读
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • uniapp中的样式和数据绑定(五)
    uni-app的样式1.uni-app种的样式1.1使用图标2.uni-app中的数据绑定3.v-bind动态绑定属性4.uni中的事件1.uni-app种的样式rpx即响应式p ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • ps:写的第一个,不足之处,欢迎拍砖---只是想用自己的方法一步步去实现一些框架看似高大上的小功能(比如说模型中的toArraytoJsonsetAtt ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
  • 阿里“云开发“小程序(uniCould)
    博主ps:网上资料少的可怜,哎,腾讯云涨价了,论服务器,我肯定选的阿里,再着你们对比下unico ... [详细]
  • uniapp 的 请求封装
    https:www.cnblogs.comgqx-htmlp10967570.html1.环境配置(可参考uni-官网的环境配置)common文件夹下新建config.jsle ... [详细]
  • Android-基于云信实现语音通话功能对于这几个方法的具体解释可以看云信信令的文档,或者这查看方法源码的注释如果是接受对方邀请并且加入频道成功之后,那么可以直接调用加入音视频房间 ... [详细]
  • 本文详细介绍了如何创建和使用VUE uni-app开发环境,包括通过HBuilderX可视化界面和通过vue-cli命令执行的方法。文章内容简单清晰,易于学习与理解。通过学习本文,读者可以深入了解VUE uni-app开发环境,并通过实践验证掌握具体的使用情况。编程笔记将为读者推送更多相关知识点的文章,欢迎关注! ... [详细]
  • 在package.json中有如下两个对象:husky:{hooks:{pre-commit:lint-staged}},lint-staged:{src** ... [详细]
  • 本文介绍了自学Vue的第01天的内容,包括学习目标、学习资料的收集和学习方法的选择。作者解释了为什么要学习Vue以及选择Vue的原因,包括完善的中文文档、较低的学习曲线、使用人数众多等。作者还列举了自己选择的学习资料,包括全新vue2.5核心技术全方位讲解+实战精讲教程、全新vue2.5项目实战全家桶单页面仿京东电商等。最后,作者提出了学习方法,包括简单的入门课程和实战课程。 ... [详细]
  • 微信小程序使用uni-app实现首页搜索框导航栏功能详解
    这篇文章主要介绍了微信小程序使用uni-app实现首页搜索框导航栏功能,uni-app 是一个使用 Vue.js (opens new window)开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序 ... [详细]
author-avatar
樱花恋雪的玫瑰_484
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有