CSS中下一个元素的选择器的语法是啥?

Posted

技术标签:

【中文标题】CSS中下一个元素的选择器的语法是啥?【英文标题】:What is syntax for selector in CSS for next element?CSS中下一个元素的选择器的语法是什么? 【发布时间】:2011-04-09 06:30:42 【问题描述】:

如果我有一个标题标签<h1 class="hc-reform">title</h1>

h1.hc-reform
    float:left;
    font-size:30px;
    color:#0e73bb;
    font-weight:bold;
    margin:10px 0px;

然后我有一段<p>stuff here</p>

我如何确保使用 CSS 确保 h1.hc-reform 之后的每个 <p> 标记都可以使用:clear:both;

会是:

h1.hc-reform > p
     clear:both;

由于某种原因,这不起作用。

【问题讨论】:

【参考方案1】:

您可以使用sibling selector~

h1.hc-reform ~ p
     clear:both;

这会选择.hc-reform 之后的所有p 元素,而不仅仅是第一个。

【讨论】:

第一个链接中的 IE 错误是模糊的边缘情况,这可能是 quirksmode 忽略它们的原因。【参考方案2】:

不完全是。 h1.hc-reform > p 的意思是“任何p 恰好低于h1.hc-reform”。

你想要的是h1.hc-reform + p。当然,这可能会在旧版本的 Internet Explorer 中引起一些问题;如果您想让页面与旧版 IE 兼容,您将不得不手动向段落添加类或使用一些 javascript(例如,在 jQuery 中,您可以执行类似 $('h1.hc-reform').next('p').addClass('first-paragraph') 的操作)。

更多信息:http://www.w3.org/TR/CSS2/selector.html 或 http://css-tricks.com/child-and-sibling-selectors/

【讨论】:

【参考方案3】:

> 是 child selector。因此,如果您的 HTML 如下所示:

<h1 class="hc-reform">
    title
    <p>stuff here</p>
</h1>

...那是你的票。

但是如果你的 HTML 看起来像这样:

<h1 class="hc-reform">
    title
</h1>
<p>stuff here</p>

那么你想要adjacent selector:

h1.hc-reform + p
     clear:both;

【讨论】:

我当然希望他没有将 p 嵌套在 h1 中。另外,相邻只选择第一个 p。【参考方案4】:

没有&gt; 是一个子选择器。

你要的是+

所以试试h1.hc-reform + p

浏览器支持不是很好

【讨论】:

2020:十年后浏览器支持非常好。仅供 CSS 新手参考。【参考方案5】:

这称为adjacent sibling 选择器,用加号表示...

h1.hc-reform + p 
  clear:both;

注意:IE6 或更早版本不支持此功能。

【讨论】:

那只会选择紧跟在h1.hc-reform 之后的p。再说一次,它可能是唯一需要应用 clear: both 才能工作的函数,因为它只是清除了 h1 浮点数,所以它仍然是一个有效的答案。 @BoltClock 是的,您是正确的,我误读了规范并删除了该评论,因为它是错误的。此选择器只会匹配紧跟在h1.hc-reform 前面的p(当然,具有相同的父元素)。 哇不知道相邻兄弟选择器。很好,谢谢! ~ 在这种情况下是一个更好的选择器。这是一个工作的 JSfiddle jsfiddle.net/dZAtt 值得注意的是,如果第一个元素有任何子元素,这将不起作用

以上是关于CSS中下一个元素的选择器的语法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

css后代选择器和子选择器的区别

包含类、子选择器和相邻兄弟选择器的 CSS 选择器的等效 XPath 是啥?

标记选择器、类选择器、id选择器、伪类选择器的先后顺序是啥?

计算机,网页设计中CSS各选择器的含义,用途和不同,尤其是复合内容选择器?

css @选择器的目的是啥? [复制]

css选择器的1.5 子选择器