Раскрываемые примечания в веб-статье: как оформить их понятно

Раскрываемые примечания помогают оставить основную веб-статью собранной, сохранив рядом дополнительное объяснение, пример или необязательную техническую деталь. Их стоит сворачивать только тогда, когда читатель может понять основной ход мысли без скрытого фрагмента. Понятная подпись, семантическая разметка и заметное состояние блока позволяют углубиться в тему без ловушки для тех, кто пользуется клавиатурой или экранным диктором.
Когда дополнительный материал уместно скрыть
Раскрывающийся блок — это способ управлять глубиной чтения. В обычном состоянии человек видит короткую подпись; активировав её, он открывает подробность на месте. Для веб-статьи такой прием подходит, если основное объяснение самодостаточно, а часть аудитории может захотеть более подробный пример: например, разбор исключения, примечание к термину или альтернативный сценарий.
Проверьте роль фрагмента простым вопросом: «Если читатель его не откроет, сможет ли он правильно понять вывод и продолжить чтение?» Если ответ отрицательный, информация относится к основному тексту. Свернутый обязательный шаг, предупреждение или условие превращает визуальную экономию в пропуск содержания. В таком случае вынесите тезис в абзац, а в блоке оставьте только расширение.
Подходящие материалы — дополнительный пример после общего правила, техническое пояснение для узкой аудитории, необязательная расшифровка сокращения или ответ на частный вопрос. Само название не делает фрагмент второстепенным: если без него меняется смысл инструкции, его нельзя прятать.
Чем раскрываемый блок отличается от сноски и FAQ
Сноска связывает конкретное место текста с примечанием, источником или уточнением; она должна сохранять понятную связь и маршрут возврата. Раскрываемый блок на странице не обязательно привязан к одному слову и может открывать любой вторичный материал. FAQ, в свою очередь, организует самостоятельные вопросы и ответы. Не заменяйте этими блоками структуру статьи только ради компактности.
HTML-элемент <details> представляет раскрывающий блок, а вложенный <summary> задаёт его видимую подпись. HTML Standard описывает именно дополнительную информацию, которую посетитель может показать или скрыть. В стандарте отдельно сказано, что <details> не подходит для сносок и не должен подменять вкладки или меню. Это ограничение полезно как редакционное правило: выбирайте элемент по функции, а не по внешнему виду.
Напишите подпись как обещание содержания
Короткая подпись — единственная часть закрытого блока, которую читатель гарантированно видит. Она должна называть вопрос или конкретный дополнительный материал, а не действие интерфейса. «Пояснение к исключению: когда действует правило» информативнее, чем «Подробнее»; «Пример расчёта для трёх абзацев» полезнее, чем «Открыть».
Хорошая формулировка отвечает на два вопроса: какую пользу даст открытие и кому это пригодится. При этом подпись не должна пересказывать весь скрытый фрагмент или обещать то, чего внутри нет. Если внутри технический пример, назовите его примером. Если там один частный случай — обозначьте границу, например «Для старых браузеров» или «Если в тексте есть две языковые версии».
Сравните пары:
- «Развёрнутый ответ» → «Почему в этом примере знак остаётся у числа».
- «Дополнительно» → «Вариант для узкой колонки».
- «Показать» → «Какие данные включить в подпись к графику».
После написания временно прочитайте только подписи, без скрытых частей. Если они звучат как последовательность пустых кнопок, переделайте их. Человек, сканирующий страницу, должен отличать один блок от другого и решать, стоит ли тратить на него время.
Используйте семантическую разметку
Нативная HTML-разметка сокращает число самодельных состояний. Минимальный вариант может выглядеть так:
<details>
<summary>Пример: как меняется правило в узкой колонке</summary>
<p>Здесь находится дополнительное объяснение.</p>
</details>Без атрибута open подробность изначально закрыта; если добавить open, она сразу отображается. Атрибут булевый: запись open="false" всё равно означает открытое состояние, потому что атрибут присутствует. Этот нюанс легко пропустить, если состояние генерирует шаблон или CMS.
Внутри <details> ставьте один <summary> первым дочерним элементом, а после него — содержимое, которое раскрывается. Внутри скрываемой части могут быть обычные блочные элементы: абзацы, списки, ссылки или иллюстрация с подписью. Не вкладывайте в заголовок сложный интерактивный интерфейс. Чем короче и предсказуемее подпись, тем проще понять функцию элемента.
Если проект уже использует собственную систему компонентов, проверьте её HTML-вывод: иногда визуальная кнопка сделана из <div> или <span> и состояние держится только на JavaScript. Для обычного раскрытия это добавляет обязанности — нужно вручную обеспечить фокус, клавиатурную активацию, состояние и связь между управляющим элементом и содержимым. Нативный <details> стоит рассмотреть первым, если сценарий действительно является простым раскрытием.
Оформите типографику открытого и закрытого состояния
Пусть подпись визуально отличается от окружающего абзаца, но сохраняет стилистическую связь со статьёй. Используйте устойчивый размер основного текста, достаточную высоту строки и ясный вес начертания. Маркер раскрытия должен быть заметен рядом с подписью; не полагайтесь только на цвет, чтобы показать, что это интерактивный элемент.
Открытое состояние должно выглядеть как продолжение материала, а не как новая карточка, вклеенная в страницу. Оставьте внутренний отступ, отделите содержимое от подписи и выдержите один ритм абзацев. Между блоком и соседним текстом нужен видимый интервал, чтобы при раскрытии границы не сливались. Если пользователь открывает сразу несколько пояснений, страница не должна превращаться в цепочку одинаковых рамок без смысловой иерархии.
Цвет фона может обозначать вторичность, однако текст внутри должен оставаться читаемым. Не уменьшайте кегль настолько, чтобы подробность выглядела примечанием мелким шрифтом: посетитель сам решил прочитать её. Маркер, контраст подписи и линия или фон должны работать вместе. В закрытом состоянии показывайте ясную подпись; в открытом — добавляйте простой знак изменения состояния, а не полагайтесь лишь на анимацию.
Проверьте доступность и поведение
Нативный элемент раскрывается и закрывается браузером при активации его подписи. Но полагаться только на внешний вид по умолчанию нельзя: проверьте клавиатурное управление, заметный индикатор фокуса, контраст и то, что подпись читается отдельно от пояснения. В руководстве MDN по <details> описаны открытое состояние, атрибут open и событие toggle; страница WAI-ARIA APG о паттерне disclosure показывает общую логику раскрытия и клавиатурную активацию.
Проверяйте реальный результат, а не только исходный код. Установите фокус клавишей Tab и убедитесь, что управляющая подпись получает хорошо видимую рамку или иной маркер. Активируйте её с клавиатуры; откройте и закройте блок повторно. Проверьте, что следующий элемент фокуса идёт в ожидаемом порядке и что длинное содержимое можно прочитать, не теряя место на странице.
Не удаляйте стандартный маркер, пока не добавили равнозначный визуальный сигнал. Иконка плюс/минус или стрелка может быть создана CSS, но её направление и контраст должны работать в обоих состояниях. Если добавлено поведение на JavaScript, протестируйте его при отключённом скрипте или предусмотрите понятный базовый HTML-результат.
Для группы связанных пунктов HTML допускает атрибут name: раскрытие одного элемента группы закрывает другой. Это может быть удобно для набора коротких альтернатив, но неудобно, если человек хочет сравнить два пояснения одновременно. Не превращайте name в автоматический выбор без редакционной причины. Если нужен аккордеон, сначала решите, действительно ли взаимоисключающие состояния помогают читать статью.
Подготовьте публикацию по шагам
Перед публикацией пройдите короткий редакторский маршрут:
- Найдите места, где дополнительная информация замедляет основной ход статьи, но не нужна каждому читателю.
- Проверьте, что основной текст сохраняет смысл без закрытого фрагмента.
- Составьте подпись, которая называет скрытую пользу, а не команду «нажмите».
- Ограничьте каждый блок одной понятной темой и не объединяйте несколько несвязанных пояснений.
- Разметьте блок семантически и задайте начальное состояние только там, где открытие заранее не требуется.
- Настройте типографику и отступы отдельно для закрытого и открытого состояния.
- Проверьте мышью, клавиатурой и, если доступно, экранным диктором на странице после публикации.
Практический пример: в статье о правилах набора основное правило остаётся в абзаце. После него находится закрытый блок с подписью «Пример: что происходит в узкой колонке», а внутри — короткий текст и один наглядный фрагмент. Читатель получает ответ сразу, а верстальщик открывает подробность по необходимости. Если приходится прятать само правило, структура раздела требует переработки.
Частые ошибки
Прятать обязательное содержание. Это заставляет читателя угадывать, что ему нужно открыть, и особенно мешает при последовательном выполнении инструкции. Вынесите условие, вывод или важный шаг в основной поток.
Писать одинаковые подписи. Несколько элементов с названием «Подробнее» не сообщают, где именно находится нужная информация. Назовите каждый блок по содержанию и проверьте список подписей без контекста.
Стилизовать закрытый блок как статическую плашку. Если маркер и визуальное состояние не указывают на интерактивность, люди могут не заметить раскрытие. Сохраняйте понятный символ управления, контраст и фокус.
Делать блок слишком длинным. После открытия читатель может обнаружить целый второй раздел, которому место в статье. Оставьте один пример или пояснение; длинный дополнительный материал оформите как обычный раздел с заголовком.
Использовать <details> для сносок, вкладок или меню. Внешне эти элементы могут быть похожи, но у них разные задачи. Сноска связана с конкретным фрагментом, вкладки переключают панели, меню ведёт по разделам. Выберите разметку по смыслу.
Убирать фокус ради чистого макета. Управляющий элемент остаётся интерактивным и для клавиатурной навигации. Сохраните видимый индикатор, который не перекрывается соседними стилями темы.
Частые вопросы
Можно ли использовать <details> для FAQ?
Можно, если каждый вопрос представляет собой самостоятельный пункт, а короткая подпись точно называет вопрос. При этом не скрывайте ответ, который нужен для понимания основной статьи. Если FAQ должен быть заметен как раздел публикации, сохраните заголовок раздела и оформите доступный список вопросов, а раскрытие используйте как способ экономить вертикальное место.
Нужно ли добавлять aria-expanded к <summary>?
Для нативного <details> сначала используйте его собственную семантику и не дублируйте состояние без причины. Сверьте итоговую реализацию с актуальной документацией браузеров и протестируйте её с нужными вспомогательными технологиями. Самодельный disclosure на кнопке потребует корректно обновлять aria-expanded вместе с видимостью связанного содержимого.
Должны ли все блоки быть закрыты при загрузке?
Нет. Укажите open для фрагмента, который важно показать сразу или который служит наглядным образцом поведения. Все остальные закрывайте только если отсутствие текста не мешает получить основной ответ. Решение лучше принимать по чтению страницы, а не по привычке сворачивать каждый FAQ.
Можно ли анимировать открытие?
Можно добавить визуальный переход, но сначала проверьте, что изменение состояния понятно без движения. Учитывайте настройки уменьшения анимации и не задерживайте появление содержимого настолько, чтобы пользователь принимал его за неработающий элемент. Нативное раскрытие и читаемый маркер важнее эффекта.
Подходит ли раскрываемый блок для важного предупреждения?
Обычно предупреждение должно быть видно до того, как человек совершит действие, поэтому его основную формулировку оставляют в тексте. Внутри блока можно разместить подробное объяснение, примеры или редкое исключение. Не прячьте информацию о последствиях только ради компактности.
Что проверять, если пользователь не находит текст через поиск по странице?
Проверьте поведение браузерного поиска и тестируйте страницу в открытом и закрытом состоянии на целевых браузерах. Дайте читателю заметные подписи и обеспечьте доступ к раскрытию с клавиатуры, не предполагая, как поиск ведёт себя в каждом сочетании браузера и состояния. Для критичной информации не полагайтесь на поиск как единственный путь обнаружения.
Итог
Раскрываемое примечание полезно, когда даёт читателю выбор глубины, а не скрывает ответ. Оставьте основной тезис на виду, назовите содержание подписи, используйте <details> и <summary> для простого раскрытия и проверьте состояния, фокус и типографику. Если вы готовите собственный шрифт для сайта, Fontgenerator поможет пройти путь от шаблона до цифрового файла; сначала проверьте, как начертание читается в обычном тексте и в коротких подписях интерактивных блоков.