Интерактивный таймлайн в Тильде, который подсвечивает текущий месяц, показывает прогресс внутри него и даёт описание этапа. Всё это — внутри Zero Block, без внешних сервисов.
Нажми на месяцы, чтобы взаимодействовать 👇
Так выглядит на момент публикации статьи (19.09.2025)
Как это работает
Кнопки-этапы (месяцы) располагаются на линии (по стилям нет ограничений, все можно под себя настроить, найти в интернете готовые css таймлайны или через ИИ написать и заменить в коде).
Синий цвет подсвечивает текущий месяц (определяется автоматически по дате).
Прогресс-бар заполняется по дням: сегодня 19 сентября → значит в сентябре закрашено ~70% линии.
Описание текущего месяца выводится под/над таймлайном. По клику на любую кнопку можно посмотреть описание других этапов (но цвет не меняется).
Всё адаптируется: горизонтальный вариант для десктопа, вертикальный для мобильных.
ru — название месяца (как будет отображаться) m — номер месяца в JS (считается с нуля: январь = 0, сентябрь = 8) desc — текст описания lastEnd — дата окончания последнего этапа (по умолчанию — 1-е число следующего месяца)
Добавляй или убирай месяцы — шкала перестроится автоматически.
Стили
Цвета #0629d9 и #eee меняются в стилях для .tl-bubble / .tl-line-fill / .tl-line-bg
Размер шрифта у описания .tl-desc (font-size: 14px)
Скругление кнопок/табов — через border-radius: 999px;
Что учесть в Zero Block
Два HTML-элемента.
Один для десктопа (горизонтальный таймлайн).
Второй для мобилки (вертикальный).
В настройках слоёв скрой ненужный вариант на соответствующих экранах.
Ширина элементов
HTML-элемент для мобилки должен растягиваться на 100% по ширине блока — так линия прогресса всегда центрируется корректно.
Шрифты
По умолчанию стоит Inter. Хотите другой — поменяйте font-family в CSS, название должно совпадать с названием из настроек Тильды
<style>
/* Шрифт Inter по умолчанию для всего блока (убедись, что Inter подключён в Тильде) */
.tl-wrap {
width:100%;
max-width:1200px;
margin:0 auto;
font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
}
</style>
Отступы
Между будущими месяцами — 10px. Между текущим и следующим — минимум 120px (чтобы прогресс-бар был читаем). Всё это задаётся в JS, можно поменять число MIN_GAP.
Что получаем
Автоматическая подсветка текущего месяца и заполнение прогресса.
Возможность вручную посмотреть по этапам.
Адаптивность: аккуратный горизонтальный таймлайн на десктопе и вертикальный — на мобилке.