Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 选择元素后具有相同类的所有元素_Html_Css_Css Selectors - Fatal编程技术网

Html 选择元素后具有相同类的所有元素

Html 选择元素后具有相同类的所有元素,html,css,css-selectors,Html,Css,Css Selectors,我有一个列表,我想在一个元素之后选择所有“相似”的项目(即具有相同的类): <ul> <li class="x">foo</li> <li class="y" id="b">foo</li> <!-- From this... --> <li class="y">foo</li> <!-- ...can I select this?... --> <l

我有一个列表,我想在一个元素之后选择所有“相似”的项目(即具有相同的类):

<ul>
    <li class="x">foo</li>
    <li class="y" id="b">foo</li> <!-- From this... -->
    <li class="y">foo</li> <!-- ...can I select this?... -->
    <li class="y">foo</li> <!-- ...and this... -->
    <li class="x">foo</li> <!-- ...but not that... -->
    <li class="y">foo</li> <!-- ...and neither that... -->
</ul>
    foo foo
  • 富 富 foo
我是否可以选择(仅使用CSS)元素
\b
后带有
.y
类的所有元素?
我不知道任何元素的位置(以及有多少个元素),我只知道我想要开始的元素的ID(
#b
)和我想要捕获的类(
.y
#b
之后和下一个
.x
之前)


我可以用CSS写一些东西来匹配这个吗?

我已经为您简化了选择器。我现在使用相邻的选择器

.y + .y {
  color: red;
}

上述选择器将仅选择与
.y
相邻且
.y

.y
#b

那就是

#b~.y
在下一个
.x

这有点棘手。如果可能存在另一个
.x
元素,并且您希望避免对该
.x
元素后面的
.y
元素进行样式设置,那么您很可能需要一个覆盖规则(在第一个之后):

#b~.y{
/*为后面的所有.y设置样式#b*/
}
#b~.x~.y{
/*还原在#b之后的下一个.x之后的.y的样式*/
}

我认为OP希望选择在
#b
之后开始(在列表中的任何位置),并在找到非
y
后立即结束。谢谢。第二个例子是我想要的,但它只适用于我的例子。正如我所说,我不知道有多少项目后。下面是这个问题的一个演示:@rap-2-h:Alien先生的答案可以在不需要覆盖的情况下工作,如果你的.y following.x一次出现的次数不超过一次(你的示例中每个.x只包含一个.y)。哇!它起作用了,我不认为这是真的可能!谢谢永远不要低估CSS的威力:D@TheYaXxE:这是一条细线:)这里需要重写规则的事实表明了一个限制:没有以前的同级(或“直到下一个同级”)选择器。但是,这是严格的设计限制。您也可以这样编写还原样式选择器:
#b~:not(.y)~.y