Borodean
@Borodean

Семантика текущего пункта меню?

Предлагаю поговорить о «метафизике» — семантике html-верстки.


Давайте предположим, что на неком сайте есть такой блок навигации:

<nav>
  <li><a href='/cards/'>Карты</a></li>
  <li><a href='/money/'>Деньги</a></li>
  <li><a href='/two-barrels/'>Два ствола</a></li>
</nav>


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

Вопрос — как семантически верно сверстать такой пункт меню?


Яндекс предлагает такой вариант:

<li><b class='active'>Деньги</b></li>

Хабрахабр — такой:

<li><a href='/money/' class='disabled'>Деньги</a></li>


Первый вариант «плох» тем, что использует «грязный» прием в виде элемента b, второй — тем, что оставляет пункт меню рабочей ссылкой.
  • Вопрос задан
  • 4024 просмотра
Пригласить эксперта
Ответы на вопрос 6
taliban
@taliban
php программист
Второй вариант более предпочтительный, и не потому что в первом хак, а потому что, вдруг, я захочу кликнуть по ссылке еще раз? Зачем ее убирать? Просто нужно показать где я сейчас нахожусь, но ссылки все оставлять на местах.
Ответ написан
@habrauser
Никогда не задумывался, нравится когда вот так:
<li><span>Деньги</span></li>
Ответ написан
dom1n1k
@dom1n1k
Я делаю так:
<li class="active">Главная</li>
<li><a href="/products/">Продукты</a></li>
...

Просто, понятно и эффективно.

Иногда внутрь добавляется ещё один span или div — если нужна дополнительная технологическая обертка для каких-то визуальных эффектов. Но это лишь при необходимости, в общем случае без.

Хотя с другой стороны… Честно говоря, я не вижу никакой катастрофы, когда активная ссылка меню ведет на ту же самую страницу. Ну ведет — и что? Это чисто маньяческие придирки, в реальных проектах нередко используются гораздо более «грязные» вещи.
Ответ написан
bezumkin
@bezumkin
Можно менять вот так:

<li><a href='javascript:void(0)' class='active'>Деньги</a></li>
Ответ написан
(согласно правилам хорошего тона)

- тогда еще при наведении на эту "уже не ссылку" сделайте подсказку, мол [Вы, сударь, уже тут]

Но что-то мне кажется это действительно из метафизики и к реальности непременимо (кроме активной страницы XK) ... хотя если так будет делать многие - то пользователи привыкнут.
Ответ написан
ilyaplot
@ilyaplot
PHP программист
Уберите тег , class active лучше назначить элементу , а в css писать li.active {}
Не думаю, что onclick в ссылке подходит, потому что я могу перейти по ссылке с помощью клавиатуры.
Может быть вообще href="#"?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы