日历视图(Calendar View)在前端开发中是一种常见的UI组件,用于展示日期和时间信息。它允许用户直观地查看和选择日期,广泛应用于各种应用场景,如日程管理、事件安排、数据统计等。
日历视图通常包括以下几个部分:
以下是一个简单的交互式日历视图的JavaScript实现示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Calendar View</title>
<style>
.calendar {
width: 300px;
border: 1px solid #ccc;
padding: 10px;
}
.header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}
.days {
display: grid;
grid-template-columns: repeat(7, 1fr);
gap: 5px;
}
.day {
padding: 5px;
text-align: center;
cursor: pointer;
}
.selected {
background-color: #007bff;
color: white;
}
</style>
</head>
<body>
<div class="calendar" id="calendar"></div>
<script>
function generateCalendar(year, month) {
const calendarDiv = document.getElementById('calendar');
const daysInMonth = new Date(year, month + 1, 0).getDate();
const firstDay = new Date(year, month, 1).getDay();
let calendarHTML = `
<div class="header">
<button onclick="prevMonth()">Prev</button>
<span>${year}年${month + 1}月</span>
<button onclick="nextMonth()">Next</button>
</div>
<div class="days">
${'日月火水木金土'.split('').map(day => `<div class="day">${day}</div>`).join('')}
</div>
`;
let dayCount = 1;
for (let i = 0; i < 6; i++) {
calendarHTML += '<div class="days">';
for (let j = 0; j < 7; j++) {
if (i === 0 && j < firstDay || dayCount > daysInMonth) break;
calendarHTML += `
<div class="day ${dayCount === currentDate.getDate() && month === currentDate.getMonth() && year === currentDate.getFullYear() ? 'selected' : ''}"
onclick="selectDate(${year}, ${month}, ${dayCount})">${dayCount}</div>
`;
dayCount++;
}
calendarHTML += '</div>';
if (dayCount > daysInMonth) break;
}
calendarDiv.innerHTML = calendarHTML;
}
let currentDate = new Date();
generateCalendar(currentDate.getFullYear(), currentDate.getMonth());
function prevMonth() {
currentDate.setMonth(currentDate.getMonth() - 1);
generateCalendar(currentDate.getFullYear(), currentDate.getMonth());
}
function nextMonth() {
currentDate.setMonth(currentDate.getMonth() + 1);
generateCalendar(currentDate.getFullYear(), currentDate.getMonth());
}
function selectDate(year, month, day) {
currentDate = new Date(year, month, day);
generateCalendar(year, month);
}
</script>
</body>
</html>
Intl.DateTimeFormat
)来格式化日期。通过以上内容,你应该对日历视图有了全面的了解,并能够在实际项目中应用和扩展。
领取专属 10元无门槛券
手把手带您无忧上云