Правила верстки попапов и встроенных форм

Верстка формы зависит от выбранного типа: будет ли она для сбора контактов или для сбора кликов. Также есть общие принципы, одинаковые для всех видов форм.

HTML

Общие правила

  • В начало верстки не требуется вставлять <!DOCTYPE html> или <header>. верстка начинается сразу с <div>, с классом "popmechanic-reset" и id="popmechanic-form”.

  • Главный экран формы подписки оборачивается классом "popmechanic-main"

  • Используйте "data-popmechanic-close" во всех элементах, при клике на которые, форма должна закрываться. Никаких дополнительных скриптов прописывать не нужно:

<!-- Вся форма обернута в отдельный div с классом "popmechanic-reset" и id="popmechanic-form" -->
        <div class="popmechanic-reset" id="popmechanic-form">
            <div class="popmechanic-main">
                <div class="popmechanic-content">
                    <div class="popmechanic-title">
                        Заголовок
                    </div>
                    <div class="popmechanic-sub-title">
                        Текст
                    </div>
        				</div>
        		</div>
        		<!-- Отдельный класс для элементов закрытия формы: -->
            <div class="popmechanic-close" data-popmechanic-close>×
            </div>
        </div>
        

Для форм сбора контактов

  • Форма сбора контактов по определению должна передавать некоторые данные клиента в Mindbox, поэтому в ней должно быть как минимум одно поле ввода и кнопка подтверждения:
<div class="popmechanic-inputs">
        		<input type="email" class="popmechanic-input" data-popmechanic-input="email" placeholder="Email" required>
        		<button type="button" name="button" class="popmechanic-button" data-popmechanic-submit>Текст кнопки</button>
        </div>
        

Подробнее о полях ввода и валидации.

  • В форме сбора контактов можно добавить экран благодарности и обернуть его классом "popmechanic-thankyou"
<div class="popmechanic-thankyou">
        		<div class="popmechanic-title">Спасибо!</div>
            <div class="popmechanic-sub-title">Уже отправили вам письмо</div>
            <div class="popmechanic-close" data-popmechanic-close>×
            </div>
        </div>
        

Пример готового кода

<!-- Вся форма обернута в отдельный div с классом "popmechanic-reset" и id="popmechanic-form" -->
        <div class="popmechanic-reset" id="popmechanic-form">
            <div class="popmechanic-main">
                <div class="popmechanic-content">
                    <div class="popmechanic-title">
                        Заголовок
                    </div>
                    <div class="popmechanic-sub-title">
                        Текст
                    </div>
        						<!-- Поле ввода и кнопка формы: -->
        						<div class="popmechanic-inputs">
        					    <input type="email" class="popmechanic-input" data-popmechanic-input="email" placeholder="Email" required>
        					    <button type="button" name="button" class="popmechanic-button" data-popmechanic-submit>Текст кнопки</button>
        						</div>
        				</div>
        		</div>
        		<!-- Отдельный класс для элементов закрытия формы: -->
            <div class="popmechanic-close" data-popmechanic-close>×
            </div>
            <div class="popmechanic-thankyou">
                <div class="popmechanic-title">Спасибо!</div>
                <div class="popmechanic-sub-title">Уже отправили вам письмо</div>
        		<!-- Отдельный класс для элементов закрытия формы: -->
                <div class="popmechanic-close" data-popmechanic-close>×
                </div>
            </div>
        </div>
        

Для информационных форм

  • Если ваша форма предполагает наличие ссылки или кнопки, клики по которым нужно считать, то добавьте в них "data-popmechanic-submit"
<button type="button" name="button" class="popmechanic-button" data-popmechanic-submit>Текст кнопки</button>
        

Если в форме будет несколько кнопок с этим параметром, в отчете все клики будут объединены.

Пример готового кода

<!-- Вся форма обернута в отдельный div с классом "popmechanic-reset" и id="popmechanic-form" -->
        <div class="popmechanic-reset" id="popmechanic-form">
            <div class="popmechanic-main">
                <div class="popmechanic-content">
                    <div class="popmechanic-title">
                        Заголовок
                    </div>
                    <div class="popmechanic-sub-title">
                        Текст
                    </div>
        					  <!-- На элементы, клики по которым нужно считать добавляйте data-popmechanic-submit -->
        					  <button type="button" name="button" class="popmechanic-button" data-popmechanic-submit>Текст кнопки</button>
        				</div>
        		</div>
        		<!-- Отдельный класс для элементов закрытия формы -->
            <div class="popmechanic-close" data-popmechanic-close>×
            </div>
        </div>
        

Стили CSS

Параметры стилей для разного размера экранов

Не используйте медиазапросы, если верстаете попап-форму. Скрипт Mindbox вешает на контейнер формы классы "popmechanic-desktop", "popmechanic-tablet", "popmechanic-mobile" для адаптации внешнего вида под устройство.

Наши зарезервированные классы для стилей:

  • #popmechanic-form — все экраны формы
  • .popmechanic-mobile — мобильная версия формы
  • .popmechanic-tablet — планшетная версия формы
  • .popmechanic-thankyou — экран благодарности за подписку

Для кастомных стилей в CSS формы используйте #popmechanic-form в начале селектора как в примерах ниже:

<!-- Стили для ссылок в форме в целом: -->
        #popmechanic-form a {
            display: block;
        }
        
        <!-- Стили для элемента закрытия в форме в целом: -->
        #popmechanic-form .popmechanic-close {
            font-size: 20px;
        }
        
        <!-- Стили для мобильной версии формы: -->
        .popmechanic-mobile #popmechanic-form {
            width: 300px;
        }
        
        <!-- Стили для картинок мобильной версии формы: -->
        .popmechanic-mobile #popmechanic-form img {
            width: 200px;
        }
        

Добавление кастомных шрифтов в форму

Рекомендуемый вариант:

@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,700&subset=cyrillic");
        @import url("https://fonts.googleapis.com/css?family=Roboto:400,700&subset=cyrillic-ext");
        

Добавление видео в форму

Не добавляйте GIF анимацию размером больше 2 МБ

Используйте видеоформат для фона, если это необходимо:

<video autoplay loop muted class="popmechanic-video popmechanic-video-desktop">
            <source src="https://static.popmechanic.ru/media/fridays-video/video/desktop_bg.mp4" type="video/mp4">
        </video>
        

Больше информации по использованию видео в форме в статье.

Для многоэкранных форм

Если форма многоэкранная или содержит экран благодарности, нужно скрыть все экраны кроме первого при отрисовке формы.

<!-- Экран благодарности скрыт при показе формы -->
        #popmechanic-form .popmechanic-thankyou {
            display: none; }
        
        <!-- Первый экран скрывается, когда данные успешно отправлены и показывается экран благодарности -->
        .popmechanic-success #popmechanic-form .popmechanic-main {
            display: none; }
        
        .popmechanic-success #popmechanic-form .popmechanic-thankyou {
            display: block; }
        
<!-- Аналогично скрываются все экраны кроме первого в многоэкранной форме -->
        #popmechanic-form .second-screen {
          display: none;
        }
        

Пример

В качестве примера опишем стили кнопки формы

<!-- Общие стили кнопки для ПК, мобильного вида -->
        #popmechanic-form .popmechanic-button {
        width: 110px;
        height: 30px;
        background: #4fad00;
        color: #fff;
        font-size: 13px;
        font-weight: 700;
        display: flex;
        align-items: center;
        justify-content: center;
        border-radius: 30px;
        cursor: pointer;
        outline: none;
        border: none;
        text-decoration: none;
        -webkit-transition: all .3s;
        transition: all .3s;
        }
        <!-- Изменение стиля кнопки при наведении -->
        #popmechanic-form .popmechanic-button:hover {
        color: #4fad00;
        background: #fff;
        }
        <!-- Изменение стиля кнопки при отрисовке на мобильном устройстве -->
        .popmechanic-mobile #popmechanic-form .popmechanic-button {
        width: 120px;
        height: 25px;
        font-size: 12px;
        line-height: 10px;
        }
        
Как использовать попапы, не раздражая клиентов. Какие ошибки совершают бренды при создании попапов и как сделать, чтобы этот инструмент приносил пользу и клиенту, и компании.