我正在尝试制作带有子菜单的 CSS 菜单。当我将鼠标移到列表的子元素上时,我希望子菜单出现在该子元素中(如果有的话)。
正如上面可以看到的那样,出现了子菜单,但是当我将光标移动到我用圆圈标记的区域上时,我不希望这种情况发生。这些是填充区域。
这是我的标记:
<ul>
<li><a href="/home">Home</a></li>
<li><a href="#">About Us</a>
<ul>
<li><a href="/mission">Our Mission</a></li>
<li><a href="/vision">Our Vision</a></li>
</ul>
</li>
</ul>
这是CSS:
a { color: #000; text-decoration: none; }
a:hover { color: #A0A0A0; }
ul > li { float: left; padding: 0px 30px; list-style-type: none;
margin: 0px 5px; background-color: #CACACA; }
ul > li:hover > ul { display: inline; }
ul > li > ul { position: fixed; display: none; }
现在这段代码没有问题。正如您在这个小提琴中看到的那样,它可以按我的意愿工作,当我将鼠标移到“关于我们”菜单上时,子菜单就会出现。
但是,我的问题是菜单项中有空格(填充),即使我将鼠标悬停在这些空格上也会出现子菜单。但我希望子菜单仅在我将<a>
元素悬停在<li>
.
为此,我尝试了该代码:
ul > li > a:hover > ul { display: inline; }
而不是现有的:
ul > li:hover > ul { display: inline; }
但它没有用,我没想到因为<a>
and<ul>
是同一个<li>
元素的孩子。
我正在为 CMS 创建模板,因此我不想过多地参与 jQuery 实现,例如为列表元素设置id
s 或es。class
我想用纯 CSS 实现。
而且我将在列表元素之间使用单独的图像,所以我必须使用padding
而不是margin
.
如果我使用的是margin
,这将很容易,因为width
列表元素的 与<a>
元素的width
.
但是在这里,在所有这些例外之后,我需要一些帮助。任何想法都受到高度赞赏。
提前致谢。