vue3使用vant日历组件(calendar),自定义日历下标的两种方法

在vue3中使用vant日历组件(calendar)自定义下标的两种方法,推荐使用第二种:
日期下方加小圆点:
在这里插入图片描述

一、使用伪元素样式实现(::after伪元素小圆点样式会被覆盖,只能添加一个小圆点)

代码如下(示例):

<template><div name="calendar" :no-toolbar="true"><van-calendarclass="calendar-style" title="日历":poppable="false":show-confirm="false"v-model:show="show"switch-mode="month" :formatter="formatter" /></div>
</template><script setup>
import { ref } from 'vue';// 控制日历的显示状态
const show = ref(true);// 定义日期和对应的标识
const dateTime1 = [{ date1: '20241220', value1: false, value2: true, value3: false },{ date1: '20241212', value1: true, value2: false, value3: true }
];// 格式化日历中的每一天
const formatter = (day) => {const year = day.date.getFullYear();const month = String(day.date.getMonth() + 1).padStart(2, '0'); // 确保月份是两位数const date = String(day.date.getDate()).padStart(2, '0'); // 确保日期是两位数const dateTime = `${year}${month}${date}`; // 格式化日期// 遍历日期数组,检查是否有匹配的日期dateTime1.forEach(item => {if (item.date1 === dateTime) {// 根据标识添加不同的类名if (item.value1) {day.className += " addOrangeDot"; // 添加橙色点}if (item.value2) {day.className += " addGreenDot"; // 添加绿色点}if (item.value3) {day.className += " addRedDot"; // 添加红色点}}});return day; // 返回处理后的day对象
};
</script><style lang="less" scoped>
.addGreenDot,
.addOrangeDot,
.addRedDot {position: relative; // 确保相对定位
}// 绿点
::v-deep .addGreenDot::after {content: "";position: absolute;width: 6px;height: 6px;top: 56px; // 根据需要调整位置left: 25px; // 根据需要调整位置border-radius: 50%;background-color: rgb(34, 177, 76);margin-right: 12px!important;z-index: 1; // 确保它在其他元素之上
}// 黄点
::v-deep .addOrangeDot::after {content: "";position: absolute;width: 6px;height: 6px;top: 56px; // 根据需要调整位置left: 25px; // 根据需要调整位置border-radius: 50%;background-color: #ff822c;margin-right: 12px!important;z-index: 1; // 确保它在其他元素之上
}// 红点
::v-deep .addRedDot::after {content: "";position: absolute;width: 6px;height: 6px;top: 56px; // 根据需要调整位置left: 25px; // 根据需要调整位置border-radius: 50%;background-color: red;margin-right: 12px!important;z-index: 1; // 确保它在其他元素之上
}
</style>

二、通过插槽实现(推荐使用)

代码如下(示例):

<template><f7-page name="calendar" :no-toolbar="true"><van-calendarclass="calendar-style"title="日历":poppable="false":show-confirm="false"v-model:show="show"switch-mode="month":formatter="formatter"><template v-slot:bottom-info=day><div class="dot-container"><div v-if="day.className&&day.className.includes('addGreenDot')" class="green-dot"></div><div v-if="day.className&&day.className.includes('addOrangeDot')" class="orange-dot"></div><div v-if="day.className&&day.className.includes('addRedDot')" class="red-dot"></div></div></template></van-calendar></f7-page>
</template><script setup>
import { ref } from 'vue';// 控制日历的显示状态
const show = ref(true);// 定义日期和对应的标识
const dateTime1 = [{ date1: '20241220', value1: false, value2: true, value3: false },{ date1: '20241212', value1: true, value2: true, value3: true }
];// 格式化日历中的每一天
const formatter = (day) => {const year = day.date.getFullYear();const month = String(day.date.getMonth() + 1).padStart(2, '0'); // 确保月份是两位数const date = String(day.date.getDate()).padStart(2, '0'); // 确保日期是两位数const dateTime = `${year}${month}${date}`; // 格式化日期// 遍历日期数组,检查是否有匹配的日期dateTime1.forEach(item => {if (item.date1 === dateTime) {// 根据标识添加不同的类名if (item.value1) {day.className += " addOrangeDot"; // 添加橙色点}if (item.value2) {day.className += " addGreenDot"; // 添加绿色点}if (item.value3) {day.className += " addRedDot"; // 添加红色点}}});return day; // 返回处理后的day对象
};
</script><style lang="less" scoped>
.dot-container {display: flex;justify-content: center;
}.green-dot {width: 5px;height: 5px;border-radius: 50%;background-color: rgb(34, 177, 76);margin-right: 3px;z-index: 1;
}.orange-dot {width: 5px;height: 5px;border-radius: 50%;background-color: #ff822c;margin-right: 3px;z-index: 1;
}.red-dot {width: 5px;height: 5px;border-radius: 50%;background-color: red;margin-right: 3px;z-index: 1;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65221.shtml

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

相关文章

STM32学习之 按键/光敏电阻 控制 LED/蜂鸣器

STM32学习之 按键/光敏电阻 控制 LED/蜂鸣器 1、按键控制 LED 按键:常见的输入设备&#xff0c;按下导通&#xff0c;松手断开 按键抖动:由子按键内部使用的是机械式弹簧片来进行通断的、所以在按下和松手的瞬间会伴随有一连串的抖动 按键控制LED接线图&#xff1a; 要有工程…

2024金融大模型实践方案的概览(附实践资料合集)

金融大模型实践方案的全面总结&#xff1a; 金融大模型应用评测&#xff1a; 在金融评测的五大能力维度中&#xff0c;各模型整体表现基本满足当下场景需求&#xff0c;其中金融安全与价值对齐表现优异&#xff0c;但金融专业认知和多模态处理能力仍存在较大提升空间。 金融大模…

设计模式之享元模式:看19路棋盘如何做到一子千面

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 一、享元模式概述 \quad 在软件设计中&#xff0c;享元模式(Flyweight Pattern)的核心思想是通过共享来有效地支持大量细粒度对象的重用。这里的…

英语单词拼读小程序开发制作介绍

英语单词拼读小程序开发制作介绍本英语单词拼读小程序系统开发的主要功能有&#xff1a; 1、按年级分类展示每个年级阶段的英语单词信息。 2、点击选择的单词进入单词拼读页面&#xff0c;展示英语单词的拼读音标、中文意思、单词发音、拆分词汇发音、用户通过朗读发音对比。通…

华为管理变革之道:管理制度创新

目录 华为崛起两大因素&#xff1a;管理制度创新和组织文化。 管理是科学&#xff0c;150年来管理史上最伟大的创新是流程 为什么要变革&#xff1f; 向世界标杆学习&#xff0c;是变革第一方法论 体系之一&#xff1a;华为的DSTE战略管理体系&#xff08;解决&#xff1a…

基于Spring Boot的中国戏曲文化传播系统

一、系统背景与意义 中国戏曲作为中华民族的文化瑰宝&#xff0c;具有深厚的历史底蕴和艺术价值。然而&#xff0c;随着现代生活节奏的加快和娱乐方式的多样化&#xff0c;传统戏曲文化的传播和普及面临诸多挑战。因此&#xff0c;开发一个基于Spring Boot的中国戏曲文化传播系…

GitLab安装及使用

目录 一、安装 1.创建一个目录用来放rpm包 2.检查防火墙状态 3.安装下载好的rpm包 4.修改配置文件 5.重新加载配置 6.查看版本 7.查看服务器状态 8.重启服务器 9.输网址 二、GitLab的使用 1.创建空白项目 2.配置ssh 首先生成公钥&#xff1a; 查看公钥 把上面的…

14-zookeeper环境搭建

0、环境 java&#xff1a;1.8zookeeper&#xff1a;3.5.6 1、下载 zookeeper下载点击这里。 2、安装 下载完成后解压&#xff0c;放到你想放的目录里。先看一下zookeeper的目录结构&#xff0c;如下图&#xff1a; 进入conf目录&#xff0c;复制zoo_sample.cfg&#xff0…

C++---------动态内存管理

以下是对 C 中相关概念的详细说明及代码示例&#xff1a; 一、动态分配和堆 new 操作符&#xff1a; new 操作符用于在堆上动态分配内存。它会调用对象的构造函数&#xff08;如果是类对象&#xff09;并返回指向分配内存的指针。示例&#xff1a; #include <iostream&g…

R语言数据分析案例46-不同区域教育情况回归分析和探索

一、研究背景 教育是社会发展的基石&#xff0c;对国家和地区的经济、文化以及社会进步起着至关重要的作用。在全球一体化进程加速的今天&#xff0c;不同区域的教育发展水平呈现出多样化的态势。这种差异不仅体现在教育资源的分配上&#xff0c;还表现在教育成果、教育投入与…

单机和微服务的区别,微服务有什么问题?数据一致性问题怎么解决?幂等问题怎么解决?

单机和微服务的区别&#xff0c;微服务有什么问题&#xff1f;数据一致性问题怎么解决&#xff1f;幂等问题怎么解决&#xff1f; 单机架构和微服务架构在设计理念、部署和扩展性上有显著区别。 单机架构 vs 微服务架构 单机架构 定义&#xff1a;所有组件&#xff08;前端…

基于springboot+vue实现的卷烟营销统计分析系统 (源码+L文+ppt)4-129

摘 要 卷烟行业的快速发展使得卷烟营销统计分析系统成为了一个必不可少的工具。基于Java的卷烟营销统计分析系统旨在提供高效、准确和便捷的适用卷烟营销服务。本文讲述了基于java语言开发&#xff0c;后台数据库选择MySQL进行数据的存储。该软件的主要功能是进行卷烟营销统计…

mac启ssh服务用于快速文件传输

x.1 在mac上启SSH服务 方法一&#xff1a;图形交互界面启ssh&#xff08;推荐&#xff09; 通过sharing - advanced - remote login来启动ssh&#xff1b;&#xff08;中文版mac应该是 “系统设置 → 通用 → 共享”里打开“远程登录”来启动&#xff09; 查看自己的用户名和…

青蛇人工智能学家

青蛇人工智能学家 青蛇&#xff0c;是蓝星上&#xff0c;最出名的人工智能学家。 在蓝星上&#xff0c;大家都知道&#xff0c;青蛇人工智能学家&#xff0c;最大的爱好&#xff0c;是美食。 青蛇人工智能学家&#xff0c;对自己的食物&#xff0c;非常在意&#xff0c;对自己的…

[c++进阶(三)]单例模式及特殊类的设计

1.前言 在实际场景中,总会遇见一些特殊情况,比如设计一个类,只能在堆上开辟空间, 或者是设计一个类只能实例化一个对象。那么我们应该如何编写代码呢&#xff1f;本篇将会详细的介绍 本章重点&#xff1a; 本篇文章着重讲解如何设计一些特殊 的类,包括不能被拷贝,只能在栈/堆上…

【LLM论文日更】| 训练大型语言模型在连续潜在空间中进行推理

论文&#xff1a;https://arxiv.org/pdf/2412.06769代码&#xff1a;暂未开源机构 &#xff1a;Meta领域&#xff1a;思维链发表&#xff1a;arxiv 研究背景 研究问题&#xff1a;这篇文章要解决的问题是如何在大语言模型&#xff08;LLMs&#xff09;中实现一种新的推理范式&…

opc da 服务器数据 转 opc ua项目案例

目录 1 案例说明 2 VFBOX网关工作原理 3 应用条件 4 查看OPC DA服务器的相关参数 5 配置网关采集opc da数据 6 用opc ua协议转发采集的数据 7 在服务器上运行仰科OPC DA采集软件 8 案例总结 1 案例说明 在OPC DA服务器上运行OPC DA client软件查看OPC DA服务器的相关参…

学习threejs,PerspectiveCamera透视相机和OrthographicCamera正交相机对比

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.PerspectiveCamera透…

PHP后执行php.exe -v命令报错并给出解决方案

文章目录 一、执行php.exe -v命令报错解决方案 一、执行php.exe -v命令报错 -PHP Warning: ‘C:\windows\SYSTEM32\VCRUNTIME140.dll’ 14.38 is not compatible with this PHP build linked with 14.41 in Unknown on line 0 解决方案 当使用PHP8.4.1时遇到VCRUNTIME140.dll…

分布式调度框架学习笔记

一、分布式调度框架的基本设计 二、线程池线程数量设置的基本逻辑 cpu是分时复用的方法&#xff0c;线程是cpu调度的最小单元 如果当前cpu核数是n&#xff0c;计算密集型线程数一般设为n&#xff0c;io密集型(包括磁盘io和网络io)线程数一般设置为2n. 计算密集型线程数一般设…