Главная
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).