Первый экран для сайта строительства домов
Первый экран для компании, которая строит дома под ключ: слева оффер и три опорные цифры, справа тёмная карточка с переключателем материала стен и ценой квадратного метра.
<section class="vbpsd">
<div class="vbpsd-wrap">
<div class="vbpsd-main">
<span class="vbpsd-tag">Частные дома под ключ с 2011 года</span>
<h1 class="vbpsd-h1">Построим дом <span>за один сезон</span> и отдадим с ключами</h1>
<p class="vbpsd-lead">Каркас, газобетон, профилированный брус. Смету закрепляем в договоре до выхода техники на участок, следующий платёж вы вносите только после приёмки предыдущего этапа.</p>
<div class="vbpsd-acts">
<a class="vbpsd-btn" href="#kalkulyator">Рассчитать смету дома</a>
<a class="vbpsd-link" href="#proekty">Сорок готовых проектов</a>
</div>
<ul class="vbpsd-stats">
<li><b data-num="214" data-suf=" домов">0</b><span>сдано с 2011 года, из них 63 за прошлый сезон</span></li>
<li><b data-num="14" data-suf=" лет">0</b><span>работаем в области, в штате 46 своих рабочих</span></li>
<li><b data-num="5" data-suf=" лет">0</b><span>гарантия на фундамент, стены и кровлю по договору</span></li>
</ul>
</div>
<aside class="vbpsd-card">
<h2 class="vbpsd-card__ttl">Цена квадратного метра</h2>
<div class="vbpsd-tabs">
<button type="button" class="vbpsd-tab vbpsd-tab--on" data-m="frame">Каркас</button>
<button type="button" class="vbpsd-tab" data-m="gas">Газобетон</button>
<button type="button" class="vbpsd-tab" data-m="brus">Брус</button>
</div>
<div class="vbpsd-price">
<b id="vbpsd-price">38 400 ₽</b>
<span>за м² в базовой комплектации</span>
</div>
<dl class="vbpsd-rows">
<div><dt>Срок стройки</dt><dd id="vbpsd-term">4 месяца</dd></div>
<div><dt>Тёплый контур</dt><dd id="vbpsd-warm">за 6 недель</dd></div>
<div><dt>Толщина стены</dt><dd id="vbpsd-wall">200 мм</dd></div>
</dl>
<p class="vbpsd-desc" id="vbpsd-desc">Лёгкий фундамент, сухая сборка, круглогодичная стройка. Подходит для дома площадью до 180 м² с постоянным проживанием.</p>
<p class="vbpsd-note">В базовую комплектацию входят фундамент, коробка, кровля, окна и входная дверь. Итог уточняется по проекту и результатам геологии участка.</p>
</aside>
</div>
</section>
<style>
.vbpsd, .vbpsd *, .vbpsd *::before, .vbpsd *::after { box-sizing: border-box; }
.vbpsd {
--acc: #b4541f; --acc-dark: #98451a; --ink: #221f1b; --muted: #6d6559; --line: #e4ddd1; --soft: #f6f2ea; --dark: #23282a;
--f: var(--t-text-font, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif);
--fh: var(--t-headline-font, var(--f));
background: var(--soft); color: var(--ink); font-family: var(--f); padding: clamp(36px, 5vw, 86px) 20px;
}
.vbpsd-wrap { max-width: 1240px; margin: 0 auto; padding: 0 clamp(0px, 2vw, 40px);
display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); gap: clamp(26px, 4vw, 58px); align-items: start; }
.vbpsd-tag { display: inline-block; font-size: 12.5px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase;
color: var(--acc); border: 1px solid #e0c7b4; border-radius: 999px; padding: 7px 15px; margin-bottom: 20px; }
.vbpsd-h1 { font-family: var(--fh); font-size: clamp(31px, 4.4vw, 56px); line-height: 1.05; font-weight: 700; letter-spacing: -.024em; margin: 0 0 18px; }
.vbpsd-h1 span { color: var(--acc); }
.vbpsd-lead { font-size: clamp(16px, 1.3vw, 18.5px); line-height: 1.62; color: var(--muted); margin: 0 0 28px; max-width: 32em; }
.vbpsd-acts { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 22px; margin-bottom: 34px; }
.vbpsd-btn, .vbpsd-btn:link, .vbpsd-btn:visited, .vbpsd-btn:active, .vbpsd-btn:focus { display: inline-flex; align-items: center; justify-content: center;
min-height: 56px; padding: 0 30px; border-radius: 12px; font-size: 16px; font-weight: 600;
background: var(--acc); color: #fff !important; text-decoration: none !important; transition: background .2s ease; }
.vbpsd-btn:hover { background: var(--acc-dark); color: #fff !important; }
.vbpsd-link, .vbpsd-link:link, .vbpsd-link:visited, .vbpsd-link:hover, .vbpsd-link:active, .vbpsd-link:focus {
font-size: 15.5px; font-weight: 500; color: var(--ink) !important; text-decoration: underline !important; text-underline-offset: 4px; }
.vbpsd-link:hover { color: var(--acc) !important; }
.vbpsd-stats { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 18px; }
.vbpsd-stats li { border-top: 2px solid var(--acc); padding-top: 14px; }
.vbpsd-stats b { display: block; font-family: var(--fh); font-size: clamp(24px, 2.4vw, 31px); line-height: 1.1; font-weight: 700; letter-spacing: -.02em; }
.vbpsd-stats span { display: block; font-size: 13.5px; line-height: 1.5; color: var(--muted); margin-top: 7px; }
.vbpsd-card { background: var(--dark); color: #f1eee9; border-radius: 24px; padding: clamp(22px, 2.6vw, 32px); }
.vbpsd-card__ttl { font-family: var(--fh); font-size: 15px; font-weight: 600; letter-spacing: .03em; text-transform: uppercase; color: #9aa4a6; margin: 0 0 16px; }
.vbpsd-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; background: #2d3335; border-radius: 12px; padding: 5px; margin-bottom: 22px; }
.vbpsd-tab { border: 0; margin: 0; padding: 11px 4px; -webkit-appearance: none; appearance: none; font: inherit; font-size: 14px; font-weight: 600;
cursor: pointer; border-radius: 9px; background: transparent !important; color: #b9c1c3 !important; transition: .18s ease; }
.vbpsd-tab:hover { color: #fff !important; }
.vbpsd-tab--on, .vbpsd-tab--on:hover { background: var(--acc) !important; color: #fff !important; }
.vbpsd-price { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; margin-bottom: 20px; }
.vbpsd-price b { font-family: var(--fh); font-size: clamp(32px, 3.4vw, 42px); line-height: 1; font-weight: 700; letter-spacing: -.02em; color: #fff; }
.vbpsd-price span { font-size: 13.5px; color: #9aa4a6; }
.vbpsd-rows { margin: 0 0 18px; padding: 0; display: grid; gap: 1px; background: #363c3e; border-radius: 14px; overflow: hidden; }
.vbpsd-rows div { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; background: var(--dark); padding: 13px 16px; }
.vbpsd-rows dt { font-size: 13.5px; color: #9aa4a6; }
.vbpsd-rows dd { margin: 0; font-size: 14.5px; font-weight: 600; text-align: right; }
.vbpsd-desc { font-size: 14.5px; line-height: 1.6; color: #d3d7d6; margin: 0 0 16px; }
.vbpsd-note { font-size: 12px; line-height: 1.55; color: #838d8f; margin: 0; padding-top: 15px; border-top: 1px solid #363c3e; }
@media (max-width: 900px) { .vbpsd-wrap { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 560px) { .vbpsd-h1 { font-size: clamp(26px, 7.4vw, 34px); } .vbpsd-acts { gap: 12px 16px; } }
@media (prefers-reduced-motion: reduce) { .vbpsd * { transition: none !important; } }
</style>
<script>
(function () {
/* ── МАТЕРИАЛЫ СТЕН: цена за м², сроки, описание ── */
var MATS = {
frame: { price: '38 400 ₽', term: '4 месяца', warm: 'за 6 недель', wall: '200 мм ваты',
desc: 'Лёгкий фундамент, сухая сборка, стройка круглый год. Подходит для дома до 180 м² с постоянным проживанием.' },
gas: { price: '46 900 ₽', term: '7 месяцев', warm: 'за 11 недель', wall: '375 мм блока',
desc: 'Каменный дом с высокой теплоёмкостью. Кладку ведём с апреля по октябрь, зимой работаем по инженерии и отделке.' },
brus: { price: '42 300 ₽', term: '6 месяцев', warm: 'за 8 недель', wall: '195 мм бруса',
desc: 'Профилированный брус камерной сушки. Усадка до 2 см за первый год, чистовую отделку начинаем через полгода.' }
};
var roots = document.querySelectorAll('.vbpsd');
for (var i = 0; i < roots.length; i++) init(roots[i]);
function init(root) {
if (root.__vb) return; root.__vb = 1;
var tabs = root.querySelectorAll('.vbpsd-tab');
var priceEl = root.querySelector('#vbpsd-price'), termEl = root.querySelector('#vbpsd-term');
var warmEl = root.querySelector('#vbpsd-warm'), wallEl = root.querySelector('#vbpsd-wall');
var descEl = root.querySelector('#vbpsd-desc');
function show(key, btn) {
var m = MATS[key];
if (!m) return;
priceEl.textContent = m.price;
termEl.textContent = m.term;
warmEl.textContent = m.warm;
wallEl.textContent = m.wall;
descEl.textContent = m.desc;
for (var j = 0; j < tabs.length; j++) tabs[j].className = 'vbpsd-tab';
btn.className = 'vbpsd-tab vbpsd-tab--on';
}
for (var t = 0; t < tabs.length; t++) {
(function (b) {
b.addEventListener('click', function () { show(b.getAttribute('data-m'), b); });
})(tabs[t]);
}
var mq = window.matchMedia ? window.matchMedia('(prefers-reduced-motion: reduce)') : null;
var still = !!(mq && mq.matches);
var nums = root.querySelectorAll('.vbpsd-stats b');
function put(el, v) { el.textContent = v + (el.getAttribute('data-suf') || ''); }
function run(el) {
var goal = parseInt(el.getAttribute('data-num'), 10) || 0;
if (still) { put(el, goal); return; }
var step = 0, total = 34;
var id = setInterval(function () {
step++;
var k = step / total;
put(el, Math.round(goal * (1 - Math.pow(1 - k, 3))));
if (step >= total) { clearInterval(id); put(el, goal); }
}, 22);
}
var done = false;
function runAll() { if (done) return; done = true; for (var n = 0; n < nums.length; n++) run(nums[n]); }
if (!('IntersectionObserver' in window)) { runAll(); return; }
var io = new IntersectionObserver(function (es) {
for (var e = 0; e < es.length; e++) {
if (es[e].isIntersecting) { runAll(); io.disconnect(); return; }
}
}, { rootMargin: '0px 0px -12% 0px' });
io.observe(root.querySelector('.vbpsd-stats'));
setTimeout(runAll, 2600);
}
})();
</script> Вставляется целиком в блок T123 «HTML-код». Внутри уже есть стили и скрипт, подключать ничего не нужно.
Как вставить блок в Tilda
- Скопируйте кодКнопка «Скопировать код» выше кладёт всё содержимое в буфер обмена.
- Добавьте блок T123В редакторе страницы: «Библиотека блоков» → «Другое» → T123 «HTML-код».
- Вставьте и сохранитеНажмите «Контент», вставьте код в поле, сохраните и обновите страницу.
- ОпубликуйтеВ превью скрипты Tilda работают не всегда — проверяйте на опубликованной странице.
Подробная инструкция с граблями — как вставить вайб-блок в Tilda.
Что менять под себя
| Где в коде | За что отвечает |
|---|---|
--acc в начале стилей | фирменный цвет кнопки, акцента в заголовке и активной вкладки |
объект MATS в скрипте | цена за м², срок, тёплый контур и толщина стены по материалам |
data-num у трёх плиток | опорные цифры: сданные дома, годы работы, срок гарантии |
href у кнопки и ссылки | якорь на калькулятор сметы и на страницу с проектами |
Первый экран строительства домов: зачем он нужен
Первый экран строительной компании обычно занимает крупная визуализация, и посетитель уходит, так и не поняв бюджет. Этот блок ставит вперёд цифры: цену квадратного метра, срок стройки и число сданных домов. Переключатель материала стен показывает, как меняются цена, срок и толщина стены для каркаса, газобетона и бруса. Человек получает вилку бюджета за несколько секунд и уже с ней идёт в калькулятор.
Три опорные цифры под оффером набираются анимацией, когда блок попадает в зону видимости, а при системной настройке уменьшения движения выводятся сразу. Целевое действие сделано ссылкой на якорь расчёта, поэтому блок не требует настройки приёмников форм. Вся вёрстка живёт внутри одной секции: шрифты наследуются от шрифтов сайта, фирменный цвет меняется одной переменной.
Вопросы по этому блоку
-
Откройте объект MATS в начале скрипта. Для каждого материала там заданы цена, срок, время до тёплого контура и толщина стены. Поставьте свои значения строками, разметку трогать не нужно: карточка перерисуется сама.
-
Да. Удалите лишние кнопки с атрибутом data-m в разметке и соответствующие ключи в объекте MATS. В стилях у контейнера вкладок стоит сетка из трёх колонок, поставьте число оставшихся кнопок.
-
Первый экран ведёт человека к расчёту, заявку удобнее собирать после калькулятора. Кнопка сделана обычной ссылкой на якорь, поэтому её можно направить на любой блок страницы или на отдельную страницу проектов.
-
Да. Код на этой странице копируется целиком, без регистрации и подписки. Указывать авторство не нужно, использовать можно в коммерческих проектах.
-
Нет. Все классы внутри имеют собственный префикс vbpsd, поэтому не пересекаются ни со стилями Tilda, ни с другими блоками. Скрипт привязан к своему элементу и запускается один раз, даже если блок вставлен дважды.
-
Раскладка перестраивается под узкие экраны, размеры заданы через clamp, поля ввода имеют шрифт 16 пикселей — iOS не будет зумить страницу при фокусе. Отдельной мобильной версии подключать не нужно.
Другие главные экраны
Ещё блоки для строительства домов
Собрать сайт целиком
Дровосеки делают сайты на Tilda под ключ: структура, тексты, дизайн, вёрстка и вайб-блоки под задачи бизнеса. Как это выглядит для ниши «Строительство домов», видно на отдельной странице.