我想在一个网站上创建两个相同的导航栏。我想做的是"链接"每个导航栏上的:hover
效果,这样当NavBar1上的一个链接悬停时,不仅:hover
效果会显示在NavBar1,而且相同的:hover
效果应该同时显示在NavBar2上的相应链接上。
通过在CSS中使用相邻的兄弟组合子,我已经设法使其单向工作,但我的问题是,我似乎无法使其反向工作。换句话说,当鼠标悬停在NavBar1中的Link1上时,:hover
效果将显示在NavBar2中的Link2和NavBar1上。但是,将鼠标悬停在NavBar2中的Link1上时,:hover
效果仅显示在NavBar2中的Link1(因为相邻的同级组合子只影响其后面的元素,而不影响前面的元素)。
有可能实现我在这里想要做的事情吗?
如果我没有解释清楚,请理解我的意思:http://jsfiddle.net/9AbvE/697/
这不是我想要的。我需要每个导航栏都在单独的div中,但我还不能通过这样做来实现效果。我把这些代码放在一起只是为了让读者了解我要实现的目标。
请注意,在第一个链接列表中选择Link1与在第二个列表中选择链接1之间的区别。我希望在来回移动时有相同的效果,而不仅仅是单向的(即选择底部的"Link1"应该会像选择顶部一样将"Link1)变成黑色)。
您可以通过使用公共父元素"链接"两者来伪造它:http://jsfiddle.net/jjordanca/TNeZU/
HTML:
<div id="navbar">
<div id="linkone">
<a class="one" href="#">Link1</a>
<a class="one" href="#">Link1</a>
</div>
<div id="linktwo">
<a class="two" href="#">Link2</a>
<a class="two" href="#">Link2</a>
</div>
<div id="linkthree">
<a class="three" href="#">Link3</a>
<a class="three" href="#">Link3</a>
</div>
</div>
CSS:
a {
text-decoration: none;
color: red;
margin-right: 20px;
padding: 0 10px;
}
#navbar {
border: 1px solid red;
width: 500px;
margin: 50px;
padding: 20px;
height: 100px;
position: relative;
}
#navbar div {
text-align: center;
width: 100px;
}
/* LINK 1 */
#linkone {
position: absolute;
}
.one + .one {
position: absolute;
top: 80px;
left: 0;
}
#linkone:hover {
color: #000;
background-color: #008800;
}
.one {
position: absolute;
left: 0;
color: inherit;
background-color: inherit;
}
/* LINK 2 */
#linktwo {
position: absolute;
left: 80px;
}
.two + .two {
position: absolute;
top: 80px;
left: 0;
}
#linktwo:hover {
color: #000;
background-color: #008800;
}
.two {
position: absolute;
left: 0;
color: inherit;
background-color: inherit;
}
/* LINK 3 */
#linkthree {
position: absolute;
left: 140px;
}
.three + .three {
position: absolute;
top: 80px;
left: 0;
}
#linkthree:hover {
color: #000;
background-color: #008800;
}
.three {
position: absolute;
left: 0;
color: inherit;
background-color: inherit;
}