打造精美响应式CSS日历:从基础到高级样式

🌟 前言

欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍

  • 🤖 洛可可白:个人主页

  • 🔥 个人专栏:✅前端技术 ✅后端技术

  • 🏠 个人博客:洛可可白博客

  • 🐱 代码获取:bestwishes0203

  • 📷 封面壁纸:洛可可白wallpaper

在这里插入图片描述

文章目录

  • 打造精美响应式CSS日历:从基础到高级样式
    • 1. 创建日历的基本结构
    • 2. 添加CSS样式
    • 3. 响应式设计
    • 4. 完善日历功能
    • 5. 全部代码
    • 🎉 结语
    • 🎉 往期精彩回顾

打造精美响应式CSS日历:从基础到高级样式

在这篇文章中,我们将学习如何使用HTML和CSS创建一个简洁而美观的日历样式。我们将从基础的日历结构开始,逐步添加样式,并使用CSS的媒体查询为不同屏幕尺寸进行适配。通过本教程,您将掌握如何制作一个响应式的日历,它不仅能够在桌面上展示,也能很好地适应移动设备。

效果预览:
在这里插入图片描述

1. 创建日历的基本结构

首先,我们需要创建日历的HTML结构。日历由三个主要部分组成:月份和年份的标题、星期的简称、以及日期列表。

<div class="month"><ul><li class="prev"></li><li class="next"></li><li style="text-align:center">August<br><span style="font-size:18px">2016</span></li></ul>
</div><ul class="weekdays"><li>Mo</li><li>Tu</li><li>We</li><li>Th</li><li>Fr</li><li>Sa</li><li>Su</li>
</ul><ul class="days"><!-- 日期列表 -->
</ul>

2. 添加CSS样式

接下来,我们将使用CSS为日历添加样式。我们将设置基本的样式,如字体、背景色、文本对齐等,并使用伪类和伪元素来添加箭头图标。

/* 基础样式 */
* {box-sizing: border-box;
}ul {list-style-type: none;margin: 0;padding: 0;
}body {font-family: Verdana, sans-serif;
}/* 月份和年份样式 */
.month {padding: 70px 25px;width: 100%;background: #1abc9c;
}.month ul li {color: white;font-size: 20px;text-transform: uppercase;letter-spacing: 3px;
}/* 星期样式 */
.weekdays {background-color: #ddd;
}.weekdays li {display: inline-block;width: 13.6%;color: #666;text-align: center;
}/* 日期样式 */
.days {background: #eee;
}.days li {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;
}

3. 响应式设计

为了使日历在不同设备上都能良好展示,我们将使用CSS的媒体查询来调整小屏幕设备上的布局。

@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%;}
}

4. 完善日历功能

document.addEventListener('DOMContentLoaded', function () {var days = document.querySelectorAll('.days li span');days.forEach(function (day) {day.addEventListener('click', function () {console.log('Date clicked');// 移除其他日期的激活状态days.forEach(function (el) {el.classList.remove('active');});// 为被点击的日期添加激活状态this.classList.add('active');});});});// 1. contextmenu 可以禁用右键菜单document.addEventListener('contextmenu', function (e) {e.preventDefault();})// 2. 禁止选中文字 selectstartdocument.addEventListener('selectstart', function (e) {e.preventDefault();})

为了使日历更加实用,我们可以添加一些交互功能,例如点击月份和年份切换视图,以及点击日期弹出事件详情。这将需要使用JavaScript来实现,但在本教程中,我们专注于使用CSS创建样式。

5. 全部代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS 日历样式</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;}.month .next {float: right;padding-top: 10px;}.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 style="text-align: center;">CSS 日历</h1><div class="month"><ul><li class="prev"></li><li class="next"></li><li style="text-align:center">March<br><span style="font-size:18px">2024</span></li></ul></div><ul class="weekdays"><li>Mo</li><li>Tu</li><li>We</li><li>Th</li><li>Fr</li><li>Sa</li><li>Su</li></ul><ul class="days"><li><span>1</span></li><li><span>2</span></li><li><span>3</span></li><li><span>4</span></li><li><span>5</span></li><li><span>6</span></li><li><span>7</span></li><li><span>8</span></li><li><span>9</span></li><li><span class="active">10</span></li><li><span>11</span></li><li><span>12</span></li><li><span>13</span></li><li><span>14</span></li><li><span>15</span></li><li><span>16</span></li><li><span>17</span></li><li><span>18</span></li><li><span>19</span></li><li><span>20</span></li><li><span>21</span></li><li><span>22</span></li><li><span>23</span></li><li><span>24</span></li><li><span>25</span></li><li><span>26</span></li><li><span>27</span></li><li><span>28</span></li><li><span>29</span></li><li><span>30</span></li><li><span>31</span></li></ul><script>document.addEventListener('DOMContentLoaded', function () {var days = document.querySelectorAll('.days li span');days.forEach(function (day) {day.addEventListener('click', function () {console.log('Date clicked');// 只有当日期未被激活时才进行操作// 移除其他日期的激活状态days.forEach(function (el) {el.classList.remove('active');});// 为被点击的日期添加激活状态this.classList.add('active');});});});// 1. contextmenu 可以禁用右键菜单document.addEventListener('contextmenu', function (e) {e.preventDefault();})// 2. 禁止选中文字 selectstartdocument.addEventListener('selectstart', function (e) {e.preventDefault();})</script>
</body></html>

🎉 结语

通过本教程,您已经学会了如何使用HTML和CSS、JavaScript创建一个基本的日历样式,并使其响应式地适应不同屏幕尺寸。您可以在此基础上添加更多的功能和样式,以满足您的具体需求。记得在实际项目中测试日历在不同浏览器和设备上的兼容性,确保所有用户都能获得良好的体验。
如果对你有帮助,点赞、收藏、关注是我更新的动力!👋🌟🚀

🎉 往期精彩回顾

Ubuntu系统下C语言开发环境搭建与使用教程

  • 748阅读 · 14点赞 · 6收藏

Vue 3响应式系统详解:ref、toRefs、reactive及更多

  • 524阅读 · 16点赞 · 12收藏

爆肝两千字!掌握CSS选择器与响应式设计:从基础到高级应用

  • 842阅读 · 27点赞 · 28收藏

图文并茂!在Oracle VM VirtualBox上安装Ubuntu虚拟机的详细步骤指南

  • 1059阅读 · 36点赞 · 29收藏

在Vue中使用wangeditor创建富文本编辑器的完整指南

  • 1106阅读 · 20点赞 · 13收藏

Vue项目中使用ECharts构建交互式中国地图的详细指南

  • 759阅读 · 22点赞 · 10收藏

米哈游一面前端开发岗面试题,你会做几道?

  • 1236阅读 · 22点赞 · 24收藏

程序员必备开发工具、程序员必备集成开发环境(IDE)

  • 912阅读 · 36点赞 · 12收藏

Linux常用操作命令和服务器硬件基础知识

  • 887阅读 · 30点赞 · 10收藏

C语言中大小写字母如何转化

  • 824阅读 · 31点赞 · 29收藏

主流开发语言和开发环境、程序员如何选择职业赛道?

  • 1022阅读 · 34点赞 · 16收藏

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

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

相关文章

ARM开发板实现24位BMP图片缩放

ARM开发板实现24位BMP图片缩放 一、linux平台bmp图片缩放 最近想在ARM开发板实现BMP图片的缩放&#xff0c;查看了一些资料&#xff0c;大家部分理论知识可参考&#xff1a; akynazh博主 &#xff0c;这位博主程序以window平台为主进行显示&#xff0c;发现在linux平台下编译…

堆排序(数据结构)

本期讲解堆排序的实现 —————————————————————— 1. 堆排序 堆排序即利用堆的思想来进行排序&#xff0c;总共分为两个步骤&#xff1a; 1. 建堆 • 升序&#xff1a;建大堆 • 降序&#xff1a;建小堆 2. 利用堆删除思想来进行排序. 建堆和堆删…

12|检索增强生成:通过RAG助力鲜花运营

什么是 RAG&#xff1f;其全称为 Retrieval-Augmented Generation&#xff0c;即检索增强生成&#xff0c;它结合了检 索和生成的能力&#xff0c;为文本序列生成任务引入外部知识。RAG 将传统的语言生成模型与大规模 的外部知识库相结合&#xff0c;使模型在生成响应或文本时可…

LeetCode 每日一题 Day 102-108

2864. 最大二进制奇数 给你一个 二进制 字符串 s &#xff0c;其中至少包含一个 ‘1’ 。 你必须按某种方式 重新排列 字符串中的位&#xff0c;使得到的二进制数字是可以由该组合生成的 最大二进制奇数 。 以字符串形式&#xff0c;表示并返回可以由给定组合生成的最大二进…

3.18号arm

4 跳转指令 实现汇编程序跳转的两种方式 直接修改PC的值 mov pc , #0x04 通过跳转指令跳转 b 标签 程序跳转到指定的标签下执行&#xff0c;此时LR寄存器不保存返回地址 bl 标签 程序跳转到指定的标签下执行&#xff0c;此时LR寄存器保存返回地址 5 内存读写指令&#xff0…

Vue+SpringBoot打造用户画像活动推荐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 兴趣标签模块2.3 活动档案模块2.4 活动报名模块2.5 活动留言模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 数据流程设计3.4 E-R图设计 四、系统展示五、核心代码5.1 查询兴趣标签5.2 查询活动推荐…

英伟达深夜放王炸|字节跳动游戏之路波折不断|文旅短剧风口将至|25岁QQ魅力不减,5亿人在用|云计算市场疯长152%|电商巨头齐瞄向富足悠闲银发族

新闻一分钟速览 文旅短剧风口将至&#xff0c;一地狂拍十部&#xff0c;影视界看法分歧&#xff0c;悬念丛生&#xff01;字节跳动游戏之路波折不断&#xff0c;能否逆风翻盘引关注。折叠屏手机痛症治愈&#xff0c;实力席卷高端市场&#xff0c;势头强劲&#xff01;雷军豪言…

学习笔记Day12:初探LInux 2

Linux初探 同一个目录中不允许出现文件及文件夹重名 查看文件 cat &#xff08;Concatenate&#xff09;查看文本文件内容&#xff0c;输出到屏幕&#xff08;标准输出流&#xff09; 常用参数 -A打印所有字符&#xff0c;包括特殊字符&#xff08;换行符、制表符等&#xff…

File的学习1

File对象就表示一个路径&#xff0c;可以是文件的路径&#xff0c;也可以是文件夹的路径 这个路径可以是存在的&#xff0c;也可以是不存在的。 package MyFile;import java.io.File;public class FileDemo01 {public static void main(String[] args) {//1.根据文件路径创建…

如何定期清理数据库中的无效数据?

企业的数据库在运行相当长一段时间后&#xff0c;都会出现无效数据的堆积&#xff0c;这些数据包含了过时、重复、错误、缺失&#xff08;空字段&#xff09;的数据&#xff0c;长期占据着宝贵的数据库空间。而在上云热潮的推动下&#xff0c;绝大多数企业已经将他们的业务数据…

fastjson反序列化攻略

漏洞原理 Json.parseObject(json, User.class)方法中&#xff0c;通过指定type的值实现定位某类&#xff0c;会执行User类的构造方法和属性中的get&#xff0c;set方法 判断是否是fastjson/&#xff08;jackson&#xff09; 1.2.24-1.2.83都会有dnslog的payload {"zer…

Java基础-IO流

文章目录 1.文件1.基本介绍2.常用的文件操作1.创建文件的相关构造器和方法代码实例结果 2.获取文件相关信息代码实例结果 3.目录的删除和文件删除代码实例 2.IO流原理及分类IO流原理IO流分类 3.FileInputStream1.类图2.代码实例3.结果 4.FileOutputStream1.类图2.案例代码实例 …

【Flink】Flink 中的时间和窗口之窗口其他API的使用

1. 窗口的其他API简介 对于一个窗口算子而言&#xff0c;窗口分配器和窗口函数是必不可少的。除此之外&#xff0c;Flink 还提供了其他一些可选的 API&#xff0c;可以更加灵活地控制窗口行为。 1.1 触发器&#xff08;Trigger&#xff09; 触发器主要是用来控制窗口什么时候…

【大模型系列】统一图文理解与生成(BLIP/BLIPv2/InstructBLIP)

文章目录 1 BLIP(2022, Salesforce Research)1.1 简介1.2 数据角度1.3 模型角度1.4 BLIP预训练的目标 2 BLIP2(ICML2023, Salesforce)2.1 简介2.2 模型架构2.3 训练细节 3 InstructBLIP(2023, Salesforce)3.1 指令微调技术(Instruction-tuning)3.2 数据集准备3.3 Instruction-a…

docker入门(二)—— docker三大概念(镜像、容器、仓库)

docker 的三大必要概念 docker 的三大必要概念——镜像、容器、仓库 docker 架构图 镜像&#xff08;image&#xff09;&#xff1a;模版。&#xff08;web项目&#xff1a;1、环境 2、配置变量 3、上线项目 4、配置项目需要的静态文件&#xff09;打包成镜像 docker 镜像&a…

代码随想录阅读笔记-哈希表【两个数组的交集】

题目 给定两个数组&#xff0c;编写一个函数来计算它们的交集。 说明&#xff1a; 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 提示&#xff1a; 1 < nums1.length, nums2.length < 10000 < nums1[i], nums2[i] < 1000 思路 交集&…

【源码阅读】EVMⅢ

参考[link](https://blog.csdn.net/weixin_43563956/article/details/127725385 大致流程如下&#xff1a; 编写合约 > 生成abi > 解析abi得出指令集 > 指令通过opcode来映射成操作码集 > 生成一个operation 以太坊虚拟机的工作流程&#xff1a; 由solidity语言编…

鸿蒙实战开发:【FaultLoggerd组件】讲解

简介 Faultloggerd部件是OpenHarmony中C/C运行时崩溃临时日志的生成及管理模块。面向基于 Rust 开发的部件&#xff0c;Faultloggerd 提供了Rust Panic故障日志生成能力。系统开发者可以在预设的路径下找到故障日志&#xff0c;定位相关问题。 架构 Native InnerKits 接口 Si…

Linux操作系统——多线程

1.线程特性 1.1线程优点 创建一个新线程的代价要比创建一个新进程小得多与进程之间的切换相比&#xff0c;线程之间的切换需要操作系统做的工作要少很多线程占用的资源要比进程少很多能充分利用多处理器的可并行数量在等待慢速I/O操作结束的同时&#xff0c;程序可执行其他的计…

《1w实盘and大盘基金预测 day7》

昨日预测有点差劲&#xff0c;最低点也相差五个点。 打分C 公众号&#xff1a;JavaHelmet 昨天预测&#xff1a; 3052-3062-3076-3115 3067是趋势线&#xff0c;有回踩需求 5-30-60分钟级别顶钝 大盘冲到标红的点位3115或者3100就需注意。不要随意追高&#xff08;最高309…