【问题标题】:Hover state not being activated when user hovers over link in Chrome or Firefox当用户将鼠标悬停在 Chrome 或 Firefox 中的链接上时,悬停状态未激活
【发布时间】:2015-01-15 21:38:01
【问题描述】:

我们创建了这个页面:http://www.sandiego.edu/mysandiego/usd_portal/

在该页面上,有一个导航栏。

<nav class="alignLeft">
                    <ul>
                        <li class="active">
                            <a href="#">Torero Hub</a>
                            <ul>
                                <li class="active">
                                    <a href="#">Welcome</a>
                                </li>
                                <li>
                                    <a href="#">My Academics</a>
                                </li>
                                <li>
                                    <a href="#">My Financial Aid</a>
                                </li>
                                <li>
                                    <a href="#">My Student Account</a>
                                </li>
                                <li>
                                    <a href="#">My Torero Services</a>
                                </li>
                                <li>
                                    <a href="#">My Gadgets</a>
                                </li>
                                <li>
                                    <a href="#">Library</a>
                                </li>
                                <li>
                                    <a href="#">Law Library</a>
                                </li>
                            </ul>
                        </li>
                        <li>
                            <a href="#">Torero Life</a>
                            <ul>
                                <li>
                                    <a href="#">Student Affairs</a>
                                </li>
                                <li>
                                    <a href="#">Clubs and Activities</a>
                                </li>
                                <li>
                                    <a href="#">Graduate Life</a>
                                </li>
                                <li>
                                    <a href="#">Alumni</a>
                                </li>
                            </ul>
                        </li>
                    </ul>
                </nav>

CSS 应该这样开始:

.navBar nav li ul {
    display: none;
    background-color: #FFF;
    border-radius: 0px 0px 6px 6px;
    box-shadow: 0px 8px 10px rgba(0, 0, 0, 0.25);
    left: 0px;
    padding: 10px 0px;
    position: absolute;
    top: 60px;
    width: 300px;
}

如果您将鼠标悬停在标签上,它应该会弹出一个二级导航菜单。它通过检测悬停状态并将 display: none 更改为 display: block 来做到这一点。

.no-touch .navBar nav li:hover ul, .no-js .navBar nav li:hover ul, .navBar nav li ul.active {
    display: block;
}

这适用于我测试过的所有浏览器和操作系统,但一个用户无法让它在 Chrome 和 Firefox 中运行,我真的不知道为什么。它适用于他在 Internet Explorer 中。

当用户将鼠标悬停在 Chrome 或 Firefox 中的选项卡上时,没有任何反应。用户只能通过单击选项卡来显示弹出窗口,而不能仅通过悬停来显示。

用户使用的是 Windows 7 64 位 SP1 和 Chrome 版本 40.0.2214.85 beta-m(64 位)。

我请其他 Windows 7 用户使用 Chrome 和 Firefox 进行测试,这对他们很有效。我们缺少什么?即使我们在元素检查器中右键单击导航栏元素并强制状态为 :hover 状态,该用户也看不到悬停 CSS。什么给了?

编辑:我发现另一个用户有同样的问题,所以它看起来并不孤立于用户的工作站。两位用户都是 Windows 7 用户,他们都可以在 Internet Explorer 中正常查看菜单,但在 Chrome 或 Firefox 中无法查看。

编辑 2: 从此更改 CSS

.no-touch .navBar nav li:hover ul,
.no-js .navBar nav li:hover ul,
.navBar nav li ul.active {
    display: block;
}

到这里

.navBar nav li:hover ul {
    display: block;
}

修复了所有用户的问题。但是,有问题的相同用户无法单击菜单中的任何链接。如果他们右键单击 > 在新选项卡中打开链接,对他们来说效果很好。

【问题讨论】:

  • 也许你应该包括一些相关的代码。
  • 如果是 1 个用户,那么这对 SO 来说不是问题。你需要让他们硬刷新他们的屏幕,重新启动他们的计算机,并可能寻找他们的特定机器可能出现问题的原因。
  • @slime 抱歉,我还在编辑。现在已经结束了。
  • @CayceK 在这一点上,我怀疑这可能是 Windows 7 64 位用户的问题,所以我无法确定这只是一个用户的问题。我不明白发生了什么。
  • 这段代码没有任何意义。鉴于您当前的 HTML 和 CSS,嵌套的 UL 甚至都没有隐藏,那么还有什么可以扩展的呢?当它显然是一个 CSS 问题时,这永远不会是一个操作系统问题。

标签: javascript html css navigation


【解决方案1】:

这就是你正确的做法......

HTML:

<ul>
    <li>link 1</li>
    <li>link 2</li>
    <li class="more">more</li>
    <ul>
        <li>link 3</li>
        <li>link 4</li>
    </ul>
</ul>

CSS:

ul ul {
    display: none;}

.more:hover + ul {
    display: block;}

你需要注意的是,+ 在选择器中的使用。悬停状态之后的任何东西都需要这个,所以它知道直接的兄弟姐妹需要受到影响。

【讨论】:

  • 谢谢。我会测试它。为什么它可以在某些用户的相同浏览器中正常工作,而其他用户却不能呢?甚至在@CayceK 上面评论说,使用相同的浏览器导航对他/她有用。只是想理解。
  • 我无法评论为什么它适用于某些人而不适用于其他人,我假设他们指的是您提供的链接。我只使用您在帖子中包含的 HTML/CSS,那时我看到一切都很不稳定。顺便说一句,您提供的链接也对我有用。但是,如果您提供的 CSS 正在被使用,那么我建议您重新检查它。
  • 你是对的。这是CSS。我改变了它,现在它似乎对每个人都有效。但是,现在这些受影响的用户无法单击菜单中的链接。如果他们将鼠标悬停在链接上,浏览器会将其识别为有效链接,但如果他们单击它,则不会发生任何事情。如果他们右键单击,在新选项卡中打开链接,它适用于他们...
  • 现在这听起来像是一个 javascript 问题,但请确保链接真正可见,并设置高 z-index 以更好地衡量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-06
  • 2014-03-28
  • 2018-12-19
  • 2015-04-04
  • 1970-01-01
相关资源
最近更新 更多