CSS术语:定位标签的复杂组合

时间:2011-08-01 15:48:27

标签: html css css-selectors

我正在试图找出在CSS中调用标签的内容,以便构建漂亮的段落。

目前,这就是我的代码:

p {
font-size: 1em;
line-height: 1.25em;
margin: 0;
text-align: left;
}
p + p {
text-indent: 2.5em;
}
li p, blockquote p {
    margin: .5em 0;
}

我的HTML:

<p><strong>A little title</strong></p>
<p>Content text which can be single line or big block aswell.</p>

参考上面的代码,我想调用

     <p><strong>g</strong></p>

内容,因此它不会像之前输入的那样继承p

我试过了:

p strong会调用位于strong但位于p内的每个strong。我的意思是:仅在p之后,在p:not(p strong)容器设置之后。也许可以使用负边距但有点凌乱......

strong这听起来像是一种解决方案,但不适合这种情况,因为p仍在使用p >strong:only-child样式。

有没有办法用CSS做到这一点?

---编辑---

我现在使用了strong,它正在p标记中单独调用{{1}}个标记。为了提供良好的视觉渲染,我应用了缩进尺寸的负左边距...作为临时解决方案。

2 个答案:

答案 0 :(得分:1)

您可以尝试p:not()。进一步的文档在这里:http://reference.sitepoint.com/css/pseudoclass-not

更新:不幸的是,strong部分继续继承p标记样式。你最好的选择是在p strong之类的选择器中清除它,然后应用你想要的其他样式。

更新2:结果证明您可以使用:not伪造选择器。这里有一个例子:http://jsfiddle.net/Mf5uc/1/

答案 1 :(得分:1)

据我所知,你想要的是“包含”:

p:contains(b) { line-height: 2em; }

但原则上CSS中没有这样的选择器。 如果你想知道为什么然后阅读我的文章“CSS, selectors and computational complexity

您的选择:

a)使用p.headerp.normal

等类

b)为<b>而不是<p>本身定义样式:

p > b:first-child:last-child {
  font-size: 2em;
}

如果您需要对p > b:first-child:last-child选择器发表评论,请与我们联系。