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

CSS+Javascript+Html日历控件

最近,因需要用HTML+JAVASCRIPT+CSS实现了一个日历控件,效果如下:
请添加图片描述
单击上月、下月进行日历切换。当前日期在日历中变颜色标注显示。还是老老套路、老方法,分HML+CSS+JAVASCRIPT三部分代码。

一、html代码

<h1>学习计划</h1>	<div class="month">      <ul><li class="prev"><上月</li><li class="next">下月></li><li style="text-align:center"><span id="monthbox">10月</span><br><span style="font-size:18px" id="yearbox">2023年</span></li></ul></div><ul class="weekdays"><li>星期一</li><li>星期二</li><li>星期三</li><li>星期四</li><li>星期五</li><li>星期六</li><li>星期日</li></ul>	<ul class="days"></ul>	

这段代码主要包含三个部分,一是头部显示年月,上月、下月切换按钮;二是显示星期一到日;三是日期容器,存在日期。

二、CSS代码

* {box-sizing:border-box;}ul {list-style-type: none;}body {font-family: Verdana,sans-serif;}		.month {padding: 70px 25px;width: 100%;background: #1abc9c;}		.month ul {margin: 0;padding: 0;}		.month ul li {color: white;font-size: 20px;text-transform: uppercase;letter-spacing: 3px;}		.month .prev {float: left;padding-top: 10px;cursor: pointer;}		.month .next {float: right;padding-top: 10px;cursor: pointer;}		.weekdays {margin: 0;padding: 10px 0;background-color: #ddd;}		.weekdays li {display: inline-block;width: 13.6%;color: #666;text-align: center;}		.days {padding: 10px 0;background: #eee;margin: 0;}		.days li {list-style-type: none;display: inline-block;width: 13.6%;text-align: center;margin-bottom: 5px;font-size:12px;color: #777;}		.days li .active {padding: 5px;background: #1abc9c;color: white !important}		/* Add media queries for smaller screens */@media screen and (max-width:720px) {.weekdays li, .days li {width: 13.1%;}}		@media screen and (max-width: 420px) {.weekdays li, .days li {width: 12.5%;} .days li .active {padding: 2px;}}@media screen and (max-width: 290px) {.weekdays li, .days li {width: 12.2%;}}

这段代码主要定义了日历的样式,一个主要的方法简述如下:

  1. box-sizing:border-box;就是将border和padding数值包含在width和height之内,这样的好处就是修改border和padding数值盒子的大小不变。
  2. @media screen and (max-width:720px) 。表示当浏览器的可视区域小于720px时候,执行。

三、Javascript代码

<script type="text/javascript">var currentDate=new Date();function showDateList(){let year = currentDate.getFullYear();let month = currentDate.getMonth()+1;let date = currentDate.getDate();let firstWeekDay = new Date(year,month-1,1).getDay();let monthDays = new Date(year,month,0).getDate();let str="";let daylength = monthDays+firstWeekDay-1;let startDay = firstWeekDay-1if(firstWeekDay==0) {daylength =monthDays+6;startDay=6;}for (var i = 0; i <daylength ; i++) {if(i<startDay){str +="<li></li>"}else{let today = new Date();let todate =(i-startDay+1);console.log(date)if(year == today.getFullYear() && month == today.getMonth()+1 &&todate== today.getDate()){str +="<li><span class='active'>"+todate+"</span></li>";}else{str +="<li>"+todate+"</li>";}					}}document.querySelector("#monthbox").innerHTML=month+"月";document.querySelector("#yearbox").innerHTML=year+"年";document.querySelector(".days").innerHTML=str;}showDateList();document.querySelector(".next").onclick= function(){currentDate.setMonth(currentDate.getMonth() + 1);showDateList();}document.querySelector(".prev").onclick= function(){currentDate.setMonth(currentDate.getMonth() - 1);showDateList();}</script>	

此段代码实现了当月日历情况,单击上月、下月进行月份切换。
这样我们的日历就成型了,完整代码如下,请参考:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /><title></title><style>* {box-sizing:border-box;}ul {list-style-type: none;}body {font-family: Verdana,sans-serif;}.month {padding: 70px 25px;width: 100%;background: #1abc9c;}		.month ul {margin: 0;padding: 0;}		.month ul li {color: white;font-size: 20px;text-transform: uppercase;letter-spacing: 3px;}		.month .prev {float: left;padding-top: 10px;cursor: pointer;}		.month .next {float: right;padding-top: 10px;cursor: pointer;}		.weekdays {margin: 0;padding: 10px 0;background-color: #ddd;}		.weekdays li {display: inline-block;width: 13.6%;color: #666;text-align: center;}		.days {padding: 10px 0;background: #eee;margin: 0;}		.days li {list-style-type: none;display: inline-block;width: 13.6%;text-align: center;margin-bottom: 5px;font-size:12px;color: #777;}		.days li .active {padding: 5px;background: #1abc9c;color: white !important}		/* Add media queries for smaller screens */@media screen and (max-width:720px) {.weekdays li, .days li {width: 13.1%;}}		@media screen and (max-width: 420px) {.weekdays li, .days li {width: 12.5%;} .days li .active {padding: 2px;}}@media screen and (max-width: 290px) {.weekdays li, .days li {width: 12.2%;}}</style></head>
<body><h1>学习计划</h1>	<div class="month">      <ul><li class="prev"><上月</li><li class="next">下月></li><li style="text-align:center"><span id="monthbox">10月</span><br><span style="font-size:18px" id="yearbox">2023年</span></li></ul></div><ul class="weekdays"><li>星期一</li><li>星期二</li><li>星期三</li><li>星期四</li><li>星期五</li><li>星期六</li><li>星期日</li></ul>	<ul class="days"></ul>	<script type="text/javascript">var currentDate=new Date();function showDateList(){let year = currentDate.getFullYear();let month = currentDate.getMonth()+1;let date = currentDate.getDate();let firstWeekDay = new Date(year,month-1,1).getDay();let monthDays = new Date(year,month,0).getDate();let str="";let daylength = monthDays+firstWeekDay-1;let startDay = firstWeekDay-1if(firstWeekDay==0) {daylength =monthDays+6;startDay=6;}for (var i = 0; i <daylength ; i++) {if(i<startDay){str +="<li></li>"}else{let today = new Date();let todate =(i-startDay+1);console.log(date)if(year == today.getFullYear() && month == today.getMonth()+1 &&todate== today.getDate()){str +="<li><span class='active'>"+todate+"</span></li>";}else{str +="<li>"+todate+"</li>";}}}document.querySelector("#monthbox").innerHTML=month+"月";document.querySelector("#yearbox").innerHTML=year+"年";document.querySelector(".days").innerHTML=str;}showDateList();document.querySelector(".next").onclick= function(){currentDate.setMonth(currentDate.getMonth() + 1);showDateList();}document.querySelector(".prev").onclick= function(){currentDate.setMonth(currentDate.getMonth() - 1);showDateList();}</script>	
</body>
</html>

相关文章:

CSS+Javascript+Html日历控件

最近&#xff0c;因需要用HTMLJAVASCRIPTCSS实现了一个日历控件&#xff0c;效果如下&#xff1a; 单击上月、下月进行日历切换。当前日期在日历中变颜色标注显示。还是老老套路、老方法&#xff0c;分HMLCSSJAVASCRIPT三部分代码。 一、html代码 <h1>学习计划</h1…...

让企业的数据用起来,数据中台=数据治理?

加gzh“大数据食铁兽”&#xff0c;了解更多数据治理信息。 先说结论&#xff1a;数据中台是数据管理/治理的工具之一&#xff0c;数据治理是3分技术7分管理及运营。 数据中台的定义&#xff1a; 狭义的数据中台指在企业内部通过对数据半成品、算法、模型、工具等能力的积累&a…...

【人工智能Ⅰ】5-粒子群算法

【人工智能Ⅰ】5-粒子群算法 文章目录 【人工智能Ⅰ】5-粒子群算法5.1 粒子群算法PSO基本思想5.2 PSO介绍5.3 PSO求最优解5.4 算法流程5.5 PSO构成要素群体大小m权重因子最大速度Vm停止准则粒子空间的初始化领域的拓扑结构 5.6 PSO应用5.7 PSO改进动态调整惯性权重收缩因子法 5…...

软考高项-49个项目管理过程输入、输出和工具技术表

知识领域数量五大过程组启动规划执行监控收尾整体7制订项目章程制订项目管理计划指导与管理项目工作 管理项目知识 监控项目工作 实施整体变更控制 结束项目或阶段范围6规划范围管理 收集需求 定义范围 创建WBS 确认范围 控制范围 进度6规划进度管理 定义活动...

《C和指针》(7)函数

问题 具有空函数体的函数可以作为存根使用。你如何对这类函数进行修改&#xff0c;使其更加有用&#xff1f; 答&#xff1a;当存根函数被调用时&#xff0c;打印一条消息&#xff0c;显示它已被调用&#xff0c;或者也可以打印作为参数传递给它的值。 .如果在一个函数的声明中…...

vue3中的Props

Props声明 一个组件需要显示声明它所接受的props&#xff0c;这样vue才能知道外部传入的哪些是props&#xff0c;哪些是透传attribute 在使script setup的单文件中&#xff0c;props可以使用 defineProps()宏来声明&#xff1a; <script setup> const props definePro…...

ElasticSearch搜索技术深入与聚合查询实战

ES分词器详解 基本概念 分词器官方称之为文本分析器&#xff0c;顾名思义&#xff0c;是对文本进行分析处理的一种手段&#xff0c;基本处理逻辑为按照预先制定的分词规则&#xff0c;把原始文档分割成若干更小粒度的词项&#xff0c;粒度大小取决于分词器规则。 分词发生时…...

vue+element ui中的el-button自定义icon图标

实现 button的icon属性自定义一个图标名称&#xff0c;这个自定义的图标名称会默认添加到button下i标签的class上&#xff0c;我们只需要设置i标签的样式就可以了 ##3. 按钮上使用自定义的icon 完整代码 <div class"lookBtn"><el-button icon"el-icon-…...

PyQt5:构建目标检测算法GUI界面 (附python代码)

文章目录 1.界面2.代码3.Analyze 1.界面 目标检测算法一般就是检测个图片&#xff0c;然后显示图片结果。 最简单的情况&#xff0c;我们需要一个按钮读取图片&#xff0c;然后后有一个地方显示图片。 2.代码 import sys import numpy as np from PIL import Imagefrom PyQt…...

SV-10A-4G IP网络报警非可视终端 (4G版)

SV-10A-4G IP网络报警非可视终端 &#xff08;4G版&#xff09; https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.621e3d0dpv5knb&ftt&id745728046948 产品简介&#xff1a; 通过局域网/广域网网组网的网络报警系统&#xff0c;改变传统局域网组网…...

对xml文本元素赋值

public static void main(String[] args) {Map map ....;//数据Iterator it doc.getRootElement().elementIterator();//doc是xml模板//将元素ID与输入框的值放在map中while (it.hasNext()) {org.dom4j.Element nextRoot (org.dom4j.Element) it.next();Iterator nextIt ne…...

【k8s】资源管理命令-陈述式

一、资源管理介绍 1、资源管理概念 在kubernetes中&#xff0c;所有的内容都抽象为资源&#xff0c;用户需要通过操作资源来管理kubernetes。 //kubernetes的本质就是一个集群系统&#xff0c;用户可以在集群中部署各种服务&#xff0c;起始就是在kubernetes集群中运行一个个…...

无需频繁登录支付宝网站即可完成商家转账,实时到账,方便安全快捷

大家好&#xff0c;我是小悟 转账到支付宝账户是一种通过 API 完成单笔转账的功能&#xff0c;支付宝商家可以向其他支付宝账户进行单笔转账。 商家只需输入另一个正确的支付宝账号&#xff0c;即可将资金从本企业支付宝账户转账至另一个支付宝账户。 该产品适用行业较广&am…...

Vue 监听属性 watchEffect

watchEffect 函数&#xff1a;自动收集依赖源&#xff0c;不用指定监听哪个数据&#xff0c;在监听的回调中用到哪个数据&#xff0c;就监听哪个数据。 而 watch 函数&#xff1a;既要指定监听的数据&#xff0c;也要指定监听的回调。 watchEffect 函数&#xff1a;类似于 co…...

设计模式: 关于项目架构,技术选型,技术债务问题与解决方案

正确的选择是良好的开端 1 &#xff09;指标 系统稳健性系统健壮性 2 ) 衡量 在概念层次衡量架构质量在实际开发中衡量架构好坏 3 ) 架构分类 系统架构 从系统维度&#xff0c;负责整体系统的架构设计基础服务和各系统间协调&#xff0c;着眼全局比如关注负载&#xff0c…...

el-tabs 默认选中第一个

1. 实际开发中el-tabs 都会设置第一个为默认值 ,这样会好看一点, 而渲染的数据经常是通过后端返回的数据 , v-model 无法写死默认值 解决办法 , 通过计算机属性 ,在data 定义一个 selectedTab watch: {defaultTab(newVal) {this.selectedTab newVal; // 设置第一个标签页…...

R -- match,pmatch,charmatch

文章目录 matchpmatchcharmatch match ?matchDescription match returns a vector of the positions of (first) matches of its first argument in its second. 第一个向量中的元素在第二个向量中的位置&#xff0c;如果第二个向量中有多个仅返回第一个match 元素的位置&…...

数据结构——线性表①(顺序表)

一、线性表定义 线性表是一种数据结构&#xff0c;它是由n个具有相同数据类型的数据元素a1,a2,…,an组成的有限序列。 其中&#xff0c;除第一个元素a1外&#xff0c;每一个元素有且只有一个直接前驱元素&#xff0c;除了最后一个元素an外&#xff0c;每一个元素有且只有一个…...

MFC网络编程-Udp客户端

目录 1、UI的设计&#xff1a; 2、代码的实现&#xff1a; &#xff08;1&#xff09;、重写CSocket虚函数OnReceive&#xff0c;并且传入对话框的指针 &#xff08;2&#xff09;、初始化SOCKET &#xff08;3&#xff09;、绑定本地IP和端口 &#xff08;4&#xff09;、…...

密码学基础

密码学总览 信息安全面临的危险与应对这些威胁的密码技术&#xff1a; 关于上图中的威胁&#xff0c;这里在简单的说明&#xff1a; 窃听&#xff1a;指的是需要保密的消息被第三方获取。篡改&#xff1a;指的是消息的内容被第三方修改&#xff0c;达到欺骗的效果。伪装&…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...