可以运用伪类和伪对象来设置那些在DOM中不能操作的信息的样式。例如,通常需要格式化一个段落的第一行,或者一个标题的首字母。

伪类

伪类是通过对象的特征对其进行格式化的,而不是通过它们的标识符、属性或者内容。

伪类:first-child将匹配一个元素的第一个子对象。假如你打算让新闻的第一段更具有视觉效果。如果新闻出现在类名(class)为news的<div>元素中,下面的规则将格式化每篇新闻的第一个<p>元素:

div.news p:first-child {

font-weight: bold;

}

<div class=“news“>

<p>Hi, 认识圣斗士吗? </p>

<p>星矢穿着神圣衣进入哈迪斯的神殿后面的事情怎么样了?</p>

</div>

动态伪类(dynamic pseudo-class )是伪类的一个子集。它们指那些有某些动态特征的伪类。运用它们,能够根据站点访问者的特定行为来格式化对象。

:focus将应用于那些获得焦点的对象。例如,当访问者点击了一个表单或者一个标签页中的输入框的时候:

input[type=text] : focus {

color: #f00;

background-color:#666;

}

用伪类:lang可以格式化特定语言(或许与文档主体不同的语言)内容中的对象。例如,下面的规则将一个迷你国旗放在任何汉语<blockquote>上:

blockquote:lang(cn) {

padding-right : 30px;

background: url(images/cn.png) no-repeat right top;
}

<blockquote lang=”cn”>

<p>哈尔很帅,黄头发时候最帅。冈田秒子长大的样子好丑,真的很丑的,奇怪,怎么可以那么丑,笑的就更丑了。</p>

</blockquote>

伪对象

伪对象同样能格式化那些不能作为DOM节点的文档部分。

伪对象:first-line将以段落的第一行作为目标。任何第一行中的字数将会随着文字在浏览器中的大小而改变。

下面的规则应用于页面中所有段落的第一行:

p:first-line {

font-style: italic:

}

伪对象:first-letter能够将元素的第一个字母或者数字作为目标。接下来的规则将用到类名为introduction的<p>元素中的第一个字符:

p.introduction:first-letter {

font-weight: bold:

font-size:400%;

}