Css 是否可以将一个div的两个相邻邻居作为目标

Css 是否可以将一个div的两个相邻邻居作为目标,css,html,Css,Html,我想知道是否有可能使用中间的元素来瞄准两个相邻的元素 例如: <div> <span class="icon">icon</span> <input id="input" class="input error" type="text" /> <label for="input"></label> <div> 然而,我在跨度方面运气不佳。有人能告诉我这是否可行吗?如果是这样,请提供帮助。我使用j

我想知道是否有可能使用中间的元素来瞄准两个相邻的元素

例如:

<div>
   <span class="icon">icon</span>
   <input id="input" class="input error" type="text" />
   <label for="input"></label>
<div>

然而,我在跨度方面运气不佳。有人能告诉我这是否可行吗?如果是这样,请提供帮助。

我使用jquery来定位跨度并向其添加一个类。

您可以使用带有order属性的flexbox来直观地重新排序元素,同时将输入作为DOM中的第一个元素,这样您就可以使用通用同级选择器

div{ 显示器:flex; } .图标{ 顺序:-1; } input.error~*{ 颜色:红色; } 偶像 标签 我想知道是否有可能以两个相邻的目标为目标 元素使用中间的元素

您可以使用axe选择器%以两个相邻元素为目标

由于.icon和label之间没有共享类或元素类型,因此需要声明:

input.error % .icon,
input.error % label {
color: red;
}
或者,在这种情况下,您可以组合CSS立即后续同级选择器+和axe立即上一同级选择器?:


不可能,但如果您要将该类添加到输入中,为什么不直接将其添加到父div中呢?不,您不能影响CSS中DOM中的元素,只需感谢您的快速响应。我对javascript还是非常陌生的。我正在使用jqueryvalidate,它为我将类添加到输入中。我将检查是否可以按照DaniP的建议将类添加到标签中。您的问题从来没有用JavaScript标记过,更不用说jQuery了。如果您正在寻找jQuery解决方案,您应该用它标记您的问题。
input.error % .icon,
input.error % label {
color: red;
}
input.error ? .icon,
input.error + label {
color: red;
}