CSS - :target~

时间:2015-10-27 08:01:44

标签: css css-selectors

这是我的HTML代码:

<a href="#anchor">test</a>
<ul id="anchor"></ul>

现在我想设定我的目标,这不是问题。

#anchor:target 
{
}

但我想选择目标的兄弟(a)。

#anchor:target ~ a{
    background: blue;
}

不行。如何选择目标的兄弟?

4 个答案:

答案 0 :(得分:2)

目前,没有办法用CSS设置以前的兄弟姐妹的样式。要实现这一点,您必须使用javascript。

您可以在+ <a>之后使用<ul>或所有~获得下一个兄弟:

#anchor:target + a {
    /*

    <ul></ul>
    <a>will get this one</a>
    <a>but not this one</a>

    */
}

#anchor:target ~ a {
    /*

    <ul></ul>
    <a>will get this one</a>
    <a>and this one too!</a>

    */
}

答案 1 :(得分:1)

在CSS中没有“上一个”兄弟选择器(在CSS2或CSS3中)。

“选择器等级4”草稿介绍选择器,如果我理解正确,则允许选择之前的兄弟选择。
https://drafts.csswg.org/selectors-4/#subject

但是,这仍处于草稿形式,并且远未得到所有主流浏览器的支持。

很抱歉,但目前的CSS规范无法实现。
真正实现这一目标的唯一方法是使用JavaScript,或更改标记的顺序。

答案 2 :(得分:0)

目前,您无法获得以前的兄弟姐妹。但您可以选择具有特定属性的元素,如下所示:

a[href="#anchor"] {
	color: #f00;
}
<a href="#anchor">test</a>
<ul id="anchor"></ul>

答案 3 :(得分:0)

根据我之前的回答,由于CSS的限制,这是不可能的。

但是,你总能匹配自己吗?

a[target|="#"] {
}

这将选择文档中指向本地锚点的所有<a>标记。