html - 在所选标题之间应用 CSS 样式

标签 html css

我想选择 h1 标签之间的元素。例如,我想对 h1#bap 和下一个 h1 之间的所有 p 应用一种样式,同时不更改任何其他地方的样式。

不应添加其他标签(否则,太容易了:))。

不能使用任何第 nth-sibiling,因为 header 之间的元素可能有数万亿。

显然,我可能还想在其他标题之间应用样式(在特定的 h2 之间,...)。

<h1 id="bap">bap</h1>
  <p>foo bap</p>
  <p>foo bap 1</p>
  <p>foo bap 2</p>
  <p>foo bap 3</p>
  <p>foo bap 4</p>
  <div>defoo bap</div>
<h1 id="random-bor">random bor</h1>
  <p>balibom</>p

最佳答案

您可以使用一个鲜为人知的选择器,正式名称为 Sibling 组合器(好吧,我想这就是它的名字!)

使用此语法,您可以选择 <h1 id="bap">bap</h1> 之后的所有 p 元素:

#bap ~ p { color: red; }

不幸的是,这选择了<h1 id="random-bor">random bor</h1> 之后的所有段落元素。也一样,但这可以通过重置这些段落元素的样式来克服,如下所示:

#random-bor ~ p { color: black; }

参见 this fiddle

这适用于所有现代浏览器,不幸的是它不适用于 IE6,如果这是一个问题,那么 jQuery 解决方案可能是最好的。

关于html - 在所选标题之间应用 CSS 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12387443/

相关文章:

JavaScript 读取 IE 和 FireFox 中的单选按钮值

html - 没有嵌套 div 的 CSS 表格?

javascript - 滚动到元素底部时触发事件?

html - CSS - 始终居中图像

html - 样式化文本输入插入符

html - 没有 hack 的元素之间的分隔符

html 在 IE8 中不显示相同

javascript - 粘性侧边栏与页脚重叠?

jquery - 如何用css3动画添加类?

css - Firefox(仅)有一个奇怪的边距/填充行为