Инструкция по верстке пользовательских поп-апов
Эта инструкция поможет вам сверстать всплывающее окно (поп-ап), 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-left
enpop_position_top-right
enpop_position_bottom-left
enpop_position_bottom-right
enpop_position_top
enpop_position_bottom
enpop_position_left
enpop_position_right
Страницы до/после:
enpop_offer-window
enpop_thanks-window
Цветовые темы:
enpop_color_1
enpop_color_2
enpop_color_3
…
Спецэффекты:
enpop_special-effect_1
enpop_special-effect_2
enpop_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
)enum
color
— цвет темы для предпросмотраclass
— класс цветовой схемы (enpop_color_Х
)
fields
— Настройка динамически добавляемых полей формы
Внимание. Если указать поле inputContainerSelector
, то его содержимое автоматически очистится, и рендериться будут только те поля, которые указаны в настройках.
fieldClass
— класс, с которым добавляется поле вводаinputContainerSelector
— селектор контейнера, в который будут добавляться поляenum
name
— название поля (email
/phone
/firstName
/lastName
)placeholder
— название поля, которое будет видеть пользовательrequired
— обязательно ли поле к заполнению (true
/false
)
positions
— темы оформленияvalue
— позиция по умолчаниюselector
— селектор (ontainer–enpop
)enum
aligment
— позиция (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
)