S-WEBS24

Битрикс24

CRM, процессы и приложения для вашей компании

Вернуться к списку Вернуться к статьям
Статьи

Меню каталога с пятью уровнями: как разделить переход по ссылке и раскрытие ветки

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

Пять уровней меню
Учебная схема по шагам статьи; реальные клиентские данные не использованы.
Стрелка раскрывает, название открывает Учебная сцена. Действия разделены: ветка раскрывается без перехода, а название ведёт на страницу категории.

Когда пять уровней действительно нужны

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

Учебный каталог построен как «Оборудование, Приводы, Электрические, Компактные, Специальное исполнение». Человек может захотеть открыть любой из этих разделов, а не только последний. Значит, нажатие по названию нельзя безусловно заменить раскрытием. Иначе родительская категория существует, но через меню недоступна. Обратная ошибка возникает, когда вся строка ведёт по ссылке и посетитель не может раскрыть детей на телефоне.

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

Два действия в одной строке

Название раздела обычно остаётся ссылкой, а стрелка служит отдельной кнопкой раскрытия. Их области не должны перекрываться. У кнопки есть доступное название, включающее смысл действия и при необходимости название ветки. Визуальная стрелка сама по себе не объясняет назначение человеку со скринридером. После раскрытия состояние кнопки должно отражать, что ветка открыта.

Если продукт выбирает другую модель, например первое нажатие раскрывает, а отдельная строка «Все товары раздела» открывает категорию, её нужно сделать очевидной и последовательной на каждом уровне. Не стоит смешивать две модели в разных ветках. Пользователь переносит ожидание с одного пункта на другой, поэтому случайная разница поведения воспринимается как поломка даже при технически рабочих ссылках.

ОбластьОжидаемое действиеЧто не должно происходить
Название разделаОткрыть страницу разделаСлучайное раскрытие вместо перехода
СтрелкаПоказать дочернюю веткуПереход на родительскую страницу
Кнопка возвратаВернуть предыдущий уровеньЗакрыть всё меню без причины
Закрытие менюВернуть к страницеПотерять фокус в скрытой области

Обработчики событий не должны надеяться только на остановку всплытия без проверки итоговой разметки. Вложенная кнопка внутри ссылки создаёт неоднозначную интерактивную структуру. Лучше спроектировать соседние элементы с отдельными ролями. Приёмка подтверждает, что клик, касание и клавиатурная активация вызывают одно и то же обещанное действие.

Наведение мыши не заменяет открытие

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

При этом нельзя делать меню зависимым только от наведения. Устройства с касанием, клавиатура и некоторые способы управления его не воспроизводят. Открытие кнопкой должно работать самостоятельно. Наведение рассматривают как дополнительное удобство, а не как единственный механизм. Состояния после клика и после наведения не должны спорить: закрытие одного не должно мгновенно отменять намеренно открытое другое.

Если меню показывает несколько колонок, нужно видеть, какая ветка активна. Цвет или индикатор помогают, но не должны быть единственной подсказкой. Название текущего раздела и последовательность колонок должны оставаться читаемыми. В учебной проверке используют несколько соседних веток с похожими названиями, чтобы убедиться, что посетитель не теряет контекст на четвёртом уровне.

Телефон требует собственного маршрута

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

При переходе вниз сохраняют положение предыдущего уровня. Возврат к длинному списку не должен каждый раз начинаться с его начала, если это мешает выбору. Однако хранить состояние следует ограниченно: после закрытия меню и открытия на другой странице политика может быть иной. Её определяют явно, чтобы случайное сохранение старой ветки не выглядело ошибкой.

Длинные названия должны переноситься, а не перекрывать стрелку. Размер области нажатия проверяют на реальном по длине учебном дереве. Нельзя считать кнопку удобной только потому, что её иконка выглядит достаточно крупной. Важно, куда попадает касание рядом с границей ссылки. В приёмке отдельно нажимают название и стрелку, включая крайние точки их областей.

Как хранить дерево в административной части

Редактору нужны родительская связь, название, адрес, порядок и видимость. Если пункты связаны с категориями каталога, полезно выбирать сущность, а не копировать URL вручную. Тогда перенос раздела можно обработать согласованно. При этом меню не обязано один в один повторять структуру базы: редакционные группы и внешние ссылки могут иметь собственные правила, которые нужно отделить от товарных разделов.

Сохранение родителя требует защиты от циклов. Пункт не должен становиться своим потомком. Если источник дерева импортируется, проверяют и повреждённые связи: отсутствующий родитель, повтор записи и превышение поддерживаемой глубины. Публичный вывод не должен зависать из-за одной неправильной ветки. Ошибка должна быть видна редактору, а безопасное поведение согласовано заранее.

Порядок соседних пунктов должен быть устойчивым. При одинаковой сортировке нужен дополнительный критерий. Редакторский предпросмотр показывает итоговую последовательность, включая скрытые пункты отдельным способом. Если видимость родителя выключена, нужно определить судьбу детей: скрывать всю ветку, переносить их выше или запрещать такую комбинацию. Молчаливое решение шаблона может сделать важные разделы недоступными.

Скрытие пункта и доступ к странице

Удаление ссылки из меню не ограничивает доступ к самой странице. Если раздел должен быть закрыт для определённой группы пользователей, это отдельная проверка прав на сервере. Меню лишь отражает доступное действие. Нельзя считать коммерческие материалы защищёнными потому, что ссылка не видна в шапке. Прямой URL, поиск и другие блоки могут продолжать открывать страницу.

Обратная ситуация тоже важна: меню не должно предлагать недоступный раздел без понятного основания. Если доступ зависит от авторизации, проверяют гостя и пользователя нужной группы. Кэш меню должен учитывать принятую модель различий. Общий сохранённый вариант не должен показывать одному посетителю ветку другого, если это нарушает ожидаемую видимость.

Для многосайтовой установки дополнительно проверяют принадлежность ссылок витрине. Одинаковое название категории не означает один адрес. Редактор может случайно выбрать раздел другого сайта из общего списка. Фильтрация выбора и серверная проверка сохранения помогают обнаружить это до публикации. В учебных изображениях используют нейтральные разделы, без настоящих клиентских доменов.

Клавиатурная проверка каждого уровня

Начинают с открытия меню без мыши. Фокус должен попадать в видимую область и оставаться заметным. Затем раскрывают ветку, переходят к детям, возвращаются и закрывают меню. Выбранная модель клавиш должна быть последовательной и соответствовать используемым семантическим элементам. Не стоит объявлять обычный список ссылок сложным ARIA-меню без реализации ожидаемого управления.

После закрытия фокус возвращают к кнопке, которая открыла меню, либо другому согласованному месту. Он не должен оставаться на скрытом пункте пятого уровня. При изменении размера окна открытая ветка также требует обработки: настольная композиция может смениться мобильной, и старый активный элемент исчезнет. Такой переход проверяют один раз на подготовленном дереве, а не после каждой CSS-правки.

Проверка включает увеличение текста. Пять уровней уже требуют внимания, а переполненные подписи делают задачу сложнее. Если панель прокручивается, посетитель должен понимать её границы. Закреплённая кнопка возврата не должна перекрывать первый пункт, а нижний край не должен скрывать последнее действие. Реальный маршрут важнее идеально одинаковой высоты колонок.

Как избежать лишней загрузки

Глубокое дерево может содержать много пунктов. Перед оптимизацией оценивают фактический размер и частоту изменений. Небольшой каталог можно отдать целиком, а большой может потребовать поэтапной загрузки. Но поздняя загрузка добавляет состояния ожидания и ошибки. Если ветка не загрузилась, стрелка не должна просто перестать работать без объяснения.

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

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

Набор приёмки

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

После этого редактор меняет название, порядок и родителя одного пункта. Публичное меню должно обновиться по принятому правилу, а недопустимая циклическая связь должна быть отклонена. Если используется кэш, проверяют обычного посетителя после сохранения. Успешный предпросмотр в админке не доказывает, что внешняя страница уже получила новое дерево.

Работа готова, когда глубокая структура остаётся управляемой и каждое действие предсказуемо. Вместе с кодом полезно оставить правило для редактора и короткий маршрут приёмки. Тогда добавление новой ветки не требует заново изобретать поведение стрелки, ссылки и возврата на каждом уровне.

Один маршрут тремя способами управления

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

ШагСмысл действияЧто сохранить
Название родителяПерейти в разделПравильный URL
Стрелка родителяРаскрыть детейКонтекст ветки
Пятый уровеньВыбрать глубокую категориюПонятное название
ВозвратПодняться на уровеньПоложение и активная ветка
ЗакрытиеВернуться к страницеДоступный фокус

После этого редактор скрывает один родительский пункт. Если политика скрывает всю ветку, ни один потомок не должен остаться в мобильном массиве. Если предусмотрен перенос детей выше, он должен быть явным и сохранять порядок. Такой опыт проверяет общность данных двух представлений. Одной проверки отсутствия текста в настольной шапке недостаточно.

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

Смежная тема разобрана в материале Большой интернет-магазин: каталог, поиск и ассортимент.

Вопросы по теме

Как посетителю открыть вложенный раздел, не потеряв переход к самой категории?

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

Документация и источники