首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当任何子级悬停时更改CSS下拉菜单颜色

问当任何子级悬停时更改CSS下拉菜单颜色
EN

Stack Overflow用户
提问于 2013-10-08 07:52:29
回答 2查看 9.6K关注 0票数 0

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

HTML

代码语言:javascript
复制
<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

代码语言:javascript
复制
#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;
}

正如您所看到的,当单个项目悬停在上方时,文本颜色会变为白色。我想要做的是,如果将鼠标悬停在菜单/子菜单的任何部分上,则主菜单项和子菜单项的文本颜色都会变为白色。如果有人将鼠标悬停在菜单中的“计划”上,所有的子菜单链接都应该有白色文本。如果这可以单独使用CSS选择器,或者我需要考虑JS解决方案?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-08 08:00:54

您想要更改:

代码语言:javascript
复制
#main-navigation li a:hover {
    color: #FFF;
}

目标为:

代码语言:javascript
复制
#main-navigation li:hover > a {
    color: #FFF;
}

JSFiddle here.

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

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

若要确定Plans子菜单链接颜色的目标,应将样式应用于某个类,以便专门针对这些颜色。由于您已经有一个专门针对Plans (.active)的类,因此我将仅将其用于演示目的。

CSS:

代码语言:javascript
复制
#main-navigation li:hover > a, #main-navigation .active:hover a {
    color: #FFF;
}

JSFiddle here.

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

票数 3
EN

Stack Overflow用户

发布于 2013-10-08 07:56:11

您必须将其添加到css中

代码语言:javascript
复制
#main-navigation > li:hover > ul > li > a {
    color: #FFF;
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19236765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档