![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
27.07.2019, 23:13
|
![Аватар для Блондинка](https://javascript.ru/forum/image.php?u=65192&dateline=1622751306) |
Профессор
|
|
Регистрация: 24.02.2019
Сообщений: 806
|
|
Видимо никто на сможет помочь, и доработать календарь...
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
28.07.2019, 00:01
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Блондинка
|
доработать календарь...
|
Слишком много букв в нем. ![](https://javascript.ru/forum/images/smilies/smile.gif) А если без шутки, то для того чтобы календарь "не дергался" на странице его размер должен быть фиксирован. Все месяцы можно вывести в размер 7х6, что с шапкой дней недели будет составлять 7х7.
А для того чтобы вывести дни календаря с учетом предыдущего месяца, нужно получить метку времени первого дня этого месяца, затем день недели этого месяца. После этого можно получить метку времени, дату с которой будет начинаться календарь, которая получится коррекций его первого дня минус его дня недели. Останется в цикле добавлять к этой дает итератор цикла от 0 до 41 и получится календарь и с пред, и следующим месяцем.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
28.07.2019, 00:21
|
![Аватар для Блондинка](https://javascript.ru/forum/image.php?u=65192&dateline=1622751306) |
Профессор
|
|
Регистрация: 24.02.2019
Сообщений: 806
|
|
laimas,
чтобы не дёргался? думаю что тут ничего не надо трогать в скрипте, достаточно дополнить стили
ну а вывести даты других месяцев, добавить кнопки плюс минус для года, сорри но моих познаний недостаточно, поэтому и прошу помочь доделать, чтобы стал более удобным...
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
28.07.2019, 00:30
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Блондинка
|
думаю что тут ничего не надо трогать в скрипте, достаточно дополнить стили
|
Причем тут стили, в месяцах разное количество дней и начинаться месяц может как с понедельника, так и с воскресенья, то есть разное смещение вниз будет. А значит высота календаря будет не постоянна. Именно поэтому и фиксируют его размер, добавляя в вывод дни предыдущего и последующего месяцев.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
28.07.2019, 00:37
|
![Аватар для Блондинка](https://javascript.ru/forum/image.php?u=65192&dateline=1622751306) |
Профессор
|
|
Регистрация: 24.02.2019
Сообщений: 806
|
|
если установить у таблицы высоту равную той что будет при 6 неделях, будет просто разная высота строк-ячеек при разном количестве недель, и я в чём то не права?
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
28.07.2019, 00:41
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
А вы как думаете? Откройте системный календарь и посмотрите на него - его размер по высоте определяется количеством дней месяца. А высота ячеек его как раз постоянна.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
28.07.2019, 01:58
|
![Аватар для Блондинка](https://javascript.ru/forum/image.php?u=65192&dateline=1622751306) |
Профессор
|
|
Регистрация: 24.02.2019
Сообщений: 806
|
|
laimas,
я бы предпочла, чтобы высота блока с элементами управления была постоянной, независимо от наличия скрытой кнопки "сегодня" во второй строчке, и выпавнивалось по вертикали, и таблица 5х7, 6х7, 7х7 была одной высоты, а высота строк-ячеек растягивалась в случае необходимости...
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
28.07.2019, 02:00
|
![Аватар для Блондинка](https://javascript.ru/forum/image.php?u=65192&dateline=1622751306) |
Профессор
|
|
Регистрация: 24.02.2019
Сообщений: 806
|
|
...хотя о чём разговор, если даже на платной основе никто не берется сделать то, о чём я просила выше...
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
28.07.2019, 02:05
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Блондинка
|
я бы предпочла, чтобы высота блока с элементами управления была постоянной
|
А я о чем? В календаре вашем, о котором вы говорите, количество строк "заточено" по текущий месяц, и получится, в зависимости от количества дней и дня недели начала месяца, это количество будет разным.
Собственно, грубо говоря, весь календарь, это:
<html>
<head>
<meta charset="utf-8">
<style>
table {
border-collapse: separate;
}
td {
padding: 2px 4px;
border: 1px solid #c6c6c6;
text-align: right;
color: #000;
font: 12px Arial;
}
tr:first-child td {
background-color: #d0d0d0;
border-color: #999;
}
tr td:last-child {
color: #f70707;
}
tr:first-child td:last-child {
border-color: #f06565;
background-color: #fdafaf;
color: #000;
}
td.gray {
border-color: #cecece;
background-color: #e6e6e6;
color: #999!important
}
td.today {
background-color: #f6fdb5;
}
</style>
</head>
<body>
<table>
<tr><td>Пн</td><td>Вт</td><td>Ср</td><td>Чт</td><td>Пт</td><td>Сб</td><td>Вс</td></tr>
</table>
<script>
var d = new Date(),
currentYear = d.getFullYear(),
currentMonth = d.getMonth(),
today = d.getDate(),
d = new Date(currentYear, currentMonth, 1),
day = (d.getDay()||7)-1,
d = new Date(currentYear, currentMonth, 1 - day),
startDate = d.getDate(),
tbl = document.querySelector('table'),
row, cell, date,
n = 42; //даты календаря как 7х6
for(var i=0; i<n; ++i) {
if(!(i % 7)) row = tbl.insertRow(-1);
cell = row.insertCell(-1);
d = new Date(currentYear, currentMonth, startDate + i);
date = d.getDate();
cell.textContent = date;
if(date==today && currentMonth==d.getMonth() && currentYear==d.getFullYear()) cell.classList.add("today");
if(d.getMonth() != currentMonth) cell.classList.add("gray");
}
</script>
</body>
</html>
Вы можете стилями разукрасить календарь как угодно, какие угодно размеры ячеек его определять, но независимо от месяца дни его будут вписаны в один и тот же размер.
Последний раз редактировалось laimas, 28.07.2019 в 02:08.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
28.07.2019, 03:03
|
![Аватар для Блондинка](https://javascript.ru/forum/image.php?u=65192&dateline=1622751306) |
Профессор
|
|
Регистрация: 24.02.2019
Сообщений: 806
|
|
laimas,
если в феврале 2010 года 4 строки-недели, в текущем 5,в сентябре 6,что будет если задать фиксированную высоту таблицы?
|
|
|
|