Интерфейсы

индекс
44,19

Модальность за рамками диалоговых окон

Статью написал jagoterr. Если эта статья наберет +50 то автор получит инвайт на Хабрахабр.

Аза не так давно опубликовал заметку о модальных оверлеях (Здесь и далее по тексту используется именно такой перевод слова overlay, наименее “русский”, но зато не искажающий сути данного понятия). О тех самых диалоговых окошках, которые внезапно выскакивают и блокируют то, что находится позади них. Вы полностью свободны в своих действиях в рамках модального окна, но вы не можете использовать ни один “перекрытый” им элемент до тех пор, пока это окно не исчезнет.

Обычно, когда мы говорим о модальных окнах, мы говорим именно о диалогах, таких как на приведённом ниже фрагменте приложения Google Documents. Критика Аза относится как раз к модальным окнам такого рода. После того, как вы открыли диалог поиска/замены, вы не можете кликнуть мышью нигде, кроме как внутри этого диалога. Это означает, что вы не можете пролистать документ, находящийся под диалогом, или скопировать слово из документа и вставить его в строку поиска, не закрывая диалог.

image



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

image

Вообще говоря, именно тот факт, что это мог бы быть отдельный экран, меня и заинтересовал. В 37 (краткое название компании 37signals, — прим. пер.) мы никогда не используем модальные окна. Панель с настройками — это всегда абсолютно независимый экран приложения. Для исследования разницы между этими двумя подходами, я смакетировал альтернативную версию панели настроек от компании Apple, которая использует всё пространство экрана, как это могло бы выглядеть в любом типичном web-приложении.

image

Интересно сравнить эти две версии. Должен признаться, модальный вариант нравится мне значительно больше. С одной стороны, его значимость более ощутима визуально. С другой — наводит на интересные мысли о навигации.

Модальные окна как альтернатива навигации


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

image

Размер экрана как отражение важности


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

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

Не все модальные окна плохи


В то время как критика Аза по-прежнему справедлива для таких модальных окон, как вышеприведённый пример из Google docs, me.com наглядно демонстрирует, что модальные оверлеи имеют право на существование, как альтернатива принципу навигации между независимыми экранами. Также весьма интересно порассуждать на тему того, какие экраны на самом деле заслуживают полного отдельного окна браузера, а какие из них должны быть выведены в разряд подуровней других экранов. Могу предположить, что когда люди расхваливают приложения за их “десктопность”, этот недостаток навигации между отдельными экранами порождает немало критических замечаний. Apple показал возможность включения “десктопных” принципов в web-приложения без превращения в полный эквивалент “десктопных” систем. Было бы весьма забавно узнать, а где черпают своё вдохновение другие дизайнеры?

От себя добавлю, что у автора есть еще интересные переводы, и готовится в свет еще одна неплохая статья, которую я бы с радостью увидел на страницах Хабра.
+208
20 января 2009, 01:33
37

комментарии (34)

0
SovGVD #
Вот интересно как лучше отделать такие окошки от основного контента:
  • затемнение всего контента за модальным окном
  • тень
  • толстый бордер
  • перекрытие окном 90..95% площади
  • еще как нибудь
+2
GaloGenuS #
ИМХО важно показать, что именно это окно активно, а все остальное недоступно. Не утверждаю, что это единственный правильный способ это сделать, но я обычно делаю так:
Затемненный «задний фон»,
Модальное окно более яркое по сравнению с «задним фоном»,
Бордер средний или толстый, однако четко отделяющий задний фон от модального окна,
Кнопки управления крупные и легко-доступные.

P.S. Никто не сказал, но недопустимо применять прокрутку (scroll) экрана при отображении модального окна.
0
sss #
Леонид, думаю, что если в модальном окне появляется прокрутка, то стоит поискать иной способ отображения такого большого кол-ва элементов, которые ее вызывают. Например, закладки.
0
RazoR_Empire #
Нечто похожее на диалог UAC в Vista, да?
0
ya_goshka #
да
–2
Alaunquirie #
Думаю, тень, но порой (читай — всегда) бесит невозможность что-либо скопипастить, или, что еще хуже, вообще уйти с окна (перейти на другую вкладку в броузере), когда такая красотень выплывает.
+2
nuzgul #
Модальность во многих случаях раздражает, когда нет возможности перейти на предыдущее окно, не закрывая модального окна. Например, когда в модальном окне необходимо использовать информацию основного окна, печатать вручную не хочется, а в буфер обмена заранее скопировано не было.

На мой взгляд, модальное окно должно быть «сворачиваемым», например — т.е. чтобы была возможность добраться до основного контента, не убирая модальное окно полностью (это может быть полезным, если модальное окно содержит текстовые поля, которые необходимо заполнить, например форму регистрации).
0
Alaunquirie #
Правильно подмечено, главное — не делать его неубиваемым. Для мелких нужд они должны быть скрываемыми.
+1
jagoterr #
Возможно, ключ к тому, чтобы модальное окно не раздражало отсутствием возможности перейти на предыдущее окно, состоит в том, чтобы такая необходимость была заранее гарантированно исключена? Это сделает модальное окно не только безвредным, но и полезным ;)

Примеры.
1) Попытка закрыть несохранённый файл в текстовом редакторе. Диалог с 3 вариантами: «Сохранить», «Вернуться к редактированию», «Закрыть без сохранения». Других вариантов быть просто не может. Если нет возможности принять решение — вариант «вернуться...» является универсальным (можно посмотреть историю изменений, принять решение о том, стоит ли её сохранять, аккуратно сохранить копию… и т.д.)

2) Поиск в тексте. Конечно он может потребовать обращения к самому тексту. Поэтому это действие никогда не должно порождать модального окна. А только новый элемент в той же рабочей области, в которой вызван поиск.
+1
Alaunquirie #
Поиск в тексте не должен быть всплывающим окном, которое может пропасть из фокуса, и при этом должен оставаться на виду. Хороший пример был приведен — файрфокс 3. При нажатии Ctrl+F снизу выплывает панель поиска, которая не мешает ни коим образом, и пр этом остаётся с пользователем. В опере — не так. Там именно всплывает форточка, которая посреди экрана мозолит глаза.
+12
kossnocorp #
Напишите мне в личку. Думаю ваш друг достоин инвайта.
+4
apple_fan #
Существует мнение, что модальные окна оправданы, лишь когда без решения пользователя никак не возможно продолжить работу.
В десктопных UI это может быть закрытие изменённого документа или принятие какого-то решения, без которого вся функциональность заблокирована.
В веб UI, надо полагать, верно то же самое. Мне кажется, что если пользователь хочет открыть что-то в новом окне (или новом табе), то он непременно должен иметь возможность сделать это. Модальное окно с контентом — это иногда красиво, но, боюсь, не очень дружелюбно.
0
VasilioRuzanni #
Всегда использовали такие вот «лайтбоксы». Визуально и функционально считаю очень удачным решением, поскольку это очень быстро и наглядно как бы «переносит пользователя в другой контекст», косвенно давая понять, как этот новый контекст относится к «основному», над которым он висит. И пользователь не паникует, что «хрен знает куда ушел со своей рабочей странички» и может смело совершить ряд второстепенных действий.
+1
mgetman #
Модальные окна, как мне кажется, идеально подходят для настройки приложения, что и было показано на примере Mobile Me. Во-первых, в таком модальном окне нам вряд ли придется использовать информацию основного окна, а значит не будет проблемы со сворачиваемостью. А во-вторых, создается ощущение десктопности приложения, так как в основном все настройки в них производятся в отдельных окошках.
Автору спасибо за интересный пост. Ждем на хабре. :)
0
Alaunquirie #
Автор уже на хабре.
+2
Johan #
Вообще, исходя из терминалогии обычных десктопных приложений, модальные окна (в отличии от обычных окон) по определению блокируют остальное «пространство» приложения, в этом их смысл.
Но они должны использоваться не везде и не всегда, а в случае, когда от пользователя требуется критическое решение, без которого приложение не сможет продолжать корректно работать.
Так что, на мой взгляд, модальные окна должны использоваться по назначению, в остальных случаях окна не должны быть модальными.

P.S. Если я ошибаюсь в терминологии, прошу простить, я не веб разработчик, однако, мысль, я думаю, ясна.
0
Johan #
Сорри за повторение, не обновил комменты. :(
+1
Ckop #
А я хотел бы отметить поданную автором идею «сворачиваемости модальных окон», Это весьма удобно когда я, как пользователь, имею возможность свернуть что-то выскочившее на меня, продолжить работу с сайтом а потом, если захочу посмотреть, что же там всётаки выскочило. (Стоит обратить внимание что это не относится к моментам, когда окно влияет на основную страничку). Неплохой идей было бы, реализовать нечто наподобии виндовской панели задач, где свёрнутые окна отображались бы. Получится что пользователь попадая на сайт, попадает в уже знакомый интерфейс, скажем я могу менять настройки профиля не переходя со странички поста. Прочитал я про спам, и решил убрать мыло из информации о себе, развернул окошечко, поменял, свернул и читаю дальше.
0
JerryJJ #
Это получится что-то вроде реализации MDI на web-странице.
Идея прикольная :)

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

Так что такой MDI, так же как и модальные «окна» может быть полезен только при грамотном выборе места для применения.
0
jagoterr #
Мне видится в этой идее один мелкий, но критичный для удобства пользователя недостаток. Если «выскочившее» окно допустимо свернуть без ущерба для дальнейших действий, ТО система обязана самостоятельно, без специального действия пользователя, отобразить эту информацию параллельно с основным контентом (т.е. и «окна»-то тут как такового уже не будет). И дать пользователю возможность прореагировать тогда, когда он сочтёт нужным. Пример: запрос о сохранении логина/пароля в firefox 3.х.
0
OLweb #
Мне очень нравится как сейчас в новом Word'e сделано окошко поиска текста. Оно не блокирует содержимое позади себя, да и к тому же, одно окно умеет работать со всем запущенными копиями программы. А чтобы разработать действительно удобный интерфейс, я бы постарался сделать как-то так:
недоступно
0
Alaunquirie #
А-ля Риббон?
+2
SanYOKK #
Или же как поиск реализован в FF или Chrome.
0
OLweb #
в любом случае такой вариант более «юзабл» чем пресловутое модальное окно
0
fleshy #
по поводу приведенного вами примера с me.com: на мой взгляд здесь как раз четко видно различие ежду модальным окном и новой страницей. модальное окно не отрывает пользователя от контекста, он видит то, с чем он работал до выхода этого окна и ожидает что продолжит работу с того же места после его закрытия. С отдельной страницей такого сказать нельзя. Я нажал на кнопку, попал неизвестно куда, и непонятно куда вернусь.
+2
jagoterr #
Отпишусь тут просто как автор этого перевода. Спасибо Alaunquirie за публикацию. Хотя вроде как в накладе он не остался )))

Если кто захочет поставить мне плюсик-другой за труды — я против не буду ;) Но и так всем огромное спасибо за отзывы.

Постараюсь на некоторые комментарии ответить по делу.
0
Power #
Насколько я понимаю, оригинал находится тут: www.37signals.com/svn/posts/1149-modal-overlays-beyond-the-dialog-box. Почему же тогда в посте (графа «автор оригинала») указано www.azarask.in/blog/?
0
Alaunquirie #
fixed
+1
Junior #
Примечательно, что в процессе макетирования альтернативной версии окна настроек автор поменял местами терминальные кнопки: (Cancel, Save) vs. (Save, Cancel)

Даже не представляю как это произошло, по-отдельности кнопки вырезал, что ли… :-)
0
Alaunquirie #
Попахивает некрофилией ) Посту уже дофига времени))
0
Junior #
Я «набегами» читаю Хабр =)
0
Alaunquirie #
А я снова отнекрокомменчу. Когда кнопки находились в первом варианте (модальное окно) внимание обращала на себя угловая кнопка, а когда мы переместили их в общее окно — читать мы снова будем слева напрпво, так что сэйв попадется первой. Юзабилити и все такое.
0
Junior #
Да все немного проще, на самом деле.
В первом варианте окно модальное и больше напоминает приложение. По гайдлайнам Apple commit-кнопки в окнах приложений должны располагаться с правого конца. Во втором варианте окно стало самостоятельной страницей, срабатывает веб-паттерн, в котором принято кнопки располагать в порядке «OK/Cancel» непосредственно по направлению движения взгляда.

Автор так и пишет:
>> как это могло бы выглядеть в любом типичном web-приложении.

Такой паттерн выработался в вебе из-за того, что размеры веб-страниц часто не ограничены по ширине и искать глазами терминальные кнопки становится тяжело.
0
Alaunquirie #
Вполне вероятно, и что самое главное — Логично.

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