Hover one element, and change another (without using Javascript)(悬停一个元素,然后更改另一个元素(不使用 Javascript))
问题描述
我有一个嵌套的 CSS 菜单,我无法显示子菜单.
I have a nested CSS menu that I can't get the submenus to come up.
我从 一个列表分开获取代码.该站点上的示例运行良好,但由于我的页面上有 2 个 CSS 导航菜单,我必须将我的 HTML 元素放在不同的 CSS 类中.
I took the code from A list apart. The example on that site works perfectly fine, but since I have 2 CSS navigational menus on my page, I have to put my HTML elements in different CSS classes.
这是我的代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<style type="text/css">
ul#lvl1 {
margin:0;
padding:0;
list-style:none;
width:150px; /* Width of Menu Items */
border-bottom:1px solid #ccc;
}
li.lvl1 {position:relative}
ul.lvl2 {
position: absolute;
left: 149px; /* Set 1px less than menu width */
top: 0;
display: none;
}
/* Styles for Menu Items */
li.lvl1 > a {
display: block;
text-decoration: none;
color: #777;
background: #fff; /* IE6 Bug */
padding: 5px;
border: 1px solid #ccc;
border-bottom: 0;
}
/* Fix IE. Hide from IE Mac */
* html.lvl1 > ul > li {float:left;height:1%}
* html.lvl1 > ul > li > a {height:1%}
/* End */
li.lvl2 > a:hover { color: #E2144A; background: #f9f9f9; } /* Hover Styles */
li.lvl2 > a { padding: 2px 5px; } /* Sub Menu Styles */
a.lvl1:hover ul.lvl2 {display: block} /* The magic */
</style>
</head>
<body>
<ul id="lvl1">
<li class="lvl1">
<a class="lvl1" href="#">item1</a>
<ul class="lvl2">
<li class="lvl2">
<a class="lvl2" href="#">subitem1</a>
</li>
</ul>
</li>
<li class="lvl1">
<a class="lvl1" href="#">item2</a>
<ul class="lvl2">
<li class="lvl2">
<a class="lvl2" href="#">subitem2</a>
</li>
</ul>
</li>
</ul>
</body>
</html>
现在,当我将鼠标悬停在 1 级的a"上时,2 级的ul"不会出现.有人可以阐明一下吗?我可能遗漏了一些明显的东西.谢谢!
Now when I hover over the "a" on level 1, the "ul" on level 2 won't come up. Can someone please shed some light? I may be missing something obvious. Thanks!
推荐答案
你必须改变你的 CSS 选择器来定位 lvl2 <ul>
,因为它不再嵌套(它是一个兄弟,所以使用 +).
You must change your CSS selector to target the lvl2 <ul>
, since it is not nested anymore (it's a sibling, so use +).
a.lvl1:hover + ul.lvl2 {display: block} /* The magic */
你应该阅读这个css 选择器列表一个>.
或者您可以将鼠标悬停在 lvl1 <li>
上,而不是锚点
Or you could move the hover on the lvl1 <li>
, instead of the anchor
li.lvl1:hover ul.lvl2 {display: block} /* The magic */
这篇关于悬停一个元素,然后更改另一个元素(不使用 Javascript)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:悬停一个元素,然后更改另一个元素(不使用 Javascript)
基础教程推荐
- 我什么时候应该在导入时使用方括号 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 悬停时滑动输入并停留几秒钟 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 动态更新多个选择框 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01