微信小程序-使用vant组件库

article/2025/7/22 0:48:02

文章目录

  • 微信小程序-使用vant组件库
    • 概述
    • 构建npm
    • 构建步骤
    • 使用vant
      • 注册
      • 使用
      • 添加事件
      • 使用插槽
    • 样式覆盖
      • 解除样式隔离
      • 使用外部样式类
      • 使用CSS变量

微信小程序-使用vant组件库

概述

Vant Weapp 是有赞前端团队开源的小程序 UI 组件库,基于微信小程序的自定义组件开发,可用来快速搭建小程序项目。

官方文档

构建npm

目前小程序已经支持使用 npm 安装第三方包,但是这些 npm 包在小程序中不能够直接使用,必须得使用小程序开发者工具进行构建后才可以使用。

因为 node_modules 目录下的包,不会参与小程序项目的编译、上传和打包,因此。在小程序项目中要想使用 npm 包,必须走一遍 构建 npm 的过程。

在构建成功以后,默认会在小程序项目根目录,也就是 node_modules 同级目录下生成 miniprogram_npm目录,里面存放这构建打包后的 npm 包,也就是小程序运行过程中真正使用的包。

目录结构如下:

在这里插入图片描述

构建步骤

一、执行命令 npm init -y,生成 package.json 文件。

二、执行命令 npm i @vant/weapp,添加 vant 组件库。

如果遇到问题,可以先清理缓存,执行命令 npm cache clean --force.

三、点击微信开发者工具:菜单栏 -> 工具 -> 构建npm,会生成 minnprogram_npm 目录。

生成如下目录结构:

在这里插入图片描述

四、删除 app.json 文件中 style:v2 属性,小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件样式混乱。

使用vant

注册

  • 全局注册:在 app.json 中注册,可以在任意组件中使用。
  • 局部注册:在 index.json 中注册,只能在当前组件中使用。
// index.json
"usingComponents": {"van-image": "@vant/weapp/image/index"
}
// app.json
"usingComponents": {"van-image": "@vant/weapp/image/index"
}

使用

<van-button type="default">默认按钮</van-button>
<van-button type="primary">主要按钮</van-button>
<van-button type="info">信息按钮</van-button>
<van-button type="warning">警告按钮</van-button>
<van-button type="danger">危险按钮</van-button>
<!-- 网络图片: -->
<van-image width="100" height="100" src="https://img.yzcdn.cn/vant/cat.jpeg" />
<!-- 本地图片: -->
<van-image width="100" height="100" src="/images/a.png" />
<!-- 圆形图片: -->
<van-image width="100" height="100" round src="/images/a.png" />

添加事件

事件名说明回调参数
bind:click点击图片时触发event: Event
bind:load图片加载完毕时触发event: Event
bind:error图片加载失败时触发event: Event
<van-image width="100" height="100" src="https://img.yzcdn.cn/vant/cat.jpeg" bind:click="handleClick" />
Page({handleClick() {console.log("点击了网络图片")},
})

使用插槽

名称说明
loading自定义加载中的提示内容
error自定义加载失败时的提示内容
<van-image width="100" height="100" src="https://img.yzcdn.cn/vant/cat.jpeg" use-loading-slot use-error-slot><van-loading slot="loading" type="spinner" size="20" vertical /><text slot="error">加载失败</text>
</van-image>

样式覆盖

Vant Weapp 基于微信小程序的机制,为开发者提供了以下 3 种修改组件样式的方法:

  1. 解除样式隔离:在页面中使用 Vant Weapp 组件时,可直接在页面的样式文件中覆盖样式
  2. 使用外部样式类:需要注意普通样式类和外部样式类的优先级是未定义的,需要添加 !important 保证外部样式类的优先级
  3. 使用 CSS 变量:在页面或全局对多个组件的样式做批量修改以进行主题样式的定制

解除样式隔离

Vant Weapp 的所有组件都开启了addGlobalClass: true以接受外部样式的影响,因此我们可以通过审核元素的方式获取当前元素的类名,然后复制到组件的 .wxss 中进行修改。

在这里插入图片描述

<van-button type="danger">危险按钮</van-button>
.van-button--danger {background-color: blue !important;border: 10rpx solid yellow !important;
}

效果如下:

在这里插入图片描述

使用外部样式类

Vant Weapp 开放了大量的外部样式类供开发者使用,具体的样式类名称可查阅对应组件的“外部样式类”部分。

需要注意的是普通样式类和外部样式类的优先级是未定义的,因此使用时请添加!important以保证外部样式类的优先级。

如下是 van-button 的外部样式类:

类名说明
custom-class根节点样式类
hover-class指定按钮按下去的样式类
loading-class加载图标样式类
<van-button type="info" custom-class="my-custom-class">信息按钮</van-button>
.my-custom-class {background-color: lightcoral !important;color: blue !important;
}

效果如下:

在这里插入图片描述

使用CSS变量

Vant Weapp 为部分 CSS 属性开放了基于 CSS 属性的定制方案。

相较于 解除样式隔离 和 使用外部样式类,这种方案支持在页面或应用级别对多个组件的样式做批量修改以进行主题样式的定制。

当然,用它来修改单个组件的部分样式也是绰绰有余的

一、声明自定义属性,属性名需要以两个减号(--)开始,属性值则可以是任何有效的 CSS 值

/* 声明全局变量 */
page {--main-bg-color: lightcoral;
}

二、使用全局变量,用 var() 函数包裹

/* 声明全局变量 */
page {--main-bg-color: lightcoral;
}
/* 声明局部变量 */
.container {--main-bg-color: lightseagreen;
}

三、使用

<van-button type="primary" custom-class="my-custom-class2">主要按钮</van-button>
.my-custom-class2 {background-color: var(--main-bg-color) !important;color: red !important;
}

四、也可以在按钮上直接添加类名:

<van-button type="default" class="my-button">默认按钮</van-button>
.my-button {--my-background-color: red;--my-border-color: blue;
}.van-button--default {font-size: 28rpx !important;background-color: var(--my-background-color) !important;border: 1px solid var(--my-border-color) !important;
}

效果如下:

在这里插入图片描述


http://www.hkcw.cn/article/nWPVYLvwfl.shtml

相关文章

微信小程序地图组件开发:UniApp 集成高德 / 腾讯地图 API 详解

前言&#xff1a;家人们&#xff0c;大家好&#xff01;今天分享一篇文章给大家&#xff01;要是文章对你有帮助&#xff0c;激发了你的灵感&#xff0c; 求个收藏 关注啦&#xff5e;后续还有超多惊喜&#xff0c;别错过&#xff01; 目录 一、引言 二、开发前准备 &#…

新版Onenet物联网平台,微信小程序显示上传信息发送指令。STM32ESP8266实现采集数据并上传

目录 前言 一、Onenet平台配置 1.创建产品 2.配置产品属性 3.创建物模型&#xff08;创建设备&#xff09; 二、ESP8266设备连接 1.获取MQTT连接参数 2.Onenet物理属性上传主题 3.上传数据 三、ESP8266和STM32通信 1.STM32发送数据&#xff0c;8266解析并上传 2.82…

uni-app 高效开发小程序技巧:自动化切换环境变量

一. 前言 在微信小程序开发中&#xff0c;uni-app 作为一个开发利器&#xff0c;方便了广大开发者&#xff0c;越来越多的公司开始使用 uni-app 进行开发&#xff0c;尤其是在开发小程序的时候&#xff0c;今天给大家分享一个使用 uni-app 高效开发小程序的技巧&#xff0c;如…

基于微信小程序的旅游攻略分享与互动平台设计与实现

目录 一. &#x1f981; 前言二. &#x1f981; 开源代码与组件使用情况说明三. &#x1f981; 核心功能3.1 游客端功能3.1.1 景点信息查询功能3.1.2 旅游路线推荐功能3.1.3 景点打卡功能3.1.4 评论与互动功能3.1.5 门票预订功能3.1.6 当地美食推荐功能3.1.7 个人中心 3.2 管理…

uni-app 发行到微信小程序,主包过大解决方案

目录 1.静态资源通过cdn引入 2.移除无依赖组件 3.将非核心页面移入subPackages中 正常uni-app项目发行到微信小程序,发现包过大,基本已经没法从代码层面修改内容了,今天这里介绍一些,不用大批量修改源码的情况下,减少包大小的方式 官方默认这包不能超过2M 分包不能超过30M …

微信小程序富文本解析组件wxParse实践指南

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;微信小程序wxParse组件是一款用于解析和渲染富文本内容的工具&#xff0c;它扩展了小程序对HTML内容的支持&#xff0c;加入了CSS样式和图片懒加载等特性。开发者可以利用这个组件将HTML文本转换为WXML结构&…

微信小程序wx.getlocation接口申请教程

wx.getLocation(Object object) 功能描述&#xff1a; 获取当前的地理位置、速度。当用户离开小程序后&#xff0c;此接口无法调用。开启高精度定位&#xff0c;接口耗时会增加&#xff0c;可指定 highAccuracyExpireTime 作为超时时间。地图相关使用的坐标格式应为 gcj02。 …

【一文读懂】uniapp微信小程序获取手机号-手机号快速验证组件(全流程)

微信小程序获取手机号&#xff0c;要分几步&#xff0c;再次做个记录&#xff0c;希望耐心看完。 1. 第一步&#xff0c;先获取code&#xff0c;并不是登入的那个code&#xff0c; 2. 第二步&#xff0c;根据小程序的appid获取access_token凭证&#xff0c; 3. 第三步&#xf…

微信小程序实现微信授权登录的完整流程

1. 概述 微信授权登录是小程序用户登录的常见方式&#xff0c;利用微信提供的 wx.login 和 wx.getUserProfile 方法&#xff0c;获取用户的基本信息和唯一标识 openid 及 session_key。结合后端存储及业务逻辑&#xff0c;可以实现用户的身份管理。 2. 流程图 用户授权登录的…

微信小程序页面制作——婚礼邀请函(含代码)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

经济学泰斗菲舍尔逝世:培育伯南克、德拉吉的央行界“一代宗师” 全球金融体系的“救火队长”

当地时间6月1日,以色列央行宣布世界著名经济学家、以色列央行前行长及美联储前副主席斯坦利菲舍尔于5月31日逝世,享年81岁。菲舍尔拥有美国和以色列双重国籍,其职业生涯横跨学术界、国际金融机构与中央银行,对全球经济政策产生了深远影响。他曾担任以色列银行行长,并出任美…

高动态范围射频收发器如何解决关键性任务通信的阻塞挑战

摘要 由于频谱有限&#xff0c;商用/专用蜂窝网络的使用越来越多&#xff0c;无线电平台开发面临着更复杂的干扰场景。本文将讨论高动态范围射频收发器 ADRV9002 软件定义无线电(SDR)如何应对关键性任务通信无线电和其他高动态要求无线应用的阻塞挑战。 引言 关键性任务通信…

达科欢迎樊振东加入球队 德甲新星闪耀

#达科欢迎樊振东加入球队# 德甲联赛萨尔布吕肯乒乓球甲级俱乐部 宣布樊振东 加盟球队,效力于该队的达科-约奇克在社交媒体欢迎樊振东加入球队。#樊振东加盟德甲联赛#责任编辑:zx0001

北京今天最高气温达31℃!假期结束防暑降温模式正式开启 北风加大注意防护

据北京市气象局消息,6月2日08时,南郊观象台气温为21.4℃。预计今天白天最高气温将达到31℃左右,外出时请注意遮阳防晒并勤补水。受冷空气影响,今天白天北风自西向东逐渐加大,阵风可达6、7级,请注意防风,防范高空坠物。早晨天气晴间多云,有轻雾,偏北风1、2级,气温在17…

乌为何剑走偏锋突袭俄战略轰炸机 FPV无人机木马立奇功

以色列有“BP机炸弹”,乌克兰有“FPV无人机木马”,这似乎在逼迫普京使用战术核武器。6月1日,据媒体报道,经过18个月的策划,乌克兰实施了代号为“蜘蛛网”的行动,摧毁了41架俄罗斯战略轰炸机。乌克兰安全局发言人表示,此次行动由泽连斯基亲自指挥,乌安全局长马柳克负责具…

2025三掌柜赠书活动第十九期 DeepSeek图书:全年龄段的智慧之选,一本书开启知识之旅

目录 Part.0 前言 Part.1 职场人的AI效率革命&#xff1a;解锁DeepSeek多元应用&#xff0c;精准解决高频痛点&#xff01; Part.2 企业家的必修课&#xff1a;用AI重构商业模式&#xff0c;打造下一个独角兽&#xff01; Part.3 学术党的救命稻草&#xff1a;选题到答辩全辅…

Spring Boot + MyBatis 实现的简单用户管理项目的完整目录结构示例

&#x1f4c1; 示例项目结构&#xff08;基于 Maven&#xff09; user-management/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/example/usermanagement/ │ │ │ ├── controller/ │ │ │ │ └── UserC…

科威特一住宅楼起火致6死 火灾原因待查

科威特费尔瓦尼耶省一栋住宅楼在6月1日凌晨发生严重火灾,导致至少6人死亡,另有5人重伤。据当地消防部门消息,该省拉卡地区一栋建筑内的两套公寓起火,消防人员在凌晨时分已控制住火势。目前火灾的具体原因尚未公布。科威特消防部门发布了公共安全提醒,呼吁各地设施业主严格…

100余所高校校长齐聚西财 共议智能时代高等教育未来

6月1日,西南财经大学百年校庆中外大学校长论坛在蓉城举行。来自厦门大学、中央财经大学、对外经济贸易大学、上海财经大学、电子科技大学、英国剑桥大学等国内外知名大学的100余位校长及专家学者齐聚一堂,共同探讨智能时代高等教育的未来。西南财经大学党委书记赵建军在发言中…

龙船漂移赛竟然还有这么多玩法 非遗遇上极限操作

龙舟不仅能劈波斩浪,还能像赛车一样倒车、漂移、丝滑过“S弯”。最近广东一场龙舟赛在网络上引起了广泛关注,网友纷纷表示这更像是水上版的《速度与激情》。在肇庆叠滘的狭窄河道里,25米长的龙舟以70度急转弯完成“神龙摆尾”,船尾几乎擦岸而过;“湾区伶仃”号上演了“蚂蚁…