Подтвердить что ты не робот

Если пользовательский интерфейс отображает действия, которые недоступны?

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

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

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

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

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

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

До вчерашнего дня я бы даже не задал вопрос и пошел бы прямо к варианту 2 (Graying out), однако, наблюдая, как пользователь пытается многократно нажать на серое изображение и в конце концов спросить меня, почему они не могут щелкнуть на кнопке я не уверен, что лучший вариант.

Что чувствуют люди с удобством использования и опытом тестирования пользовательского интерфейса?

4b9b3361

Ответ 1

Мой подход (и рекомендация) заключается в том, что кнопка недоступна в соответствии с вашей опцией # 2.

Когда пользовательский интерфейс разрежен и достаточная недвижимость доступна, с встроенными (передними) контекстными подсказками (например, подход вопроса, предложенный Фредди, рядом с кнопкой, детализирующий проблему в строке, например, всегда отображающий при отключенной кнопке "Нет пользователей для удаления. Добавьте некоторые из них, перейдя по ссылке (link) на эту вкладку (/link)!" ).

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

Вышеизложенное должно заботиться обо всех (типичных, а также патологических) случаях. Он сочетает в себе преимущества ваших # 2 и # 3 вариантов, надеюсь, ни один из недостатков.

Ответ 2

Раймонд Чен (из старой знаменитости) дает хорошие рекомендации:

Когда вы отключите параметр и когда его удалите?

Из записи в блоге:

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

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

Ответ 3

Мне всегда учили, что удаление объектов из пользовательского интерфейса было гораздо более смущающим для пользователя, чем отключение. Не создавайте для 0,01%, которым не могут помочь!

Ответ 4

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

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

Изменение насыщенности цвета является наиболее распространенным подходом к представлению отключенного состояния. Это заставляет элемент пользовательского интерфейса исчезать в фоновом режиме.

Ответ 5

Предлагаю вариант 1). Я скажу вам, почему.

Вариант 3) (Худший) Msgstr "Не показывать вариант удаления вообще" Это даже не позволяет пользователю понять, что существует даже такая функция. Так что это худший способ отрицать.

Вариант 2) Msgstr "Показать опцию удаления, но серый цвет"

Лучше, чем 3), но пользователь может продолжать задаваться вопросом, почему ему отказывают в функциональности. Он также может начать думать, что он не является привилегированным пользователем и ему не хватает прав.

Вариант1) "Всегда указывайте опцию удаления, но предупреждайте пользователя, когда он выбирает, что опция недоступна, потому что есть активные контракты".

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

Ответ 6

В этом конкретном случае вариант 2 - лучший выбор. При принятии решения о том, следует ли что-то скрывать или отключить, общее правило, которым я следую, следующее:

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

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

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

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

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

Ответ 7

Для этого сценария используйте 2, но добавьте вопросительный знак, кроме того, это объясняет, почему он отключен. Обновление 1: Обратите внимание, что это дает вам возможность быть действительно понятным, когда он будет активным/отключенным.

Ответ 8

Я предпочитаю показывать параметры, но серые. Вот почему. Если действие иногда доступно, а иногда нет, пользовательский интерфейс запутывается. Мне кажется, что магия может иногда видеть удаление, а иногда и нет. С другой стороны, если он неактивен, по крайней мере, я знаю, где искать этот вариант позже.

Ответ 9

Просто примените Принцип наименьшего сюрприза: не делайте ничего неожиданного.

Вариант greyed out явно означает, что он недоступен в текущем контексте.
Отсутствующий вариант может означать что угодно.

Одна из областей, где вы могли бы рассмотреть возможность полного удаления элементов пользовательского интерфейса из виду, будет заключаться в том, что ваше приложение предоставляет несколько уровней доступности (например, Novice, Intermediate, Expert) или когда учетные записи пользователей выполняют некоторые роли безопасности, где пользователь гостя 't означало доступ к полному интерфейсу, например, к пользователю-диспетчером.

Ответ 10

Иногда удаляются кнопки панели инструментов, но обычно.

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

Ответ 11

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

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