Главная
JavaScript
Календарь-1 для сайта
Календарь-1 для сайта на JavaScript
Простой календарь для сайта на CSS и JavaScript.
Представленный календарь предназначен для просмотра ближайших дней плюс-минус месяц.
Календарь можно листать до нужного года как вперед, так и назад.
1
| ‹ | › | |||||
| Пн | Вт | Ср | Чт | Пт | Сб | Вс |
Ниже приведен готовый код календаря, который можно скопировать и вставить в свой документ на HTML.
Весь код разбит на 3 части, поэтому его можно разместить на сайте тремя вариантами:
- Разместить все три части на одной странице.
- Разместить часть 1 (стиль календаря) в отдельном файле.css.
- Разместить часть 3 (скрипт календаря) в отдельном файле.js и подключить к странице сайта.
1. Стиль календаря
<style>
.look-calendar {
width:220px;
border:1px solid #c0c0c0;
padding:6px;
margin: 0 auto;
}
#calendar {
width: 100%;
line-height: 1.2em;
font-size: 15px;
text-align: center;
border-spacing:0px;
}
#calendar tr.dn td {
font-size: 15px;
}
#calendar thead tr:last-child {
font-size: small;
color: #555555;
}
#calendar thead tr:nth-child(1) td:nth-child(2) {
color: #323232;
}
#calendar thead tr:nth-child(1) td:nth-child(1):hover,
#calendar thead tr:nth-child(1) td:nth-child(3):hover {
cursor: pointer;
}
#calendar tbody td {
color: #2c567a;
}
#calendar tbody td:nth-child(n+6),
#calendar .holiday {
color: #e78c5c;
}
#calendar tbody td.today {
background: #dc0000;
color: #fff;
}
</style>
2. Код календаря на страние сайта.html
<div class="look-calendar"> <table id="calendar"> <thead> <tr> <td><b>‹</b> <td colspan="5"> <td><b>›</b> <tr class="dn"><td>Пн<td>Вт<td>Ср<td>Чт<td>Пт<td>Сб<td>Вс </thead> <tbody></tbody> </table> </div>
3. Скрипт календаря
<script>
function calendar(id, year, month) {
var Dlast = new Date(year, month + 1, 0).getDate(),
D = new Date(year, month, Dlast),
DNlast = new Date(D.getFullYear(), D.getMonth(), Dlast).getDay(),
DNfirst = new Date(D.getFullYear(), D.getMonth(), 1).getDay(),
calendar = '<tr>',
month = ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"];
if (DNfirst != 0) {
for (var i = 1; i < DNfirst; i++) calendar += '<td>';
} else {
for (var i = 0; i < 6; i++) calendar += '<td>';
}
for (var i = 1; i <= Dlast; i++) {
if (i == new Date().getDate() && D.getFullYear() == new Date().getFullYear() && D.getMonth() == new Date().getMonth()) {
calendar += '<td class="today">' + i;
} else {
calendar += '<td>' + i;
}
if (new Date(D.getFullYear(), D.getMonth(), i).getDay() == 0) {
calendar += '<tr>';
}
}
for (var i = DNlast; i < 7; i++) calendar += '<td> ';
document.querySelector('#' + id + ' tbody').innerHTML = calendar;
document.querySelector('#' + id + ' thead td:nth-child(2)').innerHTML = month[D.getMonth()] + ' ' + D.getFullYear();
document.querySelector('#' + id + ' thead td:nth-child(2)').dataset.month = D.getMonth();
document.querySelector('#' + id + ' thead td:nth-child(2)').dataset.year = D.getFullYear();
if (document.querySelectorAll('#' + id + ' tbody tr').length < 6) {
// чтобы при перелистывании месяцев не "подпрыгивала" вся страница, добавляется ряд пустых клеток. Итог: всегда 6 строк для цифр
document.querySelector('#' + id + ' tbody').innerHTML += '<tr><td> <td> <td> <td> <td> <td> <td> ';
}
}
calendar("calendar", new Date().getFullYear(), new Date().getMonth());
// переключатель минус месяц
document.querySelector('#calendar thead tr:nth-child(1) td:nth-child(1)').onclick = function() {
calendar("calendar", document.querySelector('#calendar thead td:nth-child(2)').dataset.year, parseFloat(document.querySelector('#calendar thead td:nth-child(2)').dataset.month) - 1);
}
// переключатель плюс месяц
document.querySelector('#calendar thead tr:nth-child(1) td:nth-child(3)').onclick = function() {
calendar("calendar", document.querySelector('#calendar thead td:nth-child(2)').dataset.year, parseFloat(document.querySelector('#calendar thead td:nth-child(2)').dataset.month) + 1);
}
<script>
Для этого календаря Примеры оформления (меняем только CSS).