不要将 CSS 应用于包含 <em> 的 <p> [重复]

Posted

技术标签:

【中文标题】不要将 CSS 应用于包含 <em> 的 <p> [重复]【英文标题】:Don't apply CSS to <p> containing an <em> [duplicate] 【发布时间】:2011-10-11 15:49:16 【问题描述】:

可能重复:CSS selector for “foo that contains bar”?

我网站上的所有&lt;p&gt; 都得到margin-bottom20px

我不想将此 margin-bottom 应用于包含 &lt;em&gt; 元素的 &lt;p&gt;

没有类或 id 是否可以做到这一点。

可以使用CSS3。

【问题讨论】:

为什么要在没有类或 id 的情况下这样做? 对我来说,它应该是一个 Wordpress 插件用户的快速解决方案。我现在无法解决它,所以我至少想向他介绍一些解决方法。 【参考方案1】:

据我所知,纯 CSS 还没有做到这一点,但您可以通过巧妙地使用 jQuery 来实现:

$(function() 
    $("em").parent("p").addClass("nomargin")
)

或者类似的...

【讨论】:

【参考方案2】:

您所描述的基本上是一个“上升”选择器,根据其后代选择一些元素。仅使用 CSS 是不可能的,您还必须使用 javascript

【讨论】:

【参考方案3】:

我可以看到在纯 CSS 中执行此操作的唯一方法是使用父节点选择器。可惜了does not exist in CSS2 or CSS3这样的事情。

【讨论】:

【参考方案4】:

不幸的是,纯 css 无法做到这一点。见Is there a CSS parent selector?

不过你可以使用一些 jQuery。

$('em').parent().css('marginBottom','0');

http://jsfiddle.net/jasongennaro/5pPGF/

【讨论】:

【参考方案5】:

您的问题不清楚。请重新检查您的问题。但是您可以为全局标签设置边距、填充,例如

pmargin:0

*margin:0; padding:0 用于所有元素,然后将其更改为精确的 div、类。在这种情况下,所有其他的仍将设置为 margin:0, padding:0

【讨论】:

他想为其中包含 元素的

标签提供不同的格式,与没有

标签相比。无需设置类或 ID。

好的。明白了。一秒。【参考方案6】:

恐怕这对于纯 CSS 是不可能的。

【讨论】:

以上是关于不要将 CSS 应用于包含 <em> 的 <p> [重复]的主要内容,如果未能解决你的问题,请参考以下文章

根据子元素将CSS样式应用于元素[重复]

将 css 应用于相邻元素

如何使用 JQuery 将 css 属性应用于子元素

Servlet 过滤器 - 不要将过滤器应用于特定的过滤器

如何将 CSS 应用于最后一个 tr 的第一个 td

将 CSS 应用于子组件不起作用