当鼠标位于子元素上时如何设置父元素的样式?

时间:2013-04-01 21:43:58

标签: javascript css

当我将鼠标悬停在其下方的任何列出的位上时,尝试使用导航栏的顶部位来更改文本颜色。

HTML

<div id="wrapper">
    <div id="navMenu">
        <ul>
            <li><a href="#">Home</a></li>
        </ul>
        <ul>
            <li><a href="#">example1</a>
                <ul>
                    <li><a href="#">example1.1</a></li>
                    <li><a href="#">example1.2</a></li>
                    <li><a href="#">example1.3</a></li>
                    <li><a href="#">example1.4</a></li>
                    <li><a href="#">example1.5</a></li>
                </ul>
            </li>
        </ul>

        <br class="clearFloat" />

    </div> <!-- end navMenu div -->
</div> <!-- end wrapper div -->

CSS

#navMenu {margin:0;padding:0;}
#navMenu ul {margin:0;padding:0;line-height:30px;}
#navMenu li {margin:0;padding:0;list-style:none;float:left;position:relative;background:#999;}
#navMenu ul li a {text-align:center;text-decoration:none;height:30px;width:150px;display:block;color:#060;border:1px solid #666;}
#navMenu ul ul {position:absolute;visibility:hidden;top:32px;}
#navMenu ul li:hover ul {visibility:visible;}
#navMenu li:hover {background:#060;}
#navMenu ul li:hover ul li a:hover {background:#CCC;color:#FFF;}
#navMenu a:hover {color:#FFF;}
.clearFloat {clear:both;margin:0;padding:0;}

这在纯CSS中是否可行?如果没有,我将如何使用Javascript或其他方式轻松完成此工作?

编辑:当您将鼠标悬停在背景变为绿色时,文字会变为白色。后者仍然存在,但前者没有。我认为这就是问题所在。

1 个答案:

答案 0 :(得分:4)

当您将孩子悬停在CSS中时,无法选择父级,您只能选择之后的兄弟姐妹或后代。

但是,我认为只有悬停父事件你才会好,因为当你悬停孩子时父母也会悬停。加上这个:

jsFiddle

#navMenu li:hover a {color:#FFF;}