Задать вопрос директору
Telegram
VK
Звонок

Блок «Этапы строительства дома» для Tilda

Вертикальный таймлайн из шести этапов стройки. У каждого этапа стоит срок в неделях, описание работ и одна проверяемая цифра, а шаги проявляются по мере прокрутки.

Живое демо — блок работает прямо здесь

Код блока

<section class="vbesd">
  <div class="vbesd-wrap">
    <div class="vbesd-head">
      <h2 class="vbesd-h2">Шесть этапов от договора до ключей</h2>
      <p class="vbesd-lead">Каждый этап закрывается актом и фотоотчётом. Пока акт не подписан, следующий платёж мы не запрашиваем и на площадку не выходим.</p>
    </div>

    <ol class="vbesd-line" id="vbesd-line">
      <li class="vbesd-step">
        <span class="vbesd-dot" aria-hidden="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true">
            <path d="M6 3h8l4 4v14H6z"/><path d="M14 3v4h4"/><path d="M9 13h6M9 17h4"/>
          </svg>
        </span>
        <div class="vbesd-body">
          <span class="vbesd-when">Неделя 1</span>
          <h3>Договор с закреплённой сметой</h3>
          <p>Считаем объёмы по проекту и вносим итог в договор отдельным приложением. Цена меняется только письменным дополнением, которое подписываете вы, а не по звонку прораба.</p>
          <span class="vbesd-fact">42 позиции в смете, все с объёмом и ценой</span>
        </div>
      </li>

      <li class="vbesd-step">
        <span class="vbesd-dot" aria-hidden="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true">
            <path d="M3 17h18M5 17V9l7-4 7 4v8"/><path d="M9 17v-4h6v4"/>
          </svg>
        </span>
        <div class="vbesd-body">
          <span class="vbesd-when">Недели 2-4</span>
          <h3>Геология и фундамент</h3>
          <p>Бурим три скважины на глубину 5 метров и подбираем основание по грунту. Заливку ведём бетоном заводского замеса, каждую машину сопровождает паспорт с маркой смеси.</p>
          <span class="vbesd-fact">28 дней набора прочности до нагрузки</span>
        </div>
      </li>

      <li class="vbesd-step">
        <span class="vbesd-dot" aria-hidden="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true">
            <rect x="4" y="8" width="16" height="12" rx="1"/><path d="M4 14h16M10 8v6M14 14v6"/><path d="M4 8l8-4 8 4"/>
          </svg>
        </span>
        <div class="vbesd-body">
          <span class="vbesd-when">Недели 5-10</span>
          <h3>Коробка и перекрытия</h3>
          <p>Каркас собираем на площадке из сухой доски камерной сушки, газобетон кладём на клей с толщиной шва 2 мм. Геометрию проверяем лазерным нивелиром после каждого ряда.</p>
          <span class="vbesd-fact">Отклонение стены до 3 мм на 2 метра</span>
        </div>
      </li>

      <li class="vbesd-step">
        <span class="vbesd-dot" aria-hidden="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true">
            <path d="M2 12L12 4l10 8"/><path d="M5 12v8h14v-8"/><path d="M9 20v-5h6v5"/>
          </svg>
        </span>
        <div class="vbesd-body">
          <span class="vbesd-when">Недели 11-13</span>
          <h3>Кровля и тёплый контур</h3>
          <p>Ставим стропильную систему, кроем крышу и закрываем дом окнами с входной дверью. С этого момента внутри можно работать в любую погоду, а материалы не мокнут под дождём.</p>
          <span class="vbesd-fact">Гарантия на кровельный пирог 5 лет</span>
        </div>
      </li>

      <li class="vbesd-step">
        <span class="vbesd-dot" aria-hidden="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true">
            <path d="M6 3v7a3 3 0 0 0 6 0V3"/><path d="M9 13v8"/><path d="M15 21V9a3 3 0 0 1 6 0v3"/>
          </svg>
        </span>
        <div class="vbesd-body">
          <span class="vbesd-when">Недели 14-18</span>
          <h3>Инженерия и разводка</h3>
          <p>Прокладываем электрику, водоснабжение, канализацию и отопление до штукатурных работ. Схему разводки передаём в бумаге и файлом, чтобы через год вы знали, где проходит труба.</p>
          <span class="vbesd-fact">Опрессовка контура давлением 4 бара</span>
        </div>
      </li>

      <li class="vbesd-step">
        <span class="vbesd-dot" aria-hidden="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true">
            <path d="M4 20V9l8-5 8 5v11H4z"/><path d="M9 15l2 2 4-4.5"/>
          </svg>
        </span>
        <div class="vbesd-body">
          <span class="vbesd-when">Недели 19-20</span>
          <h3>Приёмка и передача ключей</h3>
          <p>Обходим дом по листу из 96 пунктов вместе с вами, замечания устраняем за две недели. Передаём исполнительную документацию, паспорта на оборудование и гарантийный талон.</p>
          <span class="vbesd-fact">96 пунктов в листе приёмки</span>
        </div>
      </li>
    </ol>

    <div class="vbesd-foot">
      <p>Средний срок дома площадью 140 м² в каркасе составляет 5 месяцев. Просрочку по нашей вине компенсируем по договору.</p>
      <a class="vbesd-cta" href="#grafik">Посмотреть график стройки</a>
    </div>
  </div>
</section>

<style>
.vbesd, .vbesd *, .vbesd *::before, .vbesd *::after { box-sizing: border-box; }
.vbesd {
  --acc: #8a6a3c; --acc-dark: #6f5430; --ink: #201e1a; --muted: #6c655a; --line: #e6e0d4; --soft: #f7f4ed;
  --f: var(--t-text-font, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif);
  --fh: var(--t-headline-font, var(--f));
  background: #fff; color: var(--ink); font-family: var(--f); padding: clamp(36px, 5vw, 80px) 20px;
}
.vbesd-wrap { max-width: 1080px; margin: 0 auto; padding: 0 clamp(0px, 2vw, 40px); }
.vbesd-head { max-width: 44em; margin-bottom: clamp(28px, 3.4vw, 46px); }
.vbesd-h2 { font-family: var(--fh); font-size: clamp(26px, 3.4vw, 42px); line-height: 1.1; font-weight: 700; letter-spacing: -.022em; margin: 0 0 12px; }
.vbesd-lead { font-size: 16px; line-height: 1.6; color: var(--muted); margin: 0; }

.vbesd-line { list-style: none; margin: 0; padding: 0; position: relative; }
.vbesd-line::before { content: ''; position: absolute; left: 25px; top: 12px; bottom: 12px; width: 2px; background: var(--line); }
.vbesd-step { position: relative; display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 20px; padding-bottom: 26px;
  opacity: 0; transform: translateY(14px); transition: opacity .5s ease, transform .5s cubic-bezier(.22,1,.36,1); }
.vbesd-step:last-child { padding-bottom: 0; }
.vbesd-step.vbesd-step--in { opacity: 1; transform: none; }
.vbesd-dot { position: relative; z-index: 1; width: 52px; height: 52px; border-radius: 16px; background: var(--soft); border: 1px solid var(--line);
  display: flex; align-items: center; justify-content: center; color: var(--acc); }
.vbesd-dot svg { width: 24px; height: 24px; }
.vbesd-body { padding-top: 3px; }
.vbesd-when { display: inline-block; font-size: 12px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase;
  color: var(--acc); margin-bottom: 8px; }
.vbesd-body h3 { font-family: var(--fh); font-size: clamp(18px, 1.9vw, 22px); line-height: 1.25; font-weight: 600; margin: 0 0 9px; }
.vbesd-body p { margin: 0 0 11px; font-size: 15px; line-height: 1.65; color: var(--muted); max-width: 46em; }
.vbesd-fact { display: inline-block; font-size: 13px; font-weight: 600; background: var(--soft); border-radius: 999px; padding: 7px 15px; }

.vbesd-foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 18px;
  margin-top: clamp(28px, 3.4vw, 44px); padding-top: clamp(22px, 2.6vw, 32px); border-top: 1px solid var(--line); }
.vbesd-foot p { margin: 0; font-size: 15px; line-height: 1.6; color: var(--muted); max-width: 34em; }
.vbesd-cta, .vbesd-cta:link, .vbesd-cta:visited, .vbesd-cta:active, .vbesd-cta:focus { display: inline-flex; align-items: center; justify-content: center;
  min-height: 54px; padding: 0 28px; border-radius: 12px; font-size: 16px; font-weight: 600; white-space: nowrap;
  background: var(--acc); color: #fff !important; text-decoration: none !important; transition: background .2s ease; }
.vbesd-cta:hover { background: var(--acc-dark); color: #fff !important; }

@media (max-width: 560px) {
  .vbesd-line::before { left: 21px; }
  .vbesd-step { grid-template-columns: 44px minmax(0, 1fr); gap: 15px; }
  .vbesd-dot { width: 44px; height: 44px; border-radius: 13px; }
  .vbesd-dot svg { width: 20px; height: 20px; }
  .vbesd-cta { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .vbesd * { transition: none !important; }
  .vbesd-step { opacity: 1; transform: none; }
}
</style>

<script>
(function () {
  var roots = document.querySelectorAll('.vbesd');
  for (var i = 0; i < roots.length; i++) init(roots[i]);

  function init(root) {
    if (root.__vb) return; root.__vb = 1;
    var steps = root.querySelectorAll('.vbesd-step');

    function open(el, delay) {
      setTimeout(function () { el.className = 'vbesd-step vbesd-step--in'; }, delay);
    }
    function openAll() {
      for (var n = 0; n < steps.length; n++) open(steps[n], 0);
    }

    if (!('IntersectionObserver' in window)) { openAll(); return; }
    var io = new IntersectionObserver(function (es) {
      for (var e = 0; e < es.length; e++) {
        if (!es[e].isIntersecting) continue;
        var idx = 0;
        for (var s = 0; s < steps.length; s++) { if (steps[s] === es[e].target) idx = s; }
        open(es[e].target, (idx % 3) * 110);
        io.unobserve(es[e].target);
      }
    }, { rootMargin: '0px 0px -8% 0px' });
    for (var k = 0; k < steps.length; k++) io.observe(steps[k]);
    setTimeout(openAll, 2600);
  }
})();
</script>

Вставляется целиком в блок T123 «HTML-код». Внутри уже есть стили и скрипт, подключать ничего не нужно.

Как вставить блок в Tilda

  1. Скопируйте кодКнопка «Скопировать код» выше кладёт всё содержимое в буфер обмена.
  2. Добавьте блок T123В редакторе страницы: «Библиотека блоков» → «Другое» → T123 «HTML-код».
  3. Вставьте и сохранитеНажмите «Контент», вставьте код в поле, сохраните и обновите страницу.
  4. ОпубликуйтеВ превью скрипты Tilda работают не всегда — проверяйте на опубликованной странице.

Подробная инструкция с граблями — как вставить вайб-блок в Tilda.

Что менять под себя

Где в кодеЗа что отвечает
подписи со срокаминедели этапов под ваш типовой график стройки
плашку с цифрой под текстомпроверяемое число этапа: гарантия, допуск, пункты приёмки
--accцвет иконок, подписей со сроками и кнопки внизу блока
ссылку внизукуда ведёт кнопка: график стройки, смета или страница проектов

Этапы строительства дома: зачем он нужен

Заказчик опасается стройки, пока не понимает, что происходит между подписанием договора и получением ключей. Блок разворачивает работу в таймлайн из шести этапов: договор со сметой, фундамент, коробка, кровля, инженерия и приёмка. У каждого этапа указан срок в неделях, короткое описание работ и одна проверяемая цифра. Такой список сильнее набора обещаний, потому что его можно сверить с тем, что происходит на площадке.

Этапы проявляются с лёгким сдвигом по мере прокрутки, системная настройка уменьшения движения отключает анимацию целиком. Иконки нарисованы прямо в разметке, поэтому блок не тянет ни картинок, ни сторонних наборов. На узком экране линия и иконки уменьшаются, а текст остаётся в одну колонку. Внизу стоит строка про средний срок дома и кнопка на подробный график работ.

Вопросы по этому блоку

  • Каждый этап это элемент списка с классом vbesd-step. Скопируйте любой из них, поменяйте иконку, срок, заголовок и текст. Линия и порядок появления подстроятся сами, скрипт считает шаги по разметке.

  • Нет. Появление собрано на переходах в стилях и одном наблюдателе за видимостью, сторонних библиотек в блоке нет. При системной настройке уменьшения движения все шаги показываются сразу.

  • Да, но на узких экранах шесть этапов в ряд не помещаются. Проще оставить вертикальную линию и сократить описания до двух предложений, тогда блок станет заметно короче.

  • Да. Код на этой странице копируется целиком, без регистрации и подписки. Указывать авторство не нужно, использовать можно в коммерческих проектах.

  • Нет. Все классы внутри имеют собственный префикс vbesd, поэтому не пересекаются ни со стилями Tilda, ни с другими блоками. Скрипт привязан к своему элементу и запускается один раз, даже если блок вставлен дважды.

  • Раскладка перестраивается под узкие экраны, размеры заданы через clamp, поля ввода имеют шрифт 16 пикселей — iOS не будет зумить страницу при фокусе. Отдельной мобильной версии подключать не нужно.

Другие блоки преимуществ

Ещё блоки для строительства домов

Собрать сайт целиком, а не по блокам

Дровосеки делают сайты на Tilda под ключ: структура, тексты, дизайн, вёрстка и вайб-блоки под задачи бизнеса.