LanderLab позволяет оформлять квизы визуально, но если вам нужно больше контроля, можно использовать Custom CSS и стилизовать квиз сверх встроенных настроек.
Это полезно, когда нужно тонко поднастроить внешний вид элементов квиза или применить стили, которых нет в редакторе.
Как это работает
LanderLab внедряет ваш CSS в воронку. Он автоматически ограничивается корневым контейнером .ll-quiz, поэтому стили затрагивают только квиз и никогда не влияют на остальную страницу.
Куда добавлять CSS
В редакторе LanderLab откройте Settings > Custom CSS и вставьте свои правила. Каждый селектор, который вы напишете, уже находится внутри .ll-quiz — префикс добавлять не нужно.
Стилизовать сам корневой элемент .ll-quiz (например, background, font-family) нельзя: эти свойства управляются движком тем. Вместо этого используйте дочерние элементы.
Правила ограничения области действия
Весь ваш CSS работает внутри .ll-quiz. Переменные темы (например --colorPrimary) доступны только для чтения: их задаёт движок тем, и переопределить их нельзя. Чтобы изменить внешний вид, пишите обычные CSS-правила для селекторов из этого руководства.
✓ Так делать нужно
✗ Так нельзя — переменные только для чтения
Справочник селекторов
Используйте эти селекторы, чтобы обращаться к нужным элементам. Все они автоматически находятся внутри .ll-quiz.
Разметка и структура
.ll-quiz-step
Все шаги (видимые и скрытые)
.ll-quiz-step[data-active-step=“true”]
Только текущий видимый шаг
.ll-quiz-header
Зафиксированная верхняя область (хедер)
.ll-quiz-footer
Зафиксированная нижняя область (футер)
.ll-quiz-block
Любой блок любого типа
.ll-quiz-block—[type]
Конкретный тип блока (например --text-field)
Поля ввода
.ll-quiz-block__input
Все текстовые поля и select
.ll-quiz-block__input-wrapper
Обёртка (div) вокруг полей ввода
.ll-quiz-block__label
Метки полей
.ll-quiz-block__decorator
Иконки или текст перед полем и после него (prefix / suffix)
Кнопки
.ll-quiz-continue-button
Кнопка Continue
.ll-quiz-previous-button
Кнопка Previous («назад»)
.ll-quiz-submit-button
Кнопка Submit
.ll-quiz-default-button
Обычная кнопка действия
.ll-quiz-button-text
Надпись внутри любой кнопки
.ll-quiz-button-description
Дополнительная подпись внутри любой кнопки
Блоки выбора
.ll-choice-option
Один вариант в multiple choice
.ll-choice-option:has(input:checked)
Выбранный вариант
.ll-choice-option__text
Текстовая метка внутри варианта
.ll-img-choice-option
Карточка варианта image choice
.ll-img-choice-option:has(input:checked)
Выбранная карточка image choice
.ll-choice-label
Метка группы вариантов в блоке выбора
Прогресс и обратная связь
.ll-quiz-progress__fill
Заполненная часть индикатора
.ll-quiz-header__progress-fill
Заполнение индикатора прогресса в хедере
.ll-quiz-block—has-error
Блок, не прошедший валидацию
.ll-quiz-block-error
Текст сообщения об ошибке
.ll-quiz-variable
Динамические переменные в тексте (например, имя)
Поля ввода
У всех текстовых полей, select, textarea и похожих полей одинаковая структура классов. Селектор .ll-quiz-block__input стилизует все сразу, а чтобы настроить отдельные поля, уточните тип блока.
Стилизация всех полей ввода
CSS
Стилизация конкретного блока по ID
ID блока можно узнать из URL при редактировании блока в LanderLab (например, text-field-abc123).
Стилизация prefix / suffix
Метки
Кнопки
Кнопки в LanderLab рендерятся как элементы <a>, а не <button>. Используйте специальный селектор для каждого типа кнопок или стилизуйте все кнопки сразу через общий класс.
Кнопка Continue
Кнопка Previous
Кнопка Submit
Стилизация всех кнопок сразу
Подпись кнопки (description)
Блоки выбора
Варианты multiple choice и image choice можно стилизовать в состояниях по умолчанию, при наведении и при выборе.
Стилизация вариантов
Карточки image choice
Скрыть иконку radio / checkbox
Индикаторы прогресса
Есть два расположения индикатора прогресса: внутри шагов и в хедере. Стилизовать их можно независимо или вместе.
Индикатор внутри шагов
Индикатор в хедере
Адаптивный дизайн
LanderLab использует CSS container queries, а не media queries. Всегда пишите синтаксис контейнера, как ниже: обычные запросы @media внутри контейнера квиза работать как ожидается не будут.
Точка перелома — 490px: всё, что шире, считается десктопом, всё, что уже, — мобильным.
Синтаксис container query
Не используйте @media queries
Вместо @media (...) используйте @container quiz-container (...). Квиз — это компонент-контейнер, и media queries не отражают его реальную ширину.
Состояния и валидация
Когда поле не проходит валидацию, у него появляется класс .ll-quiz-block--has-error. Используйте его, чтобы оформить состояния ошибок в стиле вашего дизайна.
Стили ошибок
Динамические переменные в тексте
В текстовых блоках могут быть живые переменные, например {{firstName}}: они обновляются по мере ввода пользователем. Они рендерятся как элементы .ll-quiz-variable (span).
Готовые примеры
Вставьте любой из них в панель Custom CSS, чтобы быстро начать.
Пример 1 — чистая минималистичная тема
Пример 2 — скруглённая яркая тема
Пример 3 — корректировки макета под мобильные
Классы типов блоков
Используйте эти модификаторы с .ll-quiz-block, чтобы обращаться к отдельным типам блоков.