Главная
JavaScript
Календарь-2 для сайта
Календарь-2 для сайта на JavaScript
Еще одиин простой календарь для сайта на CSS и JavaScript.
Этот Пример 2 отличается от календаря Пример 1 тем, что в нем прорисованы ячейки таблицы.
Цвет ячеек можно менять, под цвета своего сайта.
2
Вид календаря на странеце сайта
Ниже приведен готовый код календаря, который можно скопировать и вставить в свой документ на HTML.
Весь код разбит на 3 части, поэтому его можно разместить на сайте тремя вариантами:
- Разместить все три части на одной странице.
- Разместить часть 1 (стиль календаря) в отдельном файле.css.
- Разместить часть 3 (скрипт календаря) в отдельном файле.js и подключить к странице сайта.
1. Стиль календаря
<style>
/* Таблица календаря */
.calendar {
border: 1px solid #909090;
border-collapse: collapse;
font-family: Arial;
font-size: 11px;
}
/* Заголовок */
.calendar th {
text-align: center;
width: 26px;
height: 20px;
background: #e2f2fc;
color: #000000;
border: 1px solid #909090;
}
/* Заголовок праздника */
.calendar th.holiday {
color: #FF0000;
}
/* Ячейка дня */
.calendar td {
text-align: right;
width: 20px;
height: 20px;
padding-right: 4px;
border: 1px solid #909090;
text-align: right;
cursor: pointer; font-size: 12px;
}
/* Затемненный день */
.calendar td.grayed {
background: #F0F0F0;
cursor: auto;
}
/* Выбранный день */
.calendar td.selected {
background: #038fcf;
color: #FFFFFF;
box-shadow: 1px 1px rgba(255, 255, 255, 0.5) inset;
}
/* Праздничный день */
.calendar td.holiday {
color: #FF0000;
}
/* Кнопки навигации */
.calendar td.navigation {
text-align: center;
border: 0px none;
font-size: 16px;
background: #ecebeb;
cursor: pointer;
white-space: nowrap;
}
</style>
2. Код календаря на страние сайта.html
<div align=center> <div style="height:170px;"><div id="calendar_table"></div></div> Вид календаря </div>
3. Скрипт календаря
<script>
calendar = {};
// Названия месяцев
calendar.monthName=[
'Январь', 'Февраль', 'Март', 'Апрель',
'Май', 'Июнь', 'Июль', 'Август',
'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'
];
// Названия дней недели
calendar.dayName=[
'ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ', 'ВС'
];
// Выбранная дата
calendar.selectedDate = {
'Day' : null,
'Month' : null,
'Year' : null
};
// ID элемента для размещения календарика
calendar.element_id=null;
// Выбор даты
calendar.selectDate = function(day,month,year) {
calendar.selectedDate={
'Day' : day,
'Month' : month,
'Year' : year
};
calendar.drawCalendar(month,year);
}
// Отрисовка календарика на выбранный месяц и год
calendar.drawCalendar = function(month,year) {
var tmp='';
tmp+='<table class="calendar" cellspacing="0" cellpadding="0">';
// Месяц и навигация
tmp+='<tr>';
tmp+='<td class="navigation" '+
'onclick="calendar.drawCalendar('+(month>1?(month-1):12)+
','+(month>1?year:(year-1))+');">◄<\/td>';
tmp+='<td colspan="5" class="navigation" '+
'onclick="calendar.drawCalendar('+
calendar.selectedDate.Month+','+
calendar.selectedDate.Year+');">'+
calendar.monthName[(month-1)]+' - '+year+'<\/td>';
tmp+='<td class="navigation" '+
'onclick="calendar.drawCalendar('+(month<12?(month+1):1)+
','+(month<12?year:(year+1))+');">►<\/td>';
tmp+='<\/tr>';
// Шапка таблицы с днями недели
tmp+='<tr>';
tmp+='<th>'+calendar.dayName[0]+'<\/th>';
tmp+='<th>'+calendar.dayName[1]+'<\/th>';
tmp+='<th>'+calendar.dayName[2]+'<\/th>';
tmp+='<th>'+calendar.dayName[3]+'<\/th>';
tmp+='<th>'+calendar.dayName[4]+'<\/th>';
tmp+='<th class="holiday">'+calendar.dayName[5]+'<\/th>';
tmp+='<th class="holiday">'+calendar.dayName[6]+'<\/th>';
tmp+='<\/tr>';
// Количество дней в месяце
var total_days = 32 - new Date(year, (month-1), 32).getDate();
// Начальный день месяца
var start_day = new Date(year, (month-1), 1).getDay();
if (start_day==0) { start_day=7; }
start_day--;
// Количество ячеек в таблице
var final_index=Math.ceil((total_days+start_day)/7)*7;
var day=1;
var index=0;
do {
// Начало строки таблицы
if (index%7==0) {
tmp+='<tr>';
}
// Пустые ячейки до начала месяца или после окончания
if ((index<start_day) || (index>=(total_days+start_day))) {
tmp+='<td class="grayed"> <\/td>';
}
else {
var class_name='';
// Выбранный день
if (calendar.selectedDate.Day==day &&
calendar.selectedDate.Month==month &&
calendar.selectedDate.Year==year) {
class_name='selected';
}
// Праздничный день
else if (index%7==6 || index%7==5) {
class_name='holiday';
}
// Ячейка с датой
tmp+='<td class="'+class_name+'" '+
'onclick="calendar.selectDate('+
day+','+month+','+year+');">'+day+'<\/td>';
day++;
}
// Конец строки таблицы
if (index%7==6) {
tmp+='<\/tr>';
}
index++;
}
while (index<final_index);
tmp+='<\/table>';
// Вставить таблицу календарика на страницу
var el=document.getElementById(calendar.element_id);
if (el) {
el.innerHTML=tmp;
}
}
// ID элемента для размещения календарика
calendar.element_id = 'calendar_table';
// По умолчанию используется текущая дата
calendar.selectedDate={
'Day' : new Date().getDate(),
'Month' : parseInt(new Date().getMonth())+1,
'Year' : new Date().getFullYear()
};
// Нарисовать календарик
calendar.drawCalendar(
calendar.selectedDate.Month,
calendar.selectedDate.Year
);
</script>