Jump to content
  • 0

Наведение на пункт меню


Ylik
 Share

Question

Здравствуйте! Хочу спросить у знающих людей такой вопрос: каким образом может меняться цвет пункта меню при наведении?

Вот, например, простое двухуровневое меню:

<body>

<div id="nav">
<ul>
<li><a href="#">Меню</a>
<ul>
<li><a href="#">Меню</a></li>
<li><a href="#">Меню</a></li>
<li><a href="#">Меню</a></li>
<li><a href="#">Меню</a></li>
</ul>
</li>
</ul>

</body>

Если в стилях написать:

#nav ul li ul li:hover a {
color:#F00;
}

то цвет будет меняться только в пунктах подменю.

А если написать так:

#nav ul li:hover a {
color:#F00;
}

то цвет будет меняться сразу во всех пунктах одновременно.

Скажите, пожалуйста, как решить такой вопрос? Это мое первое html-меню. Спасибо!

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Как это "не как надо"?

Это правило будет применяться к ссылкам, которые являются дочерними (т.е. напрямую вложены) по отношению к li. Остальные ссылки-потомки не изменятся. Вам как-то не так надо?

Да, кстати, небольшие советы по коду.

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

Во-вторых, постарайтесь избегать лишней вложенности селекторов. Например,

#nav ul li ul li:hover a

можно было бы спокойно заменить на

#nav li:hover a

Код будет меньше зависеть от структуры, да и скорость селекторов немного возрастет.

Link to comment
Share on other sites

  • 0

Спасибо за советы!

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

Link to comment
Share on other sites

  • 0

Ну да, подменю ведь является частью родительского li. По-моему, это правильное поведение с точки зрения юзабилити.

Чтобы сделать по-вашему, нужно ловить hover на самих ссылках и изменить правило для отображения подменю:

#nav a:hover {
color: #f00;
}

#nav a:hover + ul,
#nav a + ul:hover {
display: block;
}

Получится что-то вроде этого.

Edited by Alex Shnayder
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy