Инструкция по верстке пользовательских поп-апов
Эта инструкция поможет вам сверстать всплывающее окно (поп-ап), CSS-стили которого не будет искажать или конфликтовать со стилями вашего сайта. Вы сможете управлять настройками всплывающего окна в интерфейсе сервиса в разделе «Поп-апы».
В сервисе доступны три типа всплывающих окон:
- fullscreen – по центру экрана;
- line – полоса снизу или сверху экрана;
- small – маленькое угловое окно.
И 2 категории:
- collecting – собирающие
- informing – информирующие
Собирающие (collecting)
Предназначены для сбора пользовательской информации: емейл, телефон, имя и т. д.
Оставляя емейл (и другие пользовательские данные) в поле всплывающего окна, пользователь подписывается на рассылку. После подписки он видит «спасибо-страницу» с подтверждением успешной подписки.
Класс .enpop_thanks-window, который необходимо добавить в родительский блок с id #enpop, отвечает за механику показа «спасибо-страницы». При добавлении одного класса меняется поведение остальных элементов.
Информирующие (informing)
Предназначены для оповещения пользователя о той или иной услуге/акции и т. д. «Спасибо-страницы» для такого всплывающего окна не используют.
Шаблоны для загрузки
В шаблонах всплывающих окон сервиса поп-апов предусмотрена корректная структура и классы, которые можно изменять и дополнять при необходимости. Поэтому для верстки мы рекомендуем использовать именно их.
Пример структуры всплывающего окна
<div id="enpop" class="container--enpop enpop_color_1 enpop_position_bottom-right">
<form class="popup--enpop" data-role="body">
<input class="popup__close-button--enpop" type="button" data-role="close" />
<div class="popup__title--enpop enpop_title">Новости недели</div>
<div class="popup__text--enpop enpop_text">Оставьте емейл и мы вам напишем</div>
<div class="popup__inputs-container--enpop">
<input class="inputs-container__input--enpop" name="firstName" type="text"
placeholder="имя">
<input class="inputs-container__input--enpop" name="email" type="email"
placeholder="емейл">
<input class="inputs-container__input--enpop" name="phone" type="tel"
placeholder="телефон">
<input class="inputs-container__submit--enpop enpop_submit" type="submit"
value="Подписаться">
</div>
<div class="popup__accept-container--enpop">
<p class="accept-container__text--enpop">Нажимая на кнопку, вы соглашаетесь
<a class="accept-container__link--enpop enpop_accept">с ссылкой</a></p>
</div>
</form>
</div>
Требования к верстке
Обязательные:
- Наличие спасибо-страницы (только для собирающего окна!)
- Наличие крестика для закрытия окна
- На все стили поставьте
!important - В начале CSS файла обнулите все стили, которые могут просочиться:
#enpop * {all: initial !important} - Всем классам поставьте модификатор
–enpopдля уникальности стилей - Класс первого контейнера у всех всплывающих окон
.container–enpop. Все темы с цветом, позиционированием и др. необходимо применять к нему - У класса
.container–enpopпоставьте id#enpopи все стили пропишите через него - Не забывайте разницу между
#enpop.container–enpopи#enpop .container–enpop - Для правильной работы всплывающего окна необходимо добавить роли:
data-role='overlay'— блок фона (если есть)data-role='body'— тело всплывающего окнаdata-role='close'— кнопка закрытия всплывающего окнаname='firstName' type='text'— инпут с именемname='lastName' type='text'— инпут с фамилиейname='email' type='email'— инпут с емейломname='phone' type='tel'— инпут с телефономtype='submit'— кнопка отправки формы
- Добавьте модификационные классы к изменяемым значениям у всплывающего окна для идентичности конфигурационного файла:
enpop_title— текст заголовкаenpop_text— основной текстenpop_submit— кнопка подписатьсяenpop_accept— ссылка на соглашение на обработку ПДenpop_accept_container— если есть чекбокс, оборачиваем контейнер с ПД и чекбоксом
- Ссылку на ПДн стилизуйте, обращаясь к
.enpop_accept a(или к другому классу контейнера ПДн), то есть не создавая для этого класс - При верстке контейнера с ПД учитывайте, что он будет скрываться
display:none, потому верхние отступы не задаются, чтобы при скрытии верстка не сломалась - Стандартные темы позиционирования для превью всплывающего окна в платформе:
enpop_position_bottom— для всплывающих окон линийenpop_position_bottom-right— для маленьких всплывающих окон
Желательные:
- Для наименования классов используйте БЭМ
- При создании макета нужно учитывать то, что при адаптации не все элементы получится перестроить, соответственно, они будут скрыты на мобильных
- Продумайте эффект при наведении :hover для кнопок на всплывающем окне
- Разметка границы текстовых блоков позволит контролировать перенос текста. Минимальный объем – 2 строки. Такой объем позволит сохранить межстрочный интервал
- Для собирающего всплывающего кона необходимо предусмотреть поля для ввода емейла, телефона и имени. Любое из этих полей можно отключить при настройке всплывающего окна
Что ещё важно:
- Нельзя использовать платные или кастомные шрифты, мы можем брать только бесплатные из Google Fonts
- При создании макета имейте ввиду, что большинство современных экранов имеют разрешение Full HD 1920×1080
- Если планируется анимация, то лучше обсудить возможность её подключения с персональным менеджером
- Стилизационные темы одинаковы для всех всплывающих окон и приведены ниже
- Изображения для поп-апов предварительно загрузите в хранилище изображений и используйте ссылки на них в верстке
Стилизационные темы
Позиционные темы:
enpop_position_top-leftenpop_position_top-rightenpop_position_bottom-leftenpop_position_bottom-rightenpop_position_topenpop_position_bottomenpop_position_leftenpop_position_right
Страницы до/после:
enpop_offer-windowenpop_thanks-window
Цветовые темы:
enpop_color_1enpop_color_2enpop_color_3
…
Спецэффекты:
enpop_special-effect_1enpop_special-effect_2enpop_special-effect_3
…
Оформление конфигурационного JSON файла
Конфигурационный файл нужен для описания параметров всплывающего окна, которые можно будет изменять, а также для его правильной работы при загрузке в enKod. Заполнить нужно только часть конфига, остальное мы сделаем сами.
Примеры конфигурационных файлов можно найти в шаблонах для загрузки.
type— тип всплывающего окна (fullscreen/line/small)
category— категория всплывающего окна (collecting/informing)
scriptSettings— настройки, которые передаются скрипту. Если эти настройки не добавить, в редакторе нельзя будет выбрать показ спасибо-страницыthanksPageClass— класс спасибо-страницыcontainerSelector— контейнер, к которому нужно добавить класс
settings— общие настройкиpersonalData— настройки ПДshow— показывать ли по умолчанию (true/false)selector— селектор для контейнера с текстом ПД (по умолчаниюenpop_accept)text— текст ПД по умолчаниюhref— ссылка на ПД по умолчаниюcontainerSelector— если ссылка на ПД содержит не только текст, но и другие элементы вроде чекбокса, можно указать их общий контейнер, который будет скрываться, чтобы избежать случаев, когда скрывается текст, а чекбокс остаётся. Поле опционально
custom— настройки всплывающего окнаname— описание поля, что отобразится в интерфейсе при настройке всплывающего окнаselector— селектор для контейнера (по умолчанию'enpop_title/enpop_text/enpop_submit)param— меняемое свойство (textContent/value/innerHTML/style.width)value— значение поля по умолчаниюtype— тип (text)
themes— темы оформленияvalue— цветовая схема по умолчанию (enpop_color_1)selector— селектор (container–enpop)enumcolor— цвет темы для предпросмотраclass— класс цветовой схемы (enpop_color_Х)
fields— Настройка динамически добавляемых полей формы
Внимание. Если указать поле inputContainerSelector, то его содержимое автоматически очистится, и рендериться будут только те поля, которые указаны в настройках.
fieldClass— класс, с которым добавляется поле вводаinputContainerSelector— селектор контейнера, в который будут добавляться поляenumname— название поля (email/phone/firstName/lastName)placeholder— название поля, которое будет видеть пользовательrequired— обязательно ли поле к заполнению (true/false)
positions— темы оформленияvalue— позиция по умолчаниюselector— селектор (ontainer–enpop)enumaligment— позиция (top-left/top-right/bottom-left/bottom-right)class— класс позиции
thanksPage— настройки текста для спасибо-страницыname— описание поля, что отобразится в интерфейсе при настройке всплывающего окнаselector— селектор для контейнера (по умолчаниюenpop_title/enpop_text/enpop_submit)param— изменяемое свойство (textContent/value/innerHTML/style.width)value— значение поля по умолчаниюtype— тип (text)