自定义封装日历组件
自定义日历
工作需要,但现有框架封装的日历无法满足需求,又找不到更好的插件,所以准备自己封装一个。
效果图和说明
一个很简易版的demo日历,本文只提供最基本的功能代码,便于阅读二开。
新建calendar.vue文件
<template>
<div class="calendar"><!-- 年月 --><div class="head"><div><span @click="setYear(false)"><<</span><span style="margin-left: 17px;" @click="setMonth(false)">< </span></div><div> {{date.year}} 年 {{date.month}} 月</div><div><span style="margin-right: 17px;" @click="setMonth(true)">> </span><span @click="setYear(true)">>></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>
最后保存运行即可。
相关文章:

自定义封装日历组件
自定义日历 工作需要,但现有框架封装的日历无法满足需求,又找不到更好的插件,所以准备自己封装一个。 效果图和说明 一个很简易版的demo日历,本文只提供最基本的功能代码,便于阅读二开。 新建calendar.vue文件 <…...
【大模型】【面试】独家总结表格
问题解答你能解释一下Transformer架构及其在大型语言模型中的作用吗?Transformer架构是一种深度神经网络架构,于2017年由Vaswani等人在他们的论文“Attention is All You Need”中首次提出。自那以后,它已成为大型语言模型(如BERT和GPT)最常用的架构。 Transformer架构使用…...

C# 6.定时器 timer
使用控件: 开启定时器:timer1.Start(); 关闭定时器:timer1.Stop(); 定时间时间间隔:Interval timer1.Interval 1000; Interva等于1000是每一秒刷新一次 定时器默认时间间隔是100ms 代码创建定时器 ①创建 Timer t1 new Timer(); …...
有了 createSlice,还有必要使用 createReducer 吗?什么情况需要 createReducer 呢?
通常情况下,使用 createSlice 已经足够满足大多数需求,而不需要直接使用 createReducer。但是,在某些特定场景下,createReducer 仍然有其用处: 更细粒度的控制: 当你需要对 reducer 的行为进行更精细的控制…...

怎么搭建AI带货直播间生成虚拟主播?
随着电商直播带货的热潮不断升温,虚拟主播逐渐崭露头角,成为电商直播领域的新宠,相较于真人主播,虚拟主播具备无档期风险、人设稳定可控、24小时不间断直播等显著优势。 本文将深入探讨如何搭建一个AI带货直播间,并详…...
设计模式的原则
设计模式的原则通常包括以下几种核心原则: 单一职责原则 (SRP):一个类应该只有一个单一的职责,即该类应该只有一个引起它变化的原因。这样可以减少类之间的耦合,使得系统更加易于维护和扩展。 开放/封闭原则 (OCP):软…...
RocketMQ与RabbitMQ的区别:技术选型指南
在现代分布式系统和微服务架构中,消息队列(Message Queue,简称MQ)扮演着至关重要的角色。消息队列用于实现系统间的异步通信、解耦、削峰填谷等功能。目前常见的MQ实现包括ActiveMQ、RabbitMQ、RocketMQ和Kafka。本文将重点对比Ro…...
小白也能懂:SQL注入攻击基础与防护指南
SQL注入是一种针对数据库的攻击方式,攻击者通过在Web表单、URL参数或其他用户输入的地方插入恶意SQL代码,以此绕过应用程序的验证机制,直接与后台数据库交互。这种攻击可以导致攻击者无授权地查看、修改或删除数据库中的数据,甚至…...

【Hot100】LeetCode—76. 最小覆盖子串
题目 原题链接:76. 最小覆盖子串 1- 思路 利用两个哈希表解决分为 :① 初始化哈希表、②遍历 s,处理当前元素,判断当前字符是否有效、③收缩窗口、④更新最小覆盖子串 2- 实现 ⭐76. 最小覆盖子串——题解思路 class Solution …...
删除排序链表中的重复元素 II(LeetCode)
题目 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 解题 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 三、更新网站配置四. 更新网站链接五. 检查并测试六. 自动续期(针对 Lets Encrypt) HTTP转HTTPS 将网站从 HTTP 转换为 HTTPS 能够加密数据传输,还能提高搜索引擎排…...

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

Python | Leetcode Python题解之第312题戳气球
题目: 题解: 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数据库的正确打开方式
为了安全,mysql数据库默认只能本机登录,但是在有些时候,我们会有远程登录mysql数据库的需求,这时候应该怎么办呢? 远程访问mysql数据,需要两个条件: 首先需要mysql服务器将服务绑定到0.0.0.0…...
网络6 -- udp_socket 实现 echo服务器
目录 1.server 服务端 1.1.完整代码展示: 1.2.代码解析: 1.2.1 给服务端创建套接字 1.2.2 绑定套接字 1.2.3 服务端接受数据并返回 2.客户端: 2.1 完整代码展示: 2.2 代码解析 2.2.1 客户端使用手则: 2.2.2 …...

ASUS/华硕幻15 2020 冰刃4 GX502L GU502L系列 原厂win10系统 工厂文件 带F12 ASUS Recovery恢复
华硕工厂文件恢复系统 ,安装结束后带隐藏分区,一键恢复,以及机器所有驱动软件。 系统版本:windows10 原厂系统下载网址:http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意:仅支持以上型号专用…...

simulink绘制bode图
🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…...
知识工程视角下的软件研发
知识工程 在我们的工作中存在两类知识:显式知识(explicit knowledge)、不可言说的知识(tacit knowledge)。 所谓显式知识就是能够直接表达且在人群中分享的知识。比如,地球的周长、水的密度、三角形面积公…...

深度学习------权重衰退
目录 使用均方范数作为硬性限制使用均方范数作为柔性限制演示最优解的影响参数更新法则总结高纬线性回归多项式的权重衰退从零开始实现初始化模型参数定义L2范数惩罚定义训练代码实现忽略正则化直接训练使用权重衰减从零开始代码实现 多项式的权重衰退的简洁实现简洁函数代码简…...
【算法】退火算法 Simulated Annealing
退火算法(Simulated Annealing, SA)是一种基于热力学模拟的优化算法,用于求解全局优化问题。它通过模拟物理退火过程来寻找全局最优解。以下是退火算法的基本原理和步骤: 一、基本原理 退火算法的灵感来源于金属在高温下缓慢冷却…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...

嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...

C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...