Перейти к основному содержимому

Изменение оформления анкеты

Анкету, которая будет использоваться в браузере, можно оформить на свой вкус или, например, в корпоративном стиле заказчика с помощью тем оформления или CSS.

Тема

Для создания своей темы оформления опроса перейдите в раздел Темы, который находится в настройках:

Нажмите Добавить:

В блоке Настройки темы необходимо указать название вашей темы, и изменить стандартные настройки SURVEYSTUDIO по своему вкусу. В нижней части формы, в блоке Предпросмотр, вы можете видеть изменения в реальном времени.

Редактор позволяет не только выбирать мышкой цвет из доступных, но и указывать свой цвет в HEX- или RGBA-форматах в поле под палитрой.

С помощью кнопки с круглой стрелкой можно вернуть значение по умолчанию.

После сохранения темы справа от её названия появится кнопка со звездой, с помощью которой можно установить тему по умолчанию для всех опросов. Эту операцию может делать администратор личного кабинета или группа пользователей с правом Назначение стилей аккаунта. Также ваши темы оформления будут доступны в свойствах анкеты или проекта для установки в одном опросе.

При тестировании темы важно учитывать, что любое изменения применяется к опросу с задержкой до 30 секунд.

примечание

Если необходимой настройки в теме нет — можно отправить в техническую поддержку запрос на её добавление.

CSS

Если настроек темы оформления недостаточно, но очень нужно что-то быстро поменять, то можно воспользоваться стилями CSS, которые добавляются в редакторе, открывающимся из выпадающего меню Скрипты редактора анкеты:

Описание свойств и селекторов CSS можно найти в интернете, например здесь, а структуру страниц анкеты можно смотреть в инспекторе браузера.

Примеры

Ниже представлены примеры изменения часто используемых элементов анкеты:

/* Добавление нестандартного шрифта "Exo 2" */
@import url('https://fonts.bunny.net/css?family=Exo+2');

/* Установка шрифта "Exo 2" в качестве основного */
body {
font-family: 'Exo 2', sans-serif;
}

/* Выделение текстов вопросов жирным */
[data-part='question-text'] {
font-weight: bold;
}

/* Выделение комментариев синим цветом */
[data-part='question-comment'] {
color: blue !important;
}

/* Выделение текстов ответов курсивом */
[data-part='answer-text'] {
font-style: italic;
}

Задать стиль можно для конкретного вопроса или ответа:

[data-question-number='12'] [data-part='question-text'] {
font-weight: bold;
}

[data-answer-code='99'] [data-part='answer-text'] {
font-style: italic;
}

Доступные атрибуты

Разметка анкеты содержит data-атрибуты, за которые можно зацепиться собственными стилями. data-part говорит, что это за элемент: текст вопроса, текст ответа, чекбокс, кнопка, ячейка таблицы — у каждого своё значение.

Ниже представлены поддерживаемые элементы анкеты, которые можно использовать в своих стилях CSS. Атрибуты указываются в квадратных скобках.

предупреждение

Не стоит использовать элементы страницы, которые не перечислены здесь. Их работа не гарантируется.

Опрос

Данные для применения стилей:

  • data-part='survey' - опрос целиком
  • data-part='progress' — полоса прогресса
  • data-part='logo' — логотип
  • data-part='footer' — футер (подвал)
  • data-part='alert' — уведомление

Данные, по которым можно ограничить правило:

  • data-project-type — тип опроса:
    • cati — телефонный опрос
    • cawi — веб-опрос
  • data-test-session — присутствует в режиме тестирования анкеты
  • data-progress — тип шкалы прогресса:
    • survey — пройдено / остаток
    • auto-answer — время до автоответа на вопрос
  • data-logo — расположение логотипа:
    • footer — в футере
    • welcome — в вопросе Приветствие
  • data-alert – тип уведомления:
    • error
    • warning
    • success
    • info
  • data-accessibility-mode — присутствует, если включена опция Адаптировать опрос для людей с ограниченными возможностями

Язык интервью (дополнительные квадратные скобки не нужны):

/* Только в тестовом прогоне */
[data-part='survey'] [data-test-session] [data-part='question-title']::after {}

/* Только прогресс опроса, не таймер автоответа */
[data-part='progress'] [data-progress='survey'] {}

/* Только сообщения об ошибках */
[data-part='alert'] [data-alert='error'] {}

/* Только в режиме доступности */
[data-accessibility-mode] [data-part='answer-text'] {}

/* Только для русского языка */
html[lang='ru'] [data-part='answer-text'] {}

Вопрос

Данные для применения стилей:

  • data-part='question' — вопрос целиком
  • data-part='question-title' — номер
  • data-part='question-text' — текст
  • data-part='question-information' — информационный текст
  • data-part='question-image' — картинка
  • data-part='search' — поле поиска по вариантам ответа
  • data-part='answers' — область с ответами

Данные, по которым можно ограничить правило:

  • data-question-number — номер
  • data-question-type-nameтип текстом
  • data-question-typeтип числом
  • data-display-mode — режим отображения:
    • adaptive — адаптивно (по ширине экрана)
    • compact — компактный вид
    • full — полный вид
/* Только у вопроса номер 12 */
[data-question-number='12'] [data-part='question-text'] {}

/* Во всех табличных вопросах */
[data-question-type-name^='table-'] [data-part='answer-text'] {}

/* Только в вопросах с единственным выбором */
[data-question-type-name='single-choice'] [data-part='answer'] {}

Ответ

Данные для применения стилей:

  • data-part='answer' — ответ целиком
  • data-part='answer-code' — код
  • data-part='answer-text' — текст
  • data-part='answer-image' — картинка
  • data-part='marker' — маркер выбора
  • data-part='group-toggle' — кнопка разворота группы ответов

Данные, по которым можно ограничить правило:

  • data-answer-code — код
  • data-marker — тип маркера выбора:
    • radio — один ответ
    • checkbox — несколько ответов
  • data-group-header — заголовок группы
/* Только для ответа с кодом 10 */
[data-answer-code='10'] [data-part='answer-text'] {}

/* Только для ответов в группе с кодом 5001 */
[data-group-code='5001'] [data-part='answer-text'] {}

/* Заголовки всех групп */
[data-part='answer'] [data-group-header] [data-part='answer-text'] {}

/* Маркеты выбора при множественном ответе */
[data-part='marker'] [data-marker='checkbox'] {}

Таблица

Данные для применения стилей:

  • data-part='table' — таблица целиком
  • data-part='row' — строка целиком
  • data-part='row-header' — заголовок строки (первая колонка)
  • data-part='column' — колонка целиком
  • data-part='column-header' — заголовок колонки
  • data-part='cell' — ячейка целиком

Данные, по которым можно ограничить правило:

  • data-row-code — код строки
  • data-column-code — код колонки
  • data-cell-code — код ячейки
  • data-cell-index — позиция ячейки в контейнере, начиная с 1
  • data-view — режим отображения:
    • full — полный вид
    • compact — компактный вид
/* Только для строки с кодом 1 */
[data-row-code='1'] [data-part='answer-text'] {}

/* Только для колонки с кодом 1 */
[data-column-code='1'] [data-part='answer-text'] {}

/* Все ячейки колонки с кодом 5 */
[data-part='cell'][data-cell-code='5'] {}

/* Только ячейка с кодом 5 в строке 3 */
[data-row-code='3'] [data-part='cell'] [data-cell-code='5'] {}

/* Первая ячейка каждой строки */
[data-part='cell'][data-cell-index='1'] {}

/* Маркеры выбора во всех ячейках колонки 5 */
[data-part='cell'] [data-cell-code='5'] [data-part='marker'] {}

/* Таблица в компактном режиме */
[data-part='table'] [data-view='compact'] {}

Шкала рейтинга

Данные для применения стилей:

  • data-part='rating-item' — шкала целиком

Данные, по которым можно ограничить правило:

  • data-value — значение
/* Пятая звезда шкалы */
[data-part='rating-item'] [data-value='5'] {}

Поле ввода

Данные для применения стилей:

  • data-part='field' — поле целиком
  • data-part='input' — область ввода (input или textarea)
  • data-part='open-value' — поле у ответа, строки, колонки
  • data-part='field-error' – текст сообщения об ошибке

Данные, по которым можно ограничить правило:

  • data-field-type — тип поля:
    • text — текст
    • multiline — многострочный текст
    • number – число
    • date — дата
    • time — время
    • datetime – дата и время
    • phone — номер телефона
    • email — адрес электронной почты
    • dropdown — выпадающий список
/* Только числовые поля */
[data-part='field' ][data-field-type='number'] [data-part='input'] {}

/* Области ввода многострочных полей */
[data-field-type='multiline'] [data-part='input'] {}

Состояние

Данные, по которым можно ограничить правило:

  • data-checked — выбран маркер ответа (колонки, ячейки) или шкалы
  • data-blocking — блокирующий вариант ответа
  • data-disabled — заблокированный объект (недоступен для взаимодействия)
  • data-expanded — группа развёрнута
  • data-error — ответ, строка, колонка или поле подсечены как ошибочные

Атрибут состояния появляется только тогда, когда состояние истинно (значения false не бывает). Если состояния нет, нет и атрибута.

/* Выбранная карточка варианта */
[data-part='answer'] [data-checked] {}

/* Недоступные варианты */
[data-part='answer'] [data-disabled] [data-part='answer-text'] {}

/* Строка таблицы с ошибкой */
[data-part='row'] [data-error] {}

Кнопки

Данные для применения стилей:

  • data-part='button' — кнопка
  • data-part='nav' — панель кнопок

Данные, по которым можно ограничить правило:

  • data-button — тип кнопки:
    • next — Далее / Начать (в вопросе Приветствие)
    • back — Назад
    • skip — Пропустить
    • go-first — В начало
    • interrupt — Завершить
    • redial — Перенести звонок (проект Телефонный опрос)
    • script — Выполнить скрипт
    • go-to-question — Перейти к вопросу (в режиме тестирования)
    • save — Сохранить (в редакторе ответа интервью)
    • cancel — Отменить (в редакторе ответа интервью)
    • select-all — Выбрать ответ во всех строках или колонках (таблица с выбором ответа)
    • clear-search — Очистить (в поле поиска ответов)
    • carousel-prev — Назад (в таблице с опцией Отображать таблицу как карусель)
    • carousel-next — Вперёд (в таблице с опцией Отображать таблицу как карусель)
    • captcha-refresh — Обновить картинку капчи
/* Кнопка «Далее» */
[data-button='next'] {}

Если стиль не применился

Часть цветов темы опроса задаётся напрямую в разметке. Такое значение сильнее обычного правила, поэтому именно для этих свойств нужен !important, например:

[data-part='question-comment'] {
color: blue !important;
}

Общее правило: если свойство не применилось, посмотрите элемент в инспекторе браузера. Если значение пришло из атрибута style, добавьте !important.

Ограничение

Длинные списки ответов и большие таблицы отрисовываются порциями: в разметке находится только видимая часть, остальное появляется при прокрутке. Для CSS это не имеет значения — правила применяются к элементам по мере их появления.

А вот скрипт во время показа, который один раз при загрузке обходит страницу и что-то в ней меняет, увидит только отрисованную на тот момент часть.