CSS:悬停以影响2个元素

时间:2013-02-18 15:53:12

标签: css css3

所以我有一些CSS生成这个。

CSS Menu

HTML代码如下。

<div class="menu">
                <ul>
                <li><a href='index.html'>Home</a></li>
                <div class="menutab"></div>
                <li><a href='about_us.html'>About Us</a></li>
                <div class="menutab"></div>
                <li><a href='#'>Order Online</a></li>
                <div class="menutab"></div>
                <li><a href='gallery.html'>Gallery</a></li>
                <div class="menutab"></div>
                <li><a href='#'>Contact Us</a></li>
                <div class="menutab"></div>
                </ul>
            </div>

和CSS

.menu {
    width: 100%;
    height: 220px;
    float: left;
    margin-left: -20px;
    position: relative;
    text-align: center;
}

.menu li{
    display: block;
    list-style: none;
    width: 100%;
    background: #EBE5D9;
    height: 50px;
    margin-left: -40px;
    margin-top: 5px;
    line-height: 50px;
}

.menu li:hover {
    background: #AEC32A;
}


.menu li a{
    text-decoration: none;
    font-size: 20px;
    color: #000000;
    font-family: fantasy;
}



.menutab {
    width: 30px;
    position: relative;
    margin-top: -3px;
    margin-left: -71px;
    border-right: 21px solid #EBE5D9;
    border-bottom: 21px solid transparent;
}

基本上我想要的是悬停效果将整个事物变成绿色,目前.menu li:hover将块变为#AEC32A但是我也希望它将.menutab边框变成相同的颜色,无论如何这样做?最好不要使用Javascript。

先谢谢你的帮助: - )

2 个答案:

答案 0 :(得分:5)

尝试相邻的选择器。

.menu li:hover+.menutab {
    border-right-color: #AEC32A;
}

JS Bin Demo

答案 1 :(得分:4)

这对adjacent sibling combinator没有问题。

只需将此添加到您的css:

.menu li:hover + .menutab{
    border-right-color: #AEC32A;
}

这将选择第一个元素(.menutab)的前一个元素(.menu li:hover)。

请参阅live demo

如果您不关心旧的IE,

Browser-support是100%&lt;(=)8;)