利用HTML、CSS、JavaScript写一个可以跳转年月的万年历页面
时间: 2023-12-27 19:02:03 浏览: 138
好的,下面是一个简单的万年历页面的代码,可以根据用户的选择跳转到不同年月的日历。
HTML代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>万年历</title>
<style type="text/css">
.calendar {
margin: 0 auto;
width: 600px;
height: 600px;
border: 1px solid black;
font-size: 18px;
text-align: center;
}
.calendar table {
border-collapse: collapse;
margin: 0 auto;
width: 100%;
height: 100%;
table-layout: fixed;
}
.calendar th, .calendar td {
border: 1px solid black;
width: 14.28%;
height: 14.28%;
}
.calendar .today {
background-color: #ffcccc;
}
</style>
</head>
<body>
<div class="calendar">
<h1>万年历</h1>
<form>
<label for="year">年份:</label>
<input type="number" id="year" name="year" min="1900" max="2100" value="2021">
<label for="month">月份:</label>
<select id="month" name="month">
<option value="1">1月</option>
<option value="2">2月</option>
<option value="3">3月</option>
<option value="4">4月</option>
<option value="5">5月</option>
<option value="6">6月</option>
<option value="7">7月</option>
<option value="8">8月</option>
<option value="9">9月</option>
<option value="10">10月</option>
<option value="11">11月</option>
<option value="12">12月</option>
</select>
<input type="button" value="跳转" onclick="jump()">
</form>
<table>
<thead>
<tr>
<th>日</th>
<th>一</th>
<th>二</th>
<th>三</th>
<th>四</th>
<th>五</th>
<th>六</th>
</tr>
</thead>
<tbody id="calendar-body">
</tbody>
</table>
</div>
<script type="text/javascript">
function jump() {
var year = document.getElementById("year").value;
var month = document.getElementById("month").value;
if (year && month) {
var date = new Date(year, month - 1, 1);
drawCalendar(date);
}
}
function drawCalendar(date) {
var year = date.getFullYear();
var month = date.getMonth() + 1;
var firstDay = new Date(year, month - 1, 1);
var lastDay = new Date(year, month, 0);
var startDate = new Date(firstDay);
startDate.setDate(startDate.getDate() - firstDay.getDay());
var endDate = new Date(lastDay);
endDate.setDate(endDate.getDate() + (6 - lastDay.getDay()));
var calendarBody = document.getElementById("calendar-body");
calendarBody.innerHTML = "";
for (var d = startDate; d <= endDate; d.setDate(d.getDate() + 1)) {
var tr = document.createElement("tr");
for (var i = 0; i < 7; i++) {
var td = document.createElement("td");
if (d.getMonth() + 1 != month) {
td.classList.add("other-month");
}
if (d.getDate() == new Date().getDate() && d.getMonth() == new Date().getMonth() && d.getFullYear() == new Date().getFullYear()) {
td.classList.add("today");
}
td.innerText = d.getDate();
tr.appendChild(td);
}
calendarBody.appendChild(tr);
}
}
window.onload = function() {
var date = new Date();
drawCalendar(date);
}
</script>
</body>
</html>
```
解释一下上面的代码:
1. 使用 HTML、CSS 和 JavaScript 创建一个名为 `calendar` 的 `div` 元素,用于显示万年历。
2. 在 `form` 中添加 `input` 元素和 `select` 元素,用于让用户选择年份和月份,并添加一个 `onclick` 事件,当用户点击“跳转”按钮时,执行 `jump()` 函数。
3. 在 `table` 中创建一个表格,包括表头和表格主体,用于显示每个月的日历。
4. 在 JavaScript 中,定义 `jump()` 函数用于跳转到用户选择的年份和月份,并调用 `drawCalendar()` 函数来绘制日历。
5. 在 `drawCalendar()` 函数中,根据指定的年份和月份计算出该月的第一天和最后一天,以及需要显示的日期范围。然后,通过循环在表格中生成每天的单元格,并对当前日期、非本月日期和节假日等进行不同的样式处理。
这样,一个简单的万年历页面就完成了。用户可以在页面中选择年份和月份,并跳转到指定的日历。
阅读全文