Навигация по ссылкам в списках :: Хранитель заметок

noteskeeper.ru

Персональный журнал для заметок Владимира Кузнецова

Навигация по ссылкам в списках

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

Список авторов статей в блоге

Каждый элемент в списке содержит имя, фотографию и краткую биографию автора. Имя и фотография обрамлены ссылками на архив статей этого автора.

<ul class="authors">
  <li class="author">
    <div class="author-userpic">
      <a class="author-archive-link" title="Vicki Moyes" href="/author/vicki/">
        <img class="author-pic photo" alt="Vicki Moyes" src="/img/users/vicki-moyes.jpg">
      </a>
    </div>
    <p class="author-title">
      <a href="/author/vicki/" class="author-title-archive-link">Vicki Moyes</a>
    </p>
    <p class="author-bio">Director of Moyes Gliders.
      Organizer of annual Forbes competition.</p>
  </li>
</ul>

Используем tabindex=-1

Элементы, обрамленные ссылками

При переключении фокуса с помощью клавиши «Tab» пользователь каждый раз сначала попадает на ссылку с фотографии, затем на ссылку с имени.

Проектируя интерфейс, первостепенно внимание уделяется пользователям, работающим с мышью или touch-интерфейсом. Кому-то из них привычнее и удобнее кликать по картинкам, а кто-то кликает только по явно обозначенным ссылкам. Поэтому удалить ссылку, обрамляющую фотографию, нельзя. Но зато можно сделать так, чтобы она не участвовала в последовательности переключения фокуса с клавиатуры. Для этого добавим ей атрибут tabindex="-1".

Переходы только по именам авторов

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

Одна ссылка

В этом примере два находящиеся рядом объекта (фотография и имя автора) должны вести на одну и ту же страницу. Технически их можно обернуть одной ссылкой. В HTML5 внутри строчного элемента a могут находиться как строчные, так и блочные элементы.

<a href="page.html">
    <div><img src="img1.jpg" alt="Page image"></div>
    <p>Page title</p>
</a>

Фрагмент кода валиден на 100%, только если используется в HTML5 документе.

Коментарии к заметке 3

  1. GreLI, 02 дек 2011

    В данном случае совсем не сложно сделать фотографию и текст одной ссылкой. И я не вижу причины почему бы именно так не сделать.

  2. Александр Карпинский, 02 дек 2011

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

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

    Александр, правда что-ли? Я всегда стараюсь такого избегать. Раз элемент строчный (или «строковый», как правильно?), то не место внутри него всяким блочным элементам.

Добавить комментарий

Блоки кода в строке заключайте в тег <code>.
Чтобы сохранить форматирование блока кода используйте тег <pre>