在CSS中积极向前看

dr *_*rry 9 css regex

我在Perl正则表达式中知道正向前瞻的概念,即q(?=u)匹配aq后跟au,而不是使u成为匹配的一部分.我正在寻找类似于css的东西:我想匹配一个div,然后是一个兄弟姐妹div.specialClass.

<div>..</div>  <!-- div to match -->
<div class="specialClass">..</div>
Run Code Online (Sandbox Code Playgroud)

我玩过+但是匹配div.specialClass,而我想要前面的div.

Sam*_*son 10

您还不能声明选择器的哪个部分是主题.主题始终是CSS中选择器的最后一个元素,直到我们获得移动它的能力,可能使用$!语法.

// Always selects the .specialClass div which follows another div
div + div.specialClass {
    color: red;
}
Run Code Online (Sandbox Code Playgroud)

将来,您可以使用以下语法将第一个div作为主题:

// Selects any `div` preceding any `div.specialClass`
$div + div.specialClass { // or maybe div! + div.specialClass
    color: red;
}
Run Code Online (Sandbox Code Playgroud)

您在此期间唯一的解决方法是使用JavaScript.像jQuery这样的工具会使这非常简单:

$("div + div.specialClass").prev();
Run Code Online (Sandbox Code Playgroud)

现在,它是对div任何前面所有元素的引用div.specialClass.

演示:http://jsfiddle.net/jonathansampson/HLfCr/
来源:http://dev.w3.org/csswg/selectors4/#subject