通常,日历中每个月份的日期显示首尾会用上个月和下个月的日期来填充, 当前日期是2023年8月8日,8月1日前面是7月份的日期,8月31日后面是9月份的日期。通过绑定class 属性和style属性这两种方式来区分不是当前月份的日期,并标注出当天的日期。实现的日历效果完整代码
时间: 2024-09-25 11:05:58 浏览: 65
在JavaScript中,特别是使用HTML、CSS和可能的轻量级库如jQuery或更现代的框架React或Vue.js,你可以创建这样的日历效果。下面是一个基本的示例,展示了如何使用HTML和CSS来构建这个功能:
```html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Month Calendar</title>
<style>
.calendar {
display: grid;
grid-template-columns: repeat(7, 1fr);
grid-gap: 5px;
}
.day-cell {
border: 1px solid #ccc;
padding: 5px;
text-align: center;
cursor: pointer;
}
.current-month {
background-color: #f2f2f2;
}
.previous-month,
.next-month {
color: gray;
pointer-events: none;
}
.today {
font-weight: bold;
background-color: lightblue;
}
</style>
</head>
<body>
<div class="calendar" id="calendar"></div>
<script>
const today = new Date();
const daysInMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0).getDate();
function buildCalendar(month) {
let date = new Date(today.getFullYear(), month, 1);
const calendarContainer = document.getElementById('calendar');
calendarContainer.innerHTML = '';
for (let i = 0; i < 6; i++) { // 一周6天
let row = document.createElement('div');
row.className = 'calendar-row';
for (let j = 0; j < 7; j++) {
let cell = document.createElement('div');
cell.textContent = date.getDate();
cell.className = `day-cell ${date.getMonth() === month ? 'current-month' : 'previous-month next-month'}`;
if (date.getDate() === today.getDate() && date.getMonth() === today.getMonth()) {
cell.classList.add('today');
}
date.setDate(date.getDate() + 1); // Move to next day
row.appendChild(cell);
}
calendarContainer.appendChild(row);
}
}
buildCalendar(today.getMonth()); // Initialize with current month
</script>
</body>
</html>
```
这个代码首先设置了一个基础的日历结构,然后动态生成每一天的日期,根据给定的月份和当前日期添加相应的样式。`buildCalendar`函数用于更新日历内容。
阅读全文