You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何选择DOM中h1之后的所有p元素(含嵌套)?求CSS或Nokogiri方案

解决方案

纯CSS方案

利用CSS兄弟选择器结合后代选择器,可精准选中h1元素之后的所有同级p,以及后续兄弟元素中嵌套的所有p:

/* 选中h1之后的同级p,以及后续所有兄弟元素内的p */
h1 ~ p,
h1 ~ * p {
  background: red;
}

替换示例中的样式后,Paragraph 3、Paragraph 4和Paragraph 5会被设置红色背景,而h1之前的Paragraph 1、Paragraph 2不受影响。

Nokogiri方案(Ruby)

使用XPath的following轴可以轻松定位文档中h1之后的所有p元素(无论层级):

require 'nokogiri'

html = <<-HTML
<!DOCTYPE html>
<html>
<head>
<style> 
  h1 ~ p {
    background: red;
  }
</style>
</head>
<body>
  <p>Paragraph 1</p>
  <p>Paragraph 2</p>
  <h1>Foo</h1>
  <p>Paragraph 3</p>
  <div>
    <p>Paragraph 4</p>
  </div>
  <span>
    <div>
      <p>Paragraph 5</p>
    </div>
  </span>
</body>
</html>
HTML

doc = Nokogiri::HTML(html)
# 定位所有h1之后的p元素
target_paragraphs = doc.xpath('//h1/following::p')
# 为目标元素添加红色背景样式
target_paragraphs.each do |p|
  p['style'] = 'background: red;'
end

puts doc.to_html

执行这段代码后,生成的HTML中目标段落会被添加上红色背景样式。

内容的提问来源于stack exchange,提问作者skamsie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 22:23:24