当前位置: 首页 > news >正文

自定义封装日历组件

自定义日历

工作需要,但现有框架封装的日历无法满足需求,又找不到更好的插件,所以准备自己封装一个。

效果图和说明

在这里插入图片描述
一个很简易版的demo日历,本文只提供最基本的功能代码,便于阅读二开。

新建calendar.vue文件

<template>
<div class="calendar"><!-- 年月 --><div class="head"><div><span @click="setYear(false)">&lt;&lt;</span><span style="margin-left: 17px;" @click="setMonth(false)">&lt; </span></div><div> {{date.year}}{{date.month}}</div><div><span style="margin-right: 17px;" @click="setMonth(true)">&gt; </span><span @click="setYear(true)">&gt;&gt;</span></div></div><!-- 星期 --><div class="weeks"><ul><li v-for="(item,index) of weeks" :key="index">{{item}}</li></ul></div><!----><div class="days"><ul><li v-for="(item,index) of days" :key="index" :class="{'ash':item.cls}">{{item.val}}</li></ul></div>
</div>
</template><script>
export default {data(){return{date:{year:'',month:''},weeks:['日', '一', '二', '三', '四', '五', '六'],days:[],}},methods:{// 获取年、月getDate(){let date = new Date()this.date.year = date.getFullYear()this.date.month = date.getMonth()+1this.getViewDays()},// 获取界面中显示的天getViewDays(){let oneDayWeek = new Date(`${this.date.year}-${this.date.month}-01`).getDay()let lastMonth = this.date.month-1 > 0 ? this.date.month-1 : 12// 获取上月天数let lastMonthDays = this.getDays(lastMonth)this.days = []// 补齐上月天数for(let i=0; i<oneDayWeek; i++){this.days.push({val: lastMonthDays - oneDayWeek + i +1,cls:true})}let thisMonthDays = this.getDays(this.date.month)// 放入这月天数for(let i=1; i<=thisMonthDays; i++){this.days.push({val: i})}// 下月天数补齐let nextMonthDay = 42-this.days.lengthfor(let i=1; i<=nextMonthDay; i++){this.days.push({val: i,cls:true})}},  // 年份更改setYear(state){if(state){this.date.year++}else{this.date.year--}this.getViewDays()},// 月份更改setMonth(state){if(state){if(this.date.month == 12){this.date.year++this.date.month = 1}else{this.date.month++}}else{if(this.date.month == 1){this.date.year--this.date.month = 12}else{this.date.month--}}this.getViewDays()},  // 获取一个月有多少天getDays(month){if([1,3,5,7,8,10,12].indexOf(month) != -1){return 31}else if([4,6,9,11].indexOf(month) != -1){return 30}else{if((this.date.year % 4 === 0 && this.date.year % 100 != 0) || this.date.year % 400 ==0){return 29}else{return 28}}}},mounted(){this.getDate()}
}
</script><style lang="scss" scoped>
.calendar{width: 380px;box-shadow: 0px 0px 3px #ccc;margin: 0 auto;margin-top: 30px;border-radius: 5px;padding: 15px 25px;.head{display: flex;justify-content: space-between;span{cursor: pointer;}}.weeks > ul{display: flex;justify-content: space-around;border-bottom: 1px solid #ccc;padding: 10px 0;font-size: 13px;margin-top: 20px;}.days > ul{display: flex;flex-wrap: wrap;justify-content: space-between;li{width: 54px;height: 40px;line-height: 40px;text-align: center;}.ash{color: #ccc;}}
}
</style>

最后保存运行即可。

相关文章:

自定义封装日历组件

自定义日历 工作需要&#xff0c;但现有框架封装的日历无法满足需求&#xff0c;又找不到更好的插件&#xff0c;所以准备自己封装一个。 效果图和说明 一个很简易版的demo日历&#xff0c;本文只提供最基本的功能代码&#xff0c;便于阅读二开。 新建calendar.vue文件 <…...

【大模型】【面试】独家总结表格

问题解答你能解释一下Transformer架构及其在大型语言模型中的作用吗?Transformer架构是一种深度神经网络架构,于2017年由Vaswani等人在他们的论文“Attention is All You Need”中首次提出。自那以后,它已成为大型语言模型(如BERT和GPT)最常用的架构。 Transformer架构使用…...

C# 6.定时器 timer

使用控件&#xff1a; 开启定时器&#xff1a;timer1.Start(); 关闭定时器&#xff1a;timer1.Stop(); 定时间时间间隔:Interval timer1.Interval 1000; Interva等于1000是每一秒刷新一次 定时器默认时间间隔是100ms 代码创建定时器 ①创建 Timer t1 new Timer(); …...

有了 createSlice,还有必要使用 createReducer 吗?什么情况需要 createReducer 呢?

通常情况下&#xff0c;使用 createSlice 已经足够满足大多数需求&#xff0c;而不需要直接使用 createReducer。但是&#xff0c;在某些特定场景下&#xff0c;createReducer 仍然有其用处&#xff1a; 更细粒度的控制&#xff1a; 当你需要对 reducer 的行为进行更精细的控制…...

怎么搭建AI带货直播间生成虚拟主播?

随着电商直播带货的热潮不断升温&#xff0c;虚拟主播逐渐崭露头角&#xff0c;成为电商直播领域的新宠&#xff0c;相较于真人主播&#xff0c;虚拟主播具备无档期风险、人设稳定可控、24小时不间断直播等显著优势。 本文将深入探讨如何搭建一个AI带货直播间&#xff0c;并详…...

设计模式的原则

设计模式的原则通常包括以下几种核心原则&#xff1a; 单一职责原则 (SRP)&#xff1a;一个类应该只有一个单一的职责&#xff0c;即该类应该只有一个引起它变化的原因。这样可以减少类之间的耦合&#xff0c;使得系统更加易于维护和扩展。 开放/封闭原则 (OCP)&#xff1a;软…...

RocketMQ与RabbitMQ的区别:技术选型指南

在现代分布式系统和微服务架构中&#xff0c;消息队列&#xff08;Message Queue&#xff0c;简称MQ&#xff09;扮演着至关重要的角色。消息队列用于实现系统间的异步通信、解耦、削峰填谷等功能。目前常见的MQ实现包括ActiveMQ、RabbitMQ、RocketMQ和Kafka。本文将重点对比Ro…...

小白也能懂:SQL注入攻击基础与防护指南

SQL注入是一种针对数据库的攻击方式&#xff0c;攻击者通过在Web表单、URL参数或其他用户输入的地方插入恶意SQL代码&#xff0c;以此绕过应用程序的验证机制&#xff0c;直接与后台数据库交互。这种攻击可以导致攻击者无授权地查看、修改或删除数据库中的数据&#xff0c;甚至…...

【Hot100】LeetCode—76. 最小覆盖子串

题目 原题链接&#xff1a;76. 最小覆盖子串 1- 思路 利用两个哈希表解决分为 &#xff1a;① 初始化哈希表、②遍历 s&#xff0c;处理当前元素&#xff0c;判断当前字符是否有效、③收缩窗口、④更新最小覆盖子串 2- 实现 ⭐76. 最小覆盖子串——题解思路 class Solution …...

删除排序链表中的重复元素 II(LeetCode)

题目 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 解题 class ListNode:def __init__(self, val0, nextNone):self.val valself.next nextclass Solution:def deleteDuplicates(self…...

【Java】解决如何将Http转为Https加密输出

目录 HTTP转HTTPS一、 获取 SSL/TLS 证书二、 安装证书2.1 Apache2.2 Nginx 三、更新网站配置四. 更新网站链接五. 检查并测试六. 自动续期&#xff08;针对 Lets Encrypt&#xff09; HTTP转HTTPS 将网站从 HTTP 转换为 HTTPS 能够加密数据传输&#xff0c;还能提高搜索引擎排…...

二叉树链式结构的实现(递归的暴力美学!!)

前言 Hello,小伙伴们。你们的作者菌又回来了&#xff0c;前些时间我们刚学习完二叉树的顺序结构&#xff0c;今天我们就趁热打铁&#xff0c;继续我们二叉树链式结构的学习。我们上期有提到&#xff0c;二叉树的的底层结构可以选为数组和链表&#xff0c;顺序结构我们选用的数…...

Python | Leetcode Python题解之第312题戳气球

题目&#xff1a; 题解&#xff1a; class Solution:def maxCoins(self, nums: List[int]) -> int:n len(nums)rec [[0] * (n 2) for _ in range(n 2)]val [1] nums [1]for i in range(n - 1, -1, -1):for j in range(i 2, n 2):for k in range(i 1, j):total v…...

远程访问mysql数据库的正确打开方式

为了安全&#xff0c;mysql数据库默认只能本机登录&#xff0c;但是在有些时候&#xff0c;我们会有远程登录mysql数据库的需求&#xff0c;这时候应该怎么办呢&#xff1f; 远程访问mysql数据&#xff0c;需要两个条件&#xff1a; 首先需要mysql服务器将服务绑定到0.0.0.0…...

网络6 -- udp_socket 实现 echo服务器

目录 1.server 服务端 1.1.完整代码展示&#xff1a; 1.2.代码解析&#xff1a; 1.2.1 给服务端创建套接字 1.2.2 绑定套接字 1.2.3 服务端接受数据并返回 2.客户端&#xff1a; 2.1 完整代码展示&#xff1a; 2.2 代码解析 2.2.1 客户端使用手则&#xff1a; 2.2.2 …...

ASUS/华硕幻15 2020 冰刃4 GX502L GU502L系列 原厂win10系统 工厂文件 带F12 ASUS Recovery恢复

华硕工厂文件恢复系统 &#xff0c;安装结束后带隐藏分区&#xff0c;一键恢复&#xff0c;以及机器所有驱动软件。 系统版本&#xff1a;windows10 原厂系统下载网址&#xff1a;http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意&#xff1a;仅支持以上型号专用…...

simulink绘制bode图

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…...

知识工程视角下的软件研发

知识工程 在我们的工作中存在两类知识&#xff1a;显式知识&#xff08;explicit knowledge&#xff09;、不可言说的知识&#xff08;tacit knowledge&#xff09;。 所谓显式知识就是能够直接表达且在人群中分享的知识。比如&#xff0c;地球的周长、水的密度、三角形面积公…...

深度学习------权重衰退

目录 使用均方范数作为硬性限制使用均方范数作为柔性限制演示最优解的影响参数更新法则总结高纬线性回归多项式的权重衰退从零开始实现初始化模型参数定义L2范数惩罚定义训练代码实现忽略正则化直接训练使用权重衰减从零开始代码实现 多项式的权重衰退的简洁实现简洁函数代码简…...

【算法】退火算法 Simulated Annealing

退火算法&#xff08;Simulated Annealing, SA&#xff09;是一种基于热力学模拟的优化算法&#xff0c;用于求解全局优化问题。它通过模拟物理退火过程来寻找全局最优解。以下是退火算法的基本原理和步骤&#xff1a; 一、基本原理 退火算法的灵感来源于金属在高温下缓慢冷却…...

换个角度思考【牛客tracker 每日一题】

换个角度思考 时间限制&#xff1a;1秒 空间限制&#xff1a;256M 知识点&#xff1a;线段树 网页链接 牛客tracker 牛客tracker & 每日一题&#xff0c;完成每日打卡&#xff0c;即可获得牛币。获得相应数量的牛币&#xff0c;能在【牛币兑换中心】&#xff0c;换取相…...

v7上线首周,93%老用户没发现的隐藏指令——高阶提示工程实战手册,含12个未公开参数调用语法

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney v7核心架构升级与隐性能力图谱 多模态融合推理引擎重构 Midjourney v7 引入了基于分层注意力对齐&#xff08;Hierarchical Attention Alignment, HAA&#xff09;的新型生成主干&#xff…...

本地化AI代码助手部署指南:从模型选型到性能调优

1. 项目概述&#xff1a;一个面向开发者的本地化AI代码助手最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“JPeetz/Hermes-Studio”。乍一看名字&#xff0c;可能会联想到希腊神话里的信使赫尔墨斯&#xff0c;或者某个设计软件。但点进去你会发现&#xff0c;这其实是一…...

LVGL列表控件实战:5分钟搞定一个带图标和事件响应的菜单界面

LVGL列表控件实战&#xff1a;5分钟打造高交互性嵌入式菜单界面 在嵌入式设备的人机交互设计中&#xff0c;菜单界面是最基础也最关键的组件之一。想象一下&#xff0c;当你需要为智能家居控制面板设计一个简洁明了的操作菜单&#xff0c;或者为工业设备开发一个功能选择界面时…...

EmbBERT架构解析:面向TinyML的革新设计与优化

1. EmbBERT架构解析&#xff1a;面向TinyML的革新设计在边缘计算设备上部署自然语言处理模型一直面临内存和计算资源的双重限制。传统BERT模型即使经过压缩&#xff0c;其2MB版本在TinyNLP基准测试中平均准确率仅为83.93%&#xff0c;且激活内存占用高达1.5MB。EmbBERT通过三大…...

如何在Windows任务栏实时监控股票行情:TrafficMonitor股票插件终极指南

如何在Windows任务栏实时监控股票行情&#xff1a;TrafficMonitor股票插件终极指南 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 你是否曾经在工作时频繁切换窗口查看股票行情…...

英特尔将雷电3集成进CPU:如何重塑高速接口生态与USB4标准

1. 项目概述&#xff1a;Thunderbolt 3的十字路口与英特尔的关键抉择如果你在2017年前后关注过PC和笔记本的接口演进&#xff0c;一定会对那个混乱的时期记忆犹新。一边是USB 3.0/3.1 Gen 1/Gen 2各种命名让人眼花缭乱&#xff0c;另一边是性能强悍但曲高和寡的Thunderbolt&…...

如何在Windows电脑上轻松安装安卓应用:5步完成轻量级跨平台部署

如何在Windows电脑上轻松安装安卓应用&#xff1a;5步完成轻量级跨平台部署 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否想在Windows电脑上运行安卓应用&…...

ML:SARSA 的基本原理与实现

在强化学习中&#xff0c;智能体&#xff08;Agent&#xff09;并不是一次性从已有标签中学习答案&#xff0c;而是在环境&#xff08;Environment&#xff09;中不断尝试动作、观察结果、获得奖励&#xff0c;并根据经验逐步调整行为策略。在 Q 学习中&#xff0c;智能体可以通…...

用STM32+NRF24L01模拟蓝牙广播,手机能搜到设备了!附完整代码

用STM32NRF24L01模拟蓝牙低功耗广播的实战指南 当我在实验室里第一次看到手机蓝牙搜索列表中出现自己用NRF24L01模块模拟的设备名称时&#xff0c;那种成就感至今难忘。这个看似简单的实验背后&#xff0c;其实隐藏着无线通信协议栈的巧妙设计。本文将带你从零开始&#xff0c;…...