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

Posted

技术标签:

【中文标题】如何将 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。

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

<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