JavaScript 实现简易日历组件
作者:页面旅途时间:2026-10-24 11:17:36浏览:440
本文介绍如何利用原生 JavaScript 和 CSS 实现一个简易的日历显示组件。通过操作 Date 对象获取当前年月日,结合 DOM 操作动态生成日期列表,并实现上一年、下一年的月份切换功能。代码包含完整的 HTML 结构、CSS 样式以及 JS 逻辑,适合前端初学者参考学习。
日历组件概述
本文分享了一段使用 JavaScript 实现简易日历效果的完整代码示例,供读者参考学习。

CSS 样式与 HTML 结构
## css模块
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.date{
width: 300px;
height: 220px;
border: 1px solid #000;
margin: 100px auto;
}
.title{
width: 200px;
display: flex;
font-size: 12px;
margin: auto;
text-align: center;
justify-content: space-around;
align-items: center;
}
.year{
margin: 0 40px;
display: flex;
flex-direction: column;
}
#week{
border-top: 1px solid #000;
border-bottom: 1px solid #000;
margin: auto;
list-style-type: none;
display: flex;
}
#week li{
display: inline-block;
text-align: center;
flex:1;
}
#ul{
list-style-type: none;
margin-top: 5px;
}
#ul li {
display: inline-block;
width: 40px;
height: 21px;
text-align: center;
border: 1px solid #fff;
}
.current{
color:red;
}
#ul li:hover{
border: 1px solid red;
}
#prev,#next{
cursor: pointer;
}
</style>
## html
<div class="date">
<div class="title">
<span id="prev"><上一月</span>
<div class="year">
<span id="year">2021</span>
<span id="month">5月</span>
</div>
<span id="next">下一月></span>
</div>
<!-- 用ul做日历 -->
<ul id="week">
<li>日</li>
<li>一</li>
<li>二</li>
<li>三</li>
<li>四</li>
<li>五</li>
<li>六</li>
</ul>
<ul id="ul">
</ul>
</div>
JavaScript 核心逻辑
## js代码
<script type="text/javascript">
// date对象,方便切换月份,所以设置为全局对向
let date = new Date();
// 点击切换月份的事件
document.getElementById('prev').addEventListener('click',function(){
date.setMonth(date.getMonth()-1);
add();
})
document.getElementById('next').addEventListener('click',function(){
date.setMonth(date.getMonth()+1);
add();
})
add();
//制作日历的函数
function add(){
// 当前年
let cYear = date.getFullYear();
// 当前月
let cMonth = date.getMonth()+1;
// 获取到当前日期
let cDay = date.getDate();
// 写入年月
document.getElementById('year').innerHTML = cYear;
document.getElementById('month').innerHTML = cMonth+'月';
let days = new Date(cYear,cMonth,-1);
// 当前月份的天数
let n = days.getDate()+1;
// 每个月的第一天是星期几
let week = new Date(cYear,cMonth-1,1).getDay();
let html = '';
// 写入dom
for(let i=0;i<week;i++){
html+=`<li></li>`
}
for(let i=1;i<=n;i++){
if(i==cDay){
html+=`<li class="current">${i}</li>`
}else{
html+=`<li>${i}</li>`
}
}
// 一次性插入
document.getElementById('ul').innerHTML = html
}
</script>
以上内容即为该日历功能的全部实现细节,希望能为读者的编程学习提供有益的帮助,同时也欢迎大家继续支持本站获取更多技术资源。
作者最新文章
JS监听滚动事件:回到顶部按钮的显示与隐藏逻辑
2026-11-05 16:19:37
JavaScript怎么读写LocalStorage与SessionStorage
2026-11-05 15:40:11
anime.js 与 GSAP 对比:轻量级项目该怎么选择动画库
2026-11-05 11:24:55
flv.js 与 hls.js 在直播场景下的选型对比
2026-11-05 08:18:52
JavaScript能做什么?前端开发中的作用与应用场景解析
2026-11-04 23:17:54
