css如何选择相邻的前一个元素?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css如何选择相邻的前一个元素?相关的知识,希望对你有一定的参考价值。

<div class="row">
<label for="...">aaa</label>
<input type="checkbox" id="..." name=".." value=".">
</div>
<div class="row">
<label for="...">bbb</label>
<input type="checkbox" id="..." name=".." value="." >
</div>
代码如上
想得到这样的效果:选中一个复选框,让前面的label元素的文字颜色改变。
我知道<label>和<input>如果调换位置的话,可以用相邻兄弟选择器来做效果,代码如下
input:checked+label
color: green;

勾选一个复选框后,label中的文字就会变成绿色。
但相邻兄弟选择器好像只能选择下一个相邻的元素。
如何做到选择上一个相邻的元素呢?或者添加别的css代码能达到改变前面的label元素文字颜色呢?
求助各位大神!

参考技术A input:checked~label
color: green;
追问

不好意思,这个好像不行。。
“~”也是选择后面的元素,并不能选择前面的元素

如何将 CSS 规则应用于直接相邻的兄弟元素?

【中文标题】如何将 CSS 规则应用于直接相邻的兄弟元素?【英文标题】:How can I apply CSS rules to directly-adjacent sibling elements? 【发布时间】:2015-04-21 16:45:06 【问题描述】:

我了解如何使用:hover 选择器,但我想以类似的方式将规则应用于直接相邻的元素。例如,如果我在一个平面列表中有链接 A、B、C 和 D,我希望当我将鼠标悬停在 C 上时应用 B 和 D。

想到的最直观的方法是重叠&lt;a&gt;标签,以便将规则应用于相邻的文本节点,如下所示:

<a>A<a>B</a></a>

如果我将样式应用于第一个锚点,它应该会影响 A 和 B,等等。

我对同时兼容 HTML5、IE 和 Chrome 的解决方案感兴趣。

【问题讨论】:

【参考方案1】:

首先,格式良好的 HTML 中的标签必须是自包含的——&lt;a&gt;&lt;b&gt;&lt;/a&gt;&lt;/b&gt; 不正确。考虑一下,匹配的hrefs 将指向什么。如果将 B 包含在 A 的元素中,它将共享所有属性:设置其样式的属性和确定链接到何处的属性。您无法将它们分开应该表明这可能是错误的处理方式。规范地说,我们说 HTML 应该代表文档的 结构,而您要在此处更改的是 样式

如果我们查看some CSS selector reference,我们会发现类似于:hover+~ 看起来应该很有用,但实际上为我们提供了所有之前和之后的元素,这并不是您想要的。

我认为最明智的方法是使用 JavaScript。查看this JSFiddle 进行演示。 (我在这里使用jQuery。)

【讨论】:

以上是关于css如何选择相邻的前一个元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 CSS 规则应用于直接相邻的兄弟元素?

在css中 比较 后代选择器和相邻选择器有啥区别 设计一个示例

求解css相邻兄弟选择器该怎么去理解

CSS学习总结

CSS相邻兄弟选择器

CSS相邻兄弟选择器