刚刚完成设计我的第一个菜单样式左侧导航栏。是否可以使此菜单在没有javascript的情况下悬停下拉效果?我找到的大多数答案都不适用于我,因为我可能使用了错误的代码来构建真实的菜单。
在示例中,类别" Heren armbanden"是主要的类别。当它悬停在" Heren armbanden"时,它下面的6个类别应该下拉。
希望有办法让这项工作成功。欢迎任何建议!
答案 0 :(得分:0)
我道歉,我无法从我目前的位置打开你的例子。使用CSS进行下拉菜单的关键是样式中的Display属性。对于纯CSS下拉菜单,您可以使用
为菜单制作ULul{Disply:none;}
和
UL:hover{display:block;}
答案 1 :(得分:0)
在CSS中下载导航实际上非常简单。但是,您需要对代码进行一些更改。
您的代码的主要问题是带有向下箭头的菜单项(我假设显示下拉列表)与其下拉对应项无关。更具体地说,名为Heren sieraden
的顶级菜单项不包含与子项Heren armbanden
的关系。此外,Schakel armbanden
未包含Heren armbanden
元素。
当我说“包含”时,我的意思是在标记内项目是“在同一级别”(兄弟姐妹)。 CSS无法以这种方式关联对象。相反,你需要嵌套它们,以便你的CSS可以先查看顶部元素,看看你是否将它们悬停在它们上面,然后隐藏它们包含的子菜单。
为了让纯CSS工作,您需要重新构建代码。
其他一些答案已经解释了非常受欢迎的ul
和li
解决方案。它很受欢迎 - ul
元素用作“菜单”,li
元素用作“项目”。以下是一个例子:
(未显示冗余类)
ul.menu
li.item
a
li
a
ul.sub-menu
li.item
a
li
a
li
a
上面,你有ul.menu
。这是您的主菜单。第二个li
元素包含ul.sub-menu
。这是您的子菜单(下拉列表)。
您当前代码的主要问题是a:hover
选择器在这里没用。如果将鼠标悬停在某个链接上,您可以想象出现子菜单,对吗?但是当您将鼠标悬停在链接之外时,子菜单将关闭。这就是您需要使用ul > li > ul
结构的原因。您可以使用div,但ul / li更常见。
关键是不要将:hover
选择器分配给a
元素,而是分配给li
元素。这是因为li
元素包含 a
和ul
元素。因此,无论您将鼠标悬停在链接还是子菜单上,您仍然会将鼠标悬停在li
上。
因此,要使您的下拉列表工作,您需要使用类似的内容:
ul.menu li.item ul.sub-menu { display: none; }
ul.menu li.item:hover ul.sub-menu { display: block; }
/* note: these selectors can certainly be simplified */
现在,当您将鼠标悬停在容器上时,会出现子菜单。
定位子菜单通常是通过为li.item
元素提供相对位置(位置:相对),然后为ul.sub-menu
元素提供绝对位置(位置:绝对值)来完成的。这允许您将子菜单放在菜单项下面。
li.item { position: relative; }
ul.sub-menu {
position: absolute;
top: 100%;
left: 0;
}
上面的CSS会将您的子菜单放在它所在的菜单项的左下角。子菜单将向下扩展到右侧。
答案 2 :(得分:0)
虽然您确实说过您正在寻找一个纯CSS解决方案,但您在评论中表示您不会反对JS解决方案,我将其作为使用Javascript解决问题的一种方法(在特别是,jQuery)。
首先,我创建了一个类menu
,用于包围您的下拉菜单标题和菜单内容。
<div class="menu">
<div class="container25-a">
<div class="links8">Heren armbanden</div>
</div>
<br>
<div class="heren-armbanden">
<div class="container25-a">
<div class="links4">Schakel armbanden</div>
</div>
<div class="container25-a">
<div class="links4">Leren armbanden</div>
</div>
<div class="container25-a">
<div class="links4">Stalen armbanden</div>
</div>
<div class="container25-a">
<div class="links9">Rubberen armbanden</div>
</div>
<div class="container25-a">
<div class="links4">Graveerbare armbanden</div>
</div>
<div class="container25-a">
<div class="links4">Zilveren armbanden</div>
</div>
</div>
</div>
接下来,我创建了一个CSS选择器属性,默认情况下会隐藏类heren-armbanden
。
.heren-armbanden {
display: none;
}
最后,我使用jQuery将监听器添加到menu
类,并在鼠标进入和离开菜单类时更改heren-armbanden
类的可见性。
$('.menu').hover(function () {
$('.heren-armbanden').show();
}, function () {
$('.heren-armbanden').hide();
});
总而言之,您的解决方案如下所示:
编辑:根据要求,以下是如何在点击而不是悬停时执行这些操作:
在要点击的链接中添加其他类或ID:
<div class="links8" id="nav">Heren armbanden</div>
然后,添加一个事件来监听点击:
$('#nav').click(function () {
$('.heren-armbanden').toggle();
});