2013-07-12 28 views
-1

我试图突出显示紧挨着该项目悬停的项目之前的列表项目。这个元素为什么选择自己?

<ul> 
    <li><a href="#">link</a></li> <!-- this one should be highlighted when... --> 
    <li><a href="#">link</a></li> <!-- ...this one is hovered --> 
    <li><a href="#">link</a></li> 
    <li><a href="#">link</a></li> 
</ul> 

但是,我使用的选择器li + li:hover出于某种原因正在选择自己。 li:hover + li选中li立即以下一人徘徊,但我需要一个之前立即它。我是否使用了错误的选择器?

这里的一个示范fiddle问题:

+0

我不认为这是可能的CSS但随后又也许有人可以启发我们所有 – Huangism

+1

的选择是做什么它应该是。目前纯CSS中没有办法选择元素的同级_previous_。 JavaScript是需要的。 – ScottS

+0

你不能在'CSS'中遍历'DOM'。 –

回答

1

加号选择器选择以下加元素。所以li + li:hover正在寻找一个盘旋li立即之前另一个li

The Adjacent-Sibling Selector

这是它可能是最好充满了Javascript语言,CSS的空白。

4

CSS组合器只能访问后代和后来的兄弟姐妹。他们无法访问以前的。

一旦CSS4恶有恶报,你可以这样做:

!li! + li:hover 

(注:语法没有最终确定,因为据我所知)

然而,在此期间,试试这个:

ul, ul>li {transform:scaleY(-1)} 

并颠倒列表中项目的顺序。

Demo

+0

演示是我最初尝试的。所以,如果我的理解是正确的,那么在CSS4被采纳之前我无法完成的事情是正确的? –

+0

你最初的尝试是否包含'transform'? –

+0

有趣的想法。太糟糕的来源秩序必须扭转。 – ScottS

相关问题