You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让导航栏下拉菜单的hover伪类选择器正常生效?

问题根源

你使用的a.services:hover div.nav-dropdown属于后代选择器,仅能匹配a.services标签内部嵌套的.nav-dropdown元素。参考你给出的HTML结构,.nav-dropdown和.top-nav-container为平级关系,并不在a.services的内部嵌套结构中,因此选择器无法命中目标元素,hover规则不会触发。

修复方案

提供两种适配不同需求的修复方式:

方案1:调整HTML结构(全浏览器兼容)

将.nav-dropdown下拉菜单移动到a.services标签内部,修改后的HTML代码如下:

<div class="main-topnav">
        <div class="top-nav-container">
            <div class="top-nav">
                <a class="main" href="#">الرئيسية</a>
                <a class="services hover" href="#">الخدمات
                    <div class="nav-dropdown">
                        <ul class="dropdown-ul">
                            <li><a href="#">انظمة دار السعادة</a></li>
                            <li><a href="#">MY ROOM</a></li>
                            <li><a href="#">I DESIGN</a></li>
                            <li><a href="#">IDEAL HOME</a></li>
                        </ul>
                    </div>
                </a>
                <a class="hover" href="#">احدث الاعمال</a>
                <a class="hover" href="#">معرض الاعمال</a>
                <a class="hover" href="#">الاخبار و المقالات</a>
                <a class="hover" href="#">اتصل بنا</a>
            </div>
        </div>
</div>

结构调整后,你原本编写的CSS规则a.services:hover div.nav-dropdown { display: block;}即可正常生效,无需修改CSS代码。

方案2:修改CSS选择器(无需改动HTML,适配现代浏览器)

如果不需要兼容Chrome 105、Firefox 121、Safari 15.4以下的旧版本浏览器,可以使用:has()选择器修改hover规则,代码如下:

/* 原有隐藏规则保留 */
div.nav-dropdown{ display: none;}
/* 替换原有hover规则 */
.top-nav-container:has(.services:hover) + .nav-dropdown {
    display: block;
}
/* 补充规则:悬浮到下拉菜单本身时保持显示,避免鼠标移开a标签后菜单立刻消失 */
.nav-dropdown:hover {
    display: block;
}

内容的提问来源于stack exchange,提问作者OMER

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:06:05