【问题标题】:Change CSS dropdown menu color when any child is hovered当任何孩子悬停时更改 CSS 下拉菜单颜色
【发布时间】:2013-10-14 17:31:49
【问题描述】:

我有一个基本的 CSS 下拉菜单,如下所示:http://jsfiddle.net/qfTt3/(以下代码相同)

HTML

<ul id="main-navigation">
                <li class="active"><a href='#'>Plans</a>
                    <ul>
                    <li><a href='#'>Sub Link 1</a></li>
                    <li><a href='#'>Sub Link 2</a></li>
                    </ul>
                </li>
                <li><a href='#'>How it Works</a></li>
                <li><a href='#'>About</a>
                    <ul>
                    <li><a href='#'>Sub Link 1</a></li>
                    <li><a href='#'>Sub Link 2</a></li>
                    <li><a href='#'>Sub Link 3</a></li>
                    <li><a href='#'>Sub Link 4</a></li>
                    </ul>
                </li>
                <li><a href='#'>Testimonials</a>
                    <ul>
                    <li><a href='#'>Sub Link 1</a></li>
                    <li><a href='#'>Sub Link 2</a></li>
                    <li><a href='#'>Sub Link 3</a></li>
                    <li><a href='#'>Sub Link 4</a></li>
                    </ul>
                </li>
                <li><a href='#'>FAQ</a></li>
                <li><a href='#'>Contact</a></li>
            </ul>

CSS

#main-navigation {
    background: #FFF;
    padding: 0;
    margin: 0;
    list-style-type: none;
    height: 100px;
    float: right;
    font-size: 18px;
}

#main-navigation li {
    float: left;
}

#main-navigation>li {
    line-height: 100px;
    background-color: #FFF;
    margin-left: 10px;
}

#main-navigation>li>ul>li {
    line-height: 30px;
    background: #FFF;
    margin-left: 0px;
    border-bottom: 1px solid #999;
    position: relative;
    z-index: 100;
}

#main-navigation li a {
    padding: 0px 12px;
    display: block;
    text-decoration: none;
    color: #6d6e71;
}

#main-navigation ul {
    position: absolute;
    left: -9999px;
    top: -9999px;
    list-style-type: none;
    margin: 0;
}

#main-navigation li:hover {
    position: relative;
    background: #10b794;
}

#main-navigation li a:hover {
    color: #FFF;
}

#main-navigation li:hover ul {
    left: 0px;
    top: 100px;
    background: #10b794;
    padding: 0px;
}

#main-navigation li:hover ul li a {
    padding: 5px;
    display: block;
    width: 168px;
    text-indent: 15px;
    background: #10b794;
}

#main-navigation li:hover ul li a:hover {
    color: #FFF;
}

#main-navigation li.active {
    border-bottom: 4px solid #10b794;
    height: 96px;
}

如您所见,当单个项目悬停时,文本颜色变为白色。如果悬停在该菜单/子菜单的任何部分上,我想要做的是让主&lt;li&gt; 和子菜单项的文本颜色变为白色。如果有人将鼠标悬停在菜单中的“计划”上,则所有子菜单链接也应该有白色文本。如果仅使用 CSS 选择器就可以做到这一点,还是我需要研究 JS 解决方案?

【问题讨论】:

    标签: html css drop-down-menu


    【解决方案1】:

    您必须将此添加到您的 css 中

    #main-navigation > li:hover > ul > li > a {
        color: #FFF;
    }
    

    http://jsfiddle.net/sijav/qfTt3/1/

    【讨论】:

      【解决方案2】:

      你想改变:

      #main-navigation li a:hover {
          color: #FFF;
      }
      

      成为:

      #main-navigation li:hover > a {
          color: #FFF;
      }
      

      JSFiddle here.

      基本上,当您将鼠标悬停在列表项上时,您希望 a 元素的颜色发生变化。这样,当您将鼠标悬停在其他子菜单项上时,您仍将鼠标悬停在包含子菜单的 li 上。

      我使用子选择器&gt;,这样当您将鼠标悬停在主菜单项链接上时,子菜单项链接不会受到影响。


      要定位计划子菜单链接颜色,您应该将样式应用到一个类以专门定位它们。由于您已经有专门关于计划的课程 (.active),我将仅将其用于演示目的。

      CSS:

      #main-navigation li:hover > a, #main-navigation .active:hover a {
          color: #FFF;
      }
      

      JSFiddle here.

      我在定位 .active 时去掉了子选择器,这样当悬停在主链接上时,它会使所有子 a 元素变为白色。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多