【发布时间】:2013-07-02 13:40:53
【问题描述】:
我正在尝试使用Superfish jQuery 插件来增强网站上的下拉菜单。但是,当光标在 Firefox 浏览器 (v. 21.0) 中悬停在下拉菜单上时,它不会打开。在 Chrome 和 Opera 中它可以工作。如果没有 Superfish 插件,下拉菜单也可以在带有纯 CSS 的 Firefox 中使用。
当为 Superfish 使用 cssArrows 选项时,箭头不会显示在任何浏览器中(即使使用更多填充)。我不知道这个问题是否与第一个有关。
这是我的标记:
<nav>
<ul>
<li><a href="#">Page 1</a></li>
<li>
<a href="#">Page 2</a>
<ul>
<li><a href="#">Page 2.1</a></li>
<li><a href="#">Page 2.2</a></li>
<li><a href="#">Page 2.3</a></li>
</ul>
</li>
<li><a href="#">Page 3</a></li>
<li><a href="#">Page 4</a></li>
<li><a href="#">Page 5</a></li>
</ul>
</nav>
这是我的 CSS/SASS:
nav {
width: 100%;
float: left;
ul {
display: block;
float: left;
width: 100%;
li {
position: relative;
display: block;
float: left;
a {
display: block;
padding: 14px 14px;
}
/* drop-down */
ul {
display: none;
position: absolute;
left: 0;
top: 100%;
padding: 0;
border: 1px solid #aaa;
border-top-width: 0;
li {
float: none;
a {
padding: 8px 3px;
border-top: 1px solid #aaa;
}
}
}
&:hover,
&.sfHover {
ul {
display: block;
}
}
}
}
}
这是我的 Superfish 电话:
$('nav').superfish();
在 Firefox 中,当我将鼠标悬停在包含二级菜单的 li 标记上时,li 不会得到应有的 sfHover 类。相反,顶级ul 获得分配给它的sfHover 类。然后,当我在该li 标签上按下鼠标左键时,它会获得“sfHover”标签并显示下拉菜单。在 Chrome 和 Opera 中,sfHover 类被分配给正确的元素。
Superfish 插件站点中的示例也适用于我的 Firefox 浏览器,但它们并没有帮助我解决这个问题。我对菜单的 html 标记与这些示例中的几乎相同。
我试过了
- 将 z-index 分配给不同的元素,但它没有帮助(没想到)。现在 页面上的任何元素都没有分配 z-index。
- 在
li和a元素上分配宽度,因为我读过它有 帮助解决了一些问题。 - 使用 Superfish 示例中的样式表,但效果并不好。
- 使用
margin-left: -9999px隐藏下拉菜单,而不是display: none但这没有帮助。 - 在初始化 Superfish 时使用所有选项
- 在
a标签上使用position: relative而不是li标签
我还检查了我的 html 是否有效。
谁能找出问题所在?非常感谢任何建议。
【问题讨论】:
-
可以加个jsFiddle吗?
-
@screenmutt,我敲响了一个小提琴:jsbin.com/okafoz/1/edit 在 FF22 中似乎还不错。
-
感谢两位。小提琴在 FF21 中也适用于我。还有什么可能导致这种情况?
-
如果没有访问您的项目,我们无法解决这个问题。你能在网络上公开它吗?
-
不幸的是我不能。我希望我错过了一些明显会出现在解释或提供的代码中的东西。
标签: javascript html css sass superfish