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

news2024/11/18 14:51:34

文章目录

  • 微信小程序-使用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.coloradmin.cn/o/2166710.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP8266 make flash ESPBAUD=921600加快eclipse烧录速度

要点&#xff1a; 1&#xff09;Default baud rate (115200 baud) 既是烧录速度 2&#xff09;UART0、UART1的波特率都同make monitor的74880 3&#xff09;make flash时设置波特率&#xff0c;即实际使用的波特率 1. 波特率&#xff0c;默认115200&#xff0c;需27.8s Writi…

前端框架对比、分析与选择

在现代Web开发中&#xff0c;选择合适的前端框架对于项目的成功至关重要。本文将详细对比分析Vue.js、Angular、React和Layui这四种前端框架&#xff0c;帮助开发者做出明智的选择。 一、概述 1. Vue.js Vue.js是由尤雨溪创建的一个渐进式JavaScript框架&#xff0c;旨在通过简…

在精益生产现场管理和改善中,如何制定合理的奖励制度?

在精益生产的广阔实践领域中&#xff0c;现场管理与改善是推动企业持续进步、提升竞争力的关键环节。而制定合理的奖励制度&#xff0c;则是激发员工积极性、促进团队协作、加速改善进程的重要驱动力。本文&#xff0c;深圳天行健企业管理咨询公司将深入探讨在精益生产现场管理…

XSS | XSS 漏洞介绍

关注这个漏洞的其他相关笔记&#xff1a;XSS 漏洞 - 学习手册-CSDN博客 0x01&#xff1a;XSS 漏洞简介 跨站脚本&#xff08;Cross-Site Scripting&#xff0c;简称为 XSS&#xff09;攻击&#xff0c;是一种针对网站应用程序的安全漏洞进行攻击的技术&#xff0c;是代码注入的…

【在Linux世界中追寻伟大的One Piece】IP分片和组装的具体过程

目录 1 -> IP分片和组装的具体过程 2 -> 分片与组装的过程 2.1 -> 分片 2.2 -> 组装 3 -> 分片与组装的示意图 3.1 -> 分片组装场景 1 -> IP分片和组装的具体过程 16位标识(id)&#xff1a;唯一的标识主机发送的报文。如果IP报文在数据链路层被分片…

linux入门到实操-11 Linux用户权限管理:添加和查看用户、获取root权限和删除用户、用户组管理

教程来源&#xff1a;B站视频BV1WY4y1H7d3 3天搞定Linux&#xff0c;1天搞定Shell&#xff0c;清华学神带你通关_哔哩哔哩_bilibili 整理汇总的课程内容笔记和课程资料&#xff08;包含课程同版本linux系统文件等内容&#xff09;&#xff0c;供大家学习交流下载&#xff1a;…

Verba - Weaviate RAG 私人助理

文章目录 一、关于 Verba什么是Verba&#xff1f;功能列表 二、Verba入门安装部署 三、API密钥1、Weaviate2、Ollama3、UNSTRUCTURED4、AssemblyAI5、OpenAI6、HuggingFace 四、如何使用pip进行部署五、如何从源代码构建六、如何使用Docker安装VerbaVerba Walkthrough选择您的部…

进来看看吧,产品经理做APP从头到尾的所有工作流程详解!

一、项目启动前 从事产品的工作一年多&#xff0c;但自己一直苦于这样或者那样的困惑&#xff0c;很多人想要从事产品&#xff0c;或者老板自己创业要亲自承担产品一职&#xff0c;但他们对产品这个岗位的认识却不明晰&#xff0c;有的以为是纯粹的画原型&#xff0c;有的是以…

BACnet MS/TP协议解析(3)

1、MS/TP帧格式 例如数据&#xff08;hex&#xff09;&#xff1a;55 FF 01 03 02 00 00 D7 0x550xff0x010x030x020x000x000xD7BACnet数据BACnet数据CRC帧头帧类型目的地址源地址BACnet数据长度&#xff0c;大端CRC 2、帧类型 帧类型目前定义为 0-7&#xff0c;8-127 为 AS…

vue3 vite模式配置测试,开发、生产环境以及代理配置

1、首先在根目录下创建三个文本文件&#xff1a;.env.development&#xff0c;.env.production&#xff0c;.env.test .env.development中的内容为&#xff1a; // 开发环境 .env.development NODE_ENV development VITE_APP_MODE development VITE_OUTPUTDIR dist_dev /…

基于Java的宠物之家小程序 宠物服务小程序【源码+调试】

精彩专栏推荐订阅&#xff1a;在下方主页&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主页&#xff1a;计算机毕设木哥&#x1f525; &#x1f496; 文章目录 一、宠物之家小程…

FPGA第 11 篇,Verilog 系统函数( Verilog 中的系统函数)

前言 Verilog 作为一种强大的硬件描述语言&#xff0c;不仅提供了用于设计和仿真数字电路的基础语法&#xff0c;还包含了丰富的系统函数&#xff0c;帮助我们高效地完成复杂的硬件操作。系统函数是 Verilog 语言中预定义的特殊函数&#xff0c;通常以 $ 开头&#xff0c;它们…

【深度学习】(7)--神经网络之保存最优模型

文章目录 保存最优模型一、两种保存方法1. 保存模型参数2. 保存完整模型 二、迭代模型 总结 保存最优模型 我们在迭代模型训练时&#xff0c;随着次数初始的增多&#xff0c;模型的准确率会逐渐的上升&#xff0c;但是同时也随着迭代次数越来越多&#xff0c;由于模型会开始学…

今日不错的讲企业架构的好图

今日不错的讲企业架构的好图&#xff0c;来源B站不错的UP主&#xff1a;企业架构知识体系-业务技术管理的知识框架_哔哩哔哩_bilibili

grafana频繁DataSourceError问题

背景 随着 Grafana 数据量的不断增加&#xff0c;逐渐暴露出以下问题&#xff1a; Grafana 页面加载缓慢&#xff1b;Grafana 告警频繁出现 DatasourceError 错误。 对于第一个问题&#xff0c;大家可以参考这篇文章&#xff1a;Grafana 加载缓慢的解决方案。 不过&#xf…

【Unity踩坑】Textmesh Pro是否需要加入Version Control?

问题&#xff1a;如果Unity 项目中用到了Textmesh pro&#xff0c;相关的文件是否也需要签入呢&#xff1f; 回答&#xff1a; 在使用 Unity 的 Version Control&#xff08;例如 Plastic SCM 或 Git&#xff09;时&#xff0c;如果你的项目中使用了 TextMesh Pro&#xff0c…

条件字段有索引,为什么查询也这么慢?

如果我们想在某一本书中找到特定的主题&#xff0c;一般最快的方法是先看索引&#xff0c;找到对应的主题在哪个页码。 而对于 MySQL 而言&#xff0c;如果需要查找某一行的值&#xff0c;可以先通过索引找到对应的值&#xff0c;然后根据索引匹配的记录找到需要查询的数据行。…

家政服务预约系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;客户管理&#xff0c;员工管理&#xff0c;家政服务管理&#xff0c;服务预约管理&#xff0c;员工风采管理&#xff0c;客户需求管理&#xff0c;接单信息管理 微信端账号功能包括&#xff1a;系统首…

Java | Leetcode Java题解之第430题扁平化多级双向链表

题目&#xff1a; 题解&#xff1a; class Solution {public Node flatten(Node head) {dfs(head);return head;}public Node dfs(Node node) {Node cur node;// 记录链表的最后一个节点Node last null;while (cur ! null) {Node next cur.next;// 如果有子节点&#xff0…

后端(实例)08

设计一个前端在数据库调取数据的表格&#xff0c;并完成基础点击增删改查的功能&#xff1a; 1.首先写一个前端样式&#xff08;空壳&#xff09; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Insert title here&l…