html - 为什么我的 UL 子菜单采用其祖 parent 的背景?

标签 html css background navigation

我正在处理一个菜单,在小屏幕上我使用渐变作为背景。此子菜单有 4 个级别,每个级别都有自己的颜色背景。但由于某种原因,我的第 4 级子菜单采用了第 2 级子菜单(它的祖 parent )的背景颜色,而不是它应该的颜色,即纯白色。太奇怪了,这个问题跳过了第三个子菜单。我已经尝试了尽可能多的解决方法,甚至将 !important 添加到第 4 级 css 也没有修复它。下面是 jsFiddle 和代码。我错过了什么吗?

这是 jsFiddle

CSS(适用于小屏幕)

   #navbar {
                background-color: #29568F !important;
        }

                .nav-tabs {
                display: inline-block;
                position: relative;
                width: 98.5%;
                background-color: #29568F;
                margin: 0px 0px;
                padding: 0px;
                list-style-type: none;
                color: white;
                text-decoration: none;
                text-shadow: 2px 2px #000000;
                font: 18px arial, verdana, sans-serif;
                border: 3px solid #29568F;
                }

                #menu-icon {
                    width: 200px;
                    display: block;
                    float: left;
                    text-align: left;
                    border: 0px;
                    border-bottom: 0px !important;
                }

                .nav-tabs > li:first-child span { /* This is #menu-icon */
                    border: 0px !important;
                    background: #29568F !important;
                }

                .menu-item {
                    display: none;
                }


                .nav-tabs li {
                    width: 100%;;
                    border-right: 0px;
                    clear: both;
                    list-style-type: none;
                }

                .nav-tabs li span {
                    display: block;
                    border: 0px !important;
                    padding: 10px 2.5% !important;
                    width: 95% !important;
                    position: relative !important;
                    top: 0px;
                    left: 0px;
                }

                .nav-tabs li span {
                    text-align: left;
                    border-bottom: 1px solid lightgrey !important;
                    background: linear-gradient(#29568F, #3399CC);
                }

                .nav-tabs > li > span:hover,
                .nav-tabs > li .open {
                    background: linear-gradient(#3399CC, #29568F);
                }

                /* -- Arrows -- */

                .nav-tabs .arrow-open {
                    content: url("/images/arrow-up.png");
                }
                .nav-tabs li .arrow-closed{
                    content: url("/images/arrow-down.png") !important;
                }

                /* --- 2nd level submenu -- */

                .sub-menu {
                    position: relative;
                    top: 0px;
                    left: 0px;
                    width: 100%;
                    clear: both;
                }

                .sub-menu > li {
                    position: relative;
                    left: 0px;
                }

                .sub-menu > li span {
                    left: 0px;
                    text-align: center;
                    background: linear-gradient(#99EEFF, #3399CC);
                }

                .sub-menu > li > span:hover,
                .sub-menu > li .open {
                    background: linear-gradient(#3399CC, #99EEFF);
                }

                /* -- 3rd level submenu -- */

                .drop-menu {
                    display: none;
                    clear: both;
                    width: 100%;
                    position: relative;
                    top: 0px;
                    left: 0px;
                }

                .drop-menu li span {
                    border: 0px;
                }

                .drop-menu > li > span {
                    border: 0px !important;
                    left: 0px;
                    text-align: left;
                    background: linear-gradient(#C9EAF3, #ffffff);
                }

                .drop-menu > li > span:hover,
                .drop-menu > li .open {
                    background: linear-gradient(#ffffff, #c9EAF3);
                }

                /* -- 4th level submenu -- */

                .slide-menu {
                    display: none;
                    background: #ffffff !important;
                    border: 0px;
                    width: 100%;
                    clear: both;
                    position: relative;
                    top: 0px;
                    left: 0px;
                    z-index: 300px;
                }

                .slide-menu li {
                    position: relative;
                    left: 0px !important;
                    width: 98%;
                    border: 0px !important;
                    text-align: center;
                }

                .slide-menu li span {
                    display: block !important;
                    position: relative;
                    left: 0px;
                    width: 100%;
                    border: 0px !important;
                }

HTML(查看结构的示例代码)

<div id="navbar">
    <ul class="nav-tabs">
        <li id="menu-icon"><span><img src="/images/menu-icon.png">Menu</span></li>
        <li class="menu-item"><span>Dogs <div class="arrow-closed"></div></span>
            <ul class="sub-menu">
                <li><span>Meet the Breeds<div class="arrow-closed"></div></span>
                    <ul class="drop-menu">
                        <li><span>Sort A - Z <div class="arrow-closed"></div></span>
                            <ul class="slide-menu">
                                <li>Breeds A - F</li>
                                <li>Breeds G - L</li>
                                <li>Breeds M - R</li>
                                <li>Breeds S - Z</li>
                            </ul> <!-- close slide-menu -->
                        </li> <!-- close Drop-menu item -->
                   </ul> <!-- close drop-menu -->
               </li> <!-- close sub-menu item -->
           </ul> <!-- close sub-menu -->
       </li> <!-- close main menu item -->
  </ul> <!-- close main-menu -->
</div>

注意!

在为这个问题创建 jsFiddle 时,我意识到当我只包含小屏幕的 css 时,第 4 级菜单的背景应该是白色的。直到我包含了整个 CSS 代码,它才停止工作。这仍然没有意义,因为第 4 级背景在正常的大屏幕状态下工作。我不明白为什么要这样做,所以如果有人愿意为我梳理这个问题,我将非常感激。

更新!

我一直在搞乱 jsFiddle,我删除了所有大屏幕 CSS 以尝试调试它。第四级菜单有一个白色的背景。好的。所以我重新添加了第一级 CSS,第四级背景搞砸了。删除它,并添加了第 2 级 CSS,第 4 级背景再次搞砸了。但是,如果我为大屏幕添加第 3 级或第 4 级 CSS,则第 4 级背景根本不会受到影响。所以问题出在第一级和第二级 CSS 的某个地方。但我不明白为什么。我没有任何东西继承它是父级的 css,而且所有代码都不需要任何渐变。太奇怪了。

最佳答案

花了几分钟查看您的代码,我想我找到了问题所在。在您的第二个和第三个子菜单中,您将背景应用于 span 标签。但是在您的第 4 个菜单 (.slidemenu) 上,您将它直接应用于 ul。

删除背景:

Line: 416
.slide-menu

添加背景:

Line: 432
.slide-menu li

工作 fiddle :jsfiddle

关于html - 为什么我的 UL 子菜单采用其祖 parent 的背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30466044/

相关文章:

没有servlet的Java网页?

javascript - 无法在 JQuery 中设置变量的 HTML

css - 根据颜色变量生成背景和文本类

css - 是否可以使用具有阴影、文本轮廓和/或渐变等特殊效果的 CSS 来制作一种链接/按钮样式?

ios - 当应用程序在后台时,不会调用 AFHTTPSessionManager block

javascript - 用于多个文本框的谷歌自动填充API

javascript - 如果 "p"标签为空,如何隐藏 div 映射

html - div 上的背景图像

background - 如何通过归档改变桌面背景?

iOS:在应用程序处于后台时监视连接到 Wifi 设备的套接字