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

Блок с этапами подбора персонала

Шесть шагов подбора со сроками: у каждого этапа своя полоса длительности, доля от общего цикла и строка о том, что заказчик получает на руки.

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

Код блока

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

    <div class="vbkip-grid" id="vbkip-grid">
      <article class="vbkip-card" data-days="2">
        <span class="vbkip-no">01</span>
        <span class="vbkip-when">Дни 1-2</span>
        <h3>Снимаем профиль должности</h3>
        <p>Разговариваем с руководителем, для которого ищем человека: задачи первых трёх месяцев, чем занят предшественник, что считается провалом. Сразу проверяем оклад по рынку и говорим, если цифра не соберёт откликов.</p>
        <div class="vbkip-bar"><i></i></div>
        <span class="vbkip-share"></span>
        <span class="vbkip-get">Заказчик получает профиль вакансии на одной странице и обзор зарплат по региону</span>
      </article>

      <article class="vbkip-card" data-days="5">
        <span class="vbkip-no">02</span>
        <span class="vbkip-when">Дни 2-6</span>
        <h3>Ищем и выходим на связь</h3>
        <p>Размещаем вакансию, поднимаем свою базу и пишем тем, кто работу пока не ищет. Линейные позиции идут потоком через обзвон, руководителей ищем адресно по компаниям вашей отрасли.</p>
        <div class="vbkip-bar"><i></i></div>
        <span class="vbkip-share"></span>
        <span class="vbkip-get">Заказчик получает отчёт по воронке: сколько человек просмотрено и сколько ответило</span>
      </article>

      <article class="vbkip-card" data-days="4">
        <span class="vbkip-no">03</span>
        <span class="vbkip-when">Дни 5-8</span>
        <h3>Проводим первичный отбор</h3>
        <p>Созваниваемся с каждым откликом: опыт по задачам из профиля, ожидания по деньгам, готовность к графику и дороге. Проверяем документы и разрешение на работу, задаём вопросы по последним двум местам.</p>
        <div class="vbkip-bar"><i></i></div>
        <span class="vbkip-share"></span>
        <span class="vbkip-get">Заказчик получает короткий список с заключением рекрутера по каждому кандидату</span>
      </article>

      <article class="vbkip-card" data-days="5">
        <span class="vbkip-no">04</span>
        <span class="vbkip-when">Дни 8-12</span>
        <h3>Организуем интервью у вас</h3>
        <p>Согласуем время, напоминаем кандидату накануне и приезжаем на встречу вместе с ним, если нужно. После каждого интервью собираем обратную связь с обеих сторон и правим поиск, когда кандидаты промахиваются по профилю.</p>
        <div class="vbkip-bar"><i></i></div>
        <span class="vbkip-share"></span>
        <span class="vbkip-get">Заказчик получает собранное расписание встреч и причины отказов кандидатов</span>
      </article>

      <article class="vbkip-card" data-days="4">
        <span class="vbkip-no">05</span>
        <span class="vbkip-when">Дни 12-16</span>
        <h3>Доводим до выхода на работу</h3>
        <p>Помогаем сформулировать предложение о работе, обсуждаем условия и держим связь с кандидатом до первого рабочего дня. На этом отрезке чаще всего перехватывают встречным предложением, поэтому звоним через день.</p>
        <div class="vbkip-bar"><i></i></div>
        <span class="vbkip-share"></span>
        <span class="vbkip-get">Заказчик получает подтверждённую дату выхода и собранные рекомендации с прошлых мест</span>
      </article>

      <article class="vbkip-card vbkip-card--w" data-days="0">
        <span class="vbkip-no">06</span>
        <span class="vbkip-when">90 дней после выхода</span>
        <h3>Держим гарантию замены</h3>
        <p>Созваниваемся с руководителем на седьмой, тридцатый и девяностый день. Если человек уволился или его решили не оставлять после испытательного срока, ищем замену заново и денег за это не берём.</p>
        <div class="vbkip-bar vbkip-bar--w"><i></i></div>
        <span class="vbkip-share">Гарантийный период</span>
        <span class="vbkip-get">Заказчик получает бесплатную замену и три контрольных звонка по адаптации</span>
      </article>
    </div>
  </div>
</section>

<style>
.vbkip, .vbkip *, .vbkip *::before, .vbkip *::after { box-sizing: border-box; }
.vbkip {
  --acc: #4657a8; --ink: #191d2b; --muted: #616782; --line: #e3e5ef; --soft: #f4f5fa;
  --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;
}
.vbkip-wrap { max-width: 1220px; margin: 0 auto; padding: 0 clamp(0px, 2vw, 40px); }
.vbkip-head { max-width: 46em; margin-bottom: clamp(26px, 3.4vw, 44px); }
.vbkip-h2 { font-family: var(--fh); font-size: clamp(26px, 3.4vw, 42px); line-height: 1.1; font-weight: 700; letter-spacing: -.02em; margin: 0 0 12px; }
.vbkip-lead { font-size: 16px; line-height: 1.62; color: var(--muted); margin: 0 0 16px; }
.vbkip-total { display: inline-block; font-size: 14px; font-weight: 600; color: var(--acc); background: var(--soft); border-radius: 999px; padding: 9px 18px; margin: 0; }

.vbkip-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: 14px; }
.vbkip-card { display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: 20px; padding: clamp(20px, 2.2vw, 28px); }
.vbkip-card--w { background: var(--soft); border-color: transparent; }
.vbkip-no { font-family: var(--fh); font-size: 13px; font-weight: 700; letter-spacing: .06em; color: var(--acc); }
.vbkip-when { font-size: 12.5px; color: var(--muted); margin: 6px 0 10px; }
.vbkip-card h3 { font-family: var(--fh); font-size: 19px; line-height: 1.28; font-weight: 700; margin: 0 0 10px; }
.vbkip-card p { margin: 0 0 18px; font-size: 14.5px; line-height: 1.62; color: var(--muted); }
.vbkip-bar { height: 5px; border-radius: 5px; background: var(--soft); overflow: hidden; margin-top: auto; }
.vbkip-card--w .vbkip-bar { background: #e4e6f0; }
.vbkip-bar i { display: block; height: 100%; width: 0; border-radius: 5px; background: var(--acc); transition: width .9s cubic-bezier(.22,1,.36,1); }
.vbkip-bar--w i { background: repeating-linear-gradient(90deg, var(--acc) 0 8px, transparent 8px 14px); }
.vbkip-share { font-size: 12px; color: var(--muted); margin: 9px 0 14px; }
.vbkip-get { font-size: 13.5px; line-height: 1.5; font-weight: 600; border-top: 1px solid var(--line); padding-top: 14px; }
.vbkip-card--w .vbkip-get { border-top-color: #dfe1ee; }

@media (max-width: 560px) { .vbkip-card { padding: 20px; } }
@media (prefers-reduced-motion: reduce) { .vbkip-bar i { transition: none !important; } }
</style>

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

  function init(root) {
    if (root.__vb) return; root.__vb = 1;
    var cards = root.querySelectorAll('.vbkip-card');
    var total = 0, i;
    for (i = 0; i < cards.length; i++) total += +cards[i].getAttribute('data-days') || 0;

    function plural(n, a) { var m = n % 100; if (m > 4 && m < 21) return a[2]; m = n % 10; return m === 1 ? a[0] : (m > 1 && m < 5 ? a[1] : a[2]); }

    var head = root.querySelector('#vbkip-total');
    if (head) head.textContent = 'Полный цикл до выхода кандидата: ' + total + ' рабочих ' + plural(total, ['день', 'дня', 'дней']);

    var max = 0;
    for (i = 0; i < cards.length; i++) max = Math.max(max, +cards[i].getAttribute('data-days') || 0);

    for (i = 0; i < cards.length; i++) {
      var d = +cards[i].getAttribute('data-days') || 0;
      var sh = cards[i].querySelector('.vbkip-share');
      if (d && sh) sh.textContent = d + ' ' + plural(d, ['рабочий день', 'рабочих дня', 'рабочих дней']) +
        ', это ' + Math.round(d / total * 100) + '% срока';
      cards[i].setAttribute('data-w', d ? Math.round(d / max * 100) : 100);
    }

    function fill() {
      for (var j = 0; j < cards.length; j++) grow(cards[j], j);
    }
    function grow(card, j) {
      var bar = card.querySelector('.vbkip-bar i');
      if (!bar) return;
      setTimeout(function () { bar.style.width = card.getAttribute('data-w') + '%'; }, j * 110);
    }

    if (!('IntersectionObserver' in window)) { fill(); return; }
    var io = new IntersectionObserver(function (es) {
      for (var k = 0; k < es.length; k++) if (es[k].isIntersecting) { fill(); io.disconnect(); }
    }, { rootMargin: '0px 0px -10% 0px' });
    io.observe(root.querySelector('#vbkip-grid'));
    setTimeout(fill, 2600);
  }
})();
</script>

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

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

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

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

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

Где в кодеЗа что отвечает
data-days у карточекдлительность шага в рабочих днях, из неё считается общий срок
текст в теге span с классом получаетчто остаётся у заказчика после каждого шага
подписи Дни 1-2 и подобныекалендарные границы этапов под ваш регламент работы
--acc в начале стилейцвет номеров, полос длительности и плашки с общим сроком

Как идёт подбор персонала: зачем он нужен

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

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

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

  • Удалите карточку целиком вместе с её атрибутом data-days. Сетка перестроится, а общий срок и доли в процентах пересчитаются при следующей загрузке страницы.

  • Гарантия идёт после выхода кандидата и в рабочие дни цикла не входит, поэтому у неё стоит data-days со значением ноль и отдельный класс с пунктирной заливкой.

  • Да, схема одинаковая. Замените строки о заказчике на то, что получает руководитель подразделения, и поправьте сроки под свой регламент согласования.

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

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

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

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

Ещё блоки для подбора персонала

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

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