Глава 5. Дизайн Firefox

Николай (unDEFER) Кривченков

2009-06-06

Mozilla Labs объявила дизайнерский конкурс на замену табов в Firefox. И команда проекта unDE будет участвовать в нём.

В нашей концепции будут использованы многие идеи unDE, и если они не будут реализованы в Firefox, то в том или ином виде они должны быть реализованы в системе unDE.

Начнём с того, что сама по себе идея табов весьма не плоха. И требует скорее не замены, но усовершенствования.

Для начала представим эскиз стартовой страницы Firefox вызываемой при первом запуске:

Эскиз первой страницы Firefox

Это уменьшенные копии веб-страниц расположенных на табах. Но по умолчанию в них только пустота. Я знаю, это очень похоже на технологию "Speed Dial" доступную в последних версиях браузера Opera. Но есть и различия. Если пользователь щёлкнет по одному из прямоугольников (в примере по левому верхнему), то увидит страницу, которую он обычно видит при старте Firefox сейчас:

Эскиз Firefox после щелчка одного из прямоугольников

Единственное отличие -- значок в правой части панели табов. Эта кнопка позволит вернутся к виду миниатюр. Пусть далее пользователь откроет множество табов. Скажем 10 штук:

Эскиз открытых 10 табов в Firefox

На миниатюрах эти табы постепенно заполнят все 9 прямоугольников. Сперва заполнение происходит сверху вниз, а затем слева направо. Чтобы отобразить этот факт на вкладках, сами вкладки располагаются небольшой "лесенкой". Лесенка идущая вниз означает один столбец, а ступенька - подъём таким образом разделяет столбцы в виде миниатюр. Последняя же 10-ая миниатюра добавляется в конец третьего столбца миниатюр:

Эскиз миниатюр открытых 10 табов в Firefox

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

Общий алгоритм расположения миниатюр при открытии новых табов:

  1. Пусть k -- число миниатюр помещающихся в столбце на одном экране. На примерах k=3.
  2. Если в текущем столбце менее k элементов, то новая миниатюра помещается в этом же столбце сразу после текущего.
  3. Если в текущем столбце число элементов >= k, а в следующем -- менее k, то новая миниатюра помещается в следующем столбце в самом верху.
  4. Иначе новая миниатюра помещается в этом же столбце сразу после текущего.

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

Эскиз страниц табов в Firefox

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

  1. Прокрутка. Что сейчас используется для табов в Firefox. Этот доступ к информации удобен исключительно при наличии плавной прокрутки с помощью колёсика мыши на не очень большом объёме информации. Когда объем информации становится очень большим для перехода на большие расстояния желательно наличие полос прокрутки, но в Firefox для табов они отсутствуют.
  2. Постраничный доступ. Который мы сейчас рассматриваем. Здесь условием удобства является мгновенное перелистывание страниц и постоянство расположения элементов на странице при масштабировании. Этот способ хорошо зарекомендовал себя в бумажных книгах. Но так как одна страница текста целиком на экране не помещается из-за низкого разрешения современных дисплеев, а совмещение этих двух способов (когда страница пролистывается прокруткой, но переход к следующей странице происходит кнопкой) ведёт к катастрофе в плане удобства использования, то в современных интерфейсах этот способ практически не применяется.

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

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

Эскиз вложенных табов в Firefox

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

Эскиз панели табов третьего уровня в режиме миниатюр в Firefox

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

На рисунке видно, что название и иконка на обоих табах верхнего уровня поменялось в соответствии с содержимым дочернего элемента. Однако 3x3 элемента одновременно отображаемых на экране может быть мало. Поэтому масштабирование должно увеличивать их количество. При этом рекомендуется, чтобы количество таких элементов не превышало 5x5. Так как 25 табов одновременно отображённых на одной линии ещё терпимо, но увеличение их до 36 может губительно сказаться на возможности выбора их мышью.

Эскиз большого количества миниатюр в Firefox

Помимо возможности выбора табов на панели табов и в миниатюрах, можно предоставить третью возможность -- выбора табов в дереве табов:

Эскиз дерева табов в Firefox

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

По хорошему данная концепция должна бы заменить по функциональности не только табы, но и закладки, а также сохранение страниц (и расширение ScrapBook). Разъясним более подробно:

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

Видеоролик о том, как всё это выглядит в действии доступен:

SourceForge.net Logo