Использование якоря без href только для того, чтобы получить эффект hover? - PullRequest
0 голосов
/ 06 июля 2010

Если вы посмотрите здесь и наведите курсор на «PONUDA», вы получите этот приятный эффект при наведении. Дело в том, что у всех li есть якорь, который имеет значение href, поэтому при нажатии на них открывается какая-то страница. Но так как у меня есть какое-то подменю, отображаемое при наведении курсора на «PONUDA», я не хочу, чтобы оно было связано, но я все еще хочу иметь этот эффект при наведении. Вот почему код такой:

<a>PONUDA</a>

Tbh Я никогда не думал об использовании якоря без значения href, поэтому несколько вопросов:

  1. Насколько эффективен этот метод для использования: зависания состояния якоря? Я знаю, что могу использовать js, но я просто хочу знать, нормально ли это, если вы просто хотите использовать этот псевдо-селектор: hover, так что просто css без js.
  2. А как насчет поисковых систем? Что они делают, когда достигают тега привязки и видят, что у него нет href? Они ожидают, что у каждого тега привязки будет href?

Я знаю, что это глупый вопрос, но любая ссылка на эту "проблему" была бы замечательной!

Ответы [ 5 ]

3 голосов
/ 06 июля 2010

<a href="#"> было бы хорошо.

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

Таким образом, вы охватили все свои базы, а также объяснили себе, почему этот атрибут href присутствует:)

2 голосов
/ 06 июля 2010

Большинство современных браузеров поддерживают использование псевдокласса :hover для тегов, отличных от a, так что вы можете просто применить их к тегам li, и даже в Internet Explorer существует множество обходных путей. Этот обходной путь довольно полезен, если вы не хотите использовать какой-либо Javascript.

Что хорошо в использовании :hover на самих элементах li, на мой взгляд, то, что состояние наведения сохраняется даже при переходе к одному из элементов вложенного списка (то есть элементам подменю). Однако если вы не хотите этого эффекта, я бы предложил придерживаться тегов a (хотя и так, как говорит Пекка).

0 голосов
/ 06 июля 2010
  1. Выглядит правильно для меня, но если вам не нужно, чтобы он работал в IE6 или чем-то еще, раньше, нет причины, по которой вы не могли бы просто использовать span.

  2. Атрибут href является необязательным для a элементов .
    Я не понимаю, почему поисковые системы ожидают существования какого-либо дополнительного атрибута, также в духе либеральности с тем, что вы принимаете. Даже если бы это было обязательно, я бы предположил, что любой приличный поисковик сможет справиться.

0 голосов
/ 06 июля 2010

Вам не нужно, чтобы элемент был якорем, насколько мне известно, класс: hover psuedo-class работает с любым допустимым элементом DOM. Если вас это беспокоит, вы можете добавить href="#" к тегу.

0 голосов
/ 06 июля 2010

вы можете использовать <a href="#">...</a> или <a href="javascript:;">...</a>

без атрибута href является неверной разметкой

...