Раскрывающееся меню

05.02.2009

Когда делаешь на сайте раскрывающееся меню, бывает непонятно, как поступить с узловыми элементами.

Выпадающее меню на сайте

Вот меню с сайта Dell. Как вы думаете, если нажать на «Laptops and Tablets», откроется новая страница? Я бы засомневался.

С одной стороны контекстное меню в Windows учит нас, что на узловые элементы нажимать нет смысла.

Контекстное меню в Windows

С другой — опыт, подсказывающий, что на сайтах иногда нужно кликать по узловым элементам, а также характерный для ссылок курсор.

На сайте Dell меню ведет себя как в Windows. А на сайте Cisco по-другому.

Как быть?

  1. Можно не делать ссылку, при наведении пусть будет курсор-стрелочка. Преимущество подхода: не нужно сооружать страницу промежуточного уровня. Часто от безысходности на ней размещают копию вложенного меню, получается одна из популярных разновидностей мусорных страниц. Плохо, когда содержание сайта создается с целью соответствовать меню. Должно быть наоборот.
  2. Можно делать ссылку. Если сайт сложный, как у Cisco, то агрегирующие страницы уместны. Хорошо, когда у пользователя есть несколько альтернативных возможностей найти, что нужно.
  3. Если вы делаете ссылку, и она ведет не на агрегирующую страницу, а в самодостаточный раздел сайта, то продублируйте ее во вложенном меню. Иначе некоторые пользователи раздел не найдут. Проверено.

Комментарии

Гость, 05.02.2009 01:52

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

Дмитрий Сергеев, 05.02.2009 13:33

Можно в template.php слегка переопределить theme_nice_menu_tree.

Андрей Лазарев, 08.02.2009 12:34

А еще лучше theme_menu_item_link($link), опираясь, например, на глубину пункта меню $link['depth'] или устанавливая специальный href ссылки.

dV, 05.02.2009 12:15

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

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

Часто вижу, что родитель ссылается на своего первого потомка. Я считаю это избыточным, хотя бы из соображений дублирования страницы по 2 разным URL'ам.

P.S. В принципе, проблему избыточности URL'ов можно обойти 301 редиректом.Но я бы все же делал НЕкликабетельным предка, дабы не вводить в заблуждение.

uggallery, 05.02.2009 12:43

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

Дмитрий Сергеев, 05.02.2009 13:29

Мне тоже не нравятся раскрывающиеся меню. Но, как вы точно подметили, иногда лень думать.

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

uggallery, 05.02.2009 13:59

Ну, в общем, из всех указанных причин, я только лень считаю уважительной ;)) Остальное "за отмазку не канают" )) имхо. Не буду объяснять почему, все есть у классиков, ничего нового не скажу.

При желании можно сделать выпадающее меню хотя бы более-менее понятным (знаю как). Но оно будет менее красивым и эффектым. Зато удобным и эффективным. Но кто же будет жертвовать красотой ради какого-то там удобства? ;))

Дмитрий Сергеев, 05.02.2009 14:10

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

uggallery, 05.02.2009 14:46

Форс-мажор, всё понимаю. Если заказчик не слушает слов разума, что тут поделаешь?

SKYNET! MJ, 06.02.2009 14:02

не согласен. выпадающее меню позволяет добраться до цели за один клик.

uggallery, 08.02.2009 12:45

Обманчивая простота. Вы рассуждаете как создатель меню, а не как потенциальный пользователь. Прежде чем сделать этот клик, нужно найти ссылку. А она спрятана в 2-3-х уровнях. Вопрос: откуда пользователь (который на сайте в первый и последний раз) узнает, что ссылка находится там, и что это именно та ссылка которая ему нужна. И это только одна из множества проблем.

Странно повторять все это. Нильсен об этом писал лет десять назад. Всё это не ново.

Дмитрий Зимин, 05.02.2009 22:53

В Windows мы имеем дело с командным меню, а в веб - с меню содержимого. Так как архитектура PC не предусматривает вложенных комманд, то и привычки ожидать действия от узлового элемента у нас нет :) В отличие опять же от веба. Где все - суть страницы с содержимым или команды (возвращающие опять же страницы).

Дмитрий Сергеев, 05.02.2009 23:23

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

И потом, есть ведь и меню программ. File - Edit - View. Там на узловые элементы тоже нажимать нельзя. Но к пункту Help команд мало остается.

Дмитрий Зимин, 07.02.2009 02:02

Вот я как раз про меню. Только не "меню программ", а "меню команд". Там нигде нельзя использовать узловой элемент кроме как в целях навигации :)

А на сайте - навигация по страницам. Отсюда и путаница.
Мне кажется самое безболезненное решение из 2 шагов:
1. На узловые пункты ставить cursor: point.
2. Узловой элемент меню имеет графическую метку: стрелку вправо (как почти во всех OS).

SKYNET! MJ, 07.02.2009 11:39

Да, но раздел все равно будет в хлебных крошках. Т.е. даже не стирая часть пути можно будет туда попасть. Так вот что там выдавать?

Дмитрий Зимин, 11.02.2009 11:54

А я не говорил, что эта страница вообще должна существовать :-)

Артём Курапов, 06.02.2009 00:03

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

Логика программиста :)

SKYNET! MJ, 06.02.2009 14:04

а если 404 отдавать. кто что думает?

Андрей Лазарев, 08.02.2009 12:40

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

SKYNET! MJ, 09.02.2009 19:37

намеренное удаление часть пути наврядли возможно назвать действиями пользователя

uggallery, 08.02.2009 12:57

Ок. Пусть злая судьба заставила нас использовать выпадающее меню. Но зачем использовать много уровней с узловыми элементами? Зачем усугублять? Такое меню повторяет дерево рубрик (каталогов) сайта. Зачем это пользователю? Вспомним другого классика: Алана Купера. Он писал что то вроде: "Плохой интерфейс повторяет логику реализации системы (структура сайта), а не логику пользования." Зачем пользователю древовиднаяя структура? Не используйте её, и проблемы с узловыми элементами просто не возникнет :) Другая фраза Купера: "Программисты чинят то, что не сломано." Это про данный случай.

Ребята, перечитайте Нильсена с Купером. Ей богу же, интересное чтение.

Дмитрий Зимин, 11.02.2009 11:58

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

Пример. Если вы знаете, скажем, как расположен торговый центр относительно сторон света, вам не составит труда найти "западное крыло" здания.

uggallery, 11.02.2009 17:49

Древовидные структуры - это порождение научного образа мысли - ничего естественного. Исследования показывают, что пользователи не хотят ориентироваться, они хотят выполнить свою задачу. И пример очень "жизненный" ))) Сколько простых покупателей, по-вашему, находясь внутри здания без окон, способно четко указать на север? Скольких это волнует? Обычно, у покупателей голова занята другим.

Дмитрий Зимин, 11.02.2009 20:48

Извиняюсь, но бред. Что это за исследования с результатами "пользователи не хотят ориентироваться"? Где не хотят? В каком контексте не хотят? Ссылку на исследование можно?

Порождения научного образа мысли - это комплексные числа и ноль. Повторяю: структуры - естественны. Древовидные - тем более (как самые простые). Обоснование?
Вы в магазин приходите сосики ищете в мясном отделе или в молочном? Вы одежду в кучу сваливаете дома или группируете? А кухонные принадлежности как у вас лежат: ложки с ложками, вилки - с вилками и все это в ящике "столовые приборы"? В библиотеке книги как разложены?

Попробуйте сделать интернет-магазин, скажем, одежды, без древовидной структуры товаров и потерпите крах.