9.5 选择元素的一部分
可以只选择元素的第一个字母或第一行,并对其添加样式。
- 选择元素的第一行
输入
element
,这里的element
是要对其第一行进行格式化的元素的选择器。输入
:first-line
以选择第一步中引用的元素的第一整行,参见图9.5.1、图9.5.2和图9.5.3。
选择元素的第一个字母
输入
element
,这里的element
是要对其第一个字母进行格式化的元素的选择器。输入
:first-letter
以选择第1步中引用的元素的第一个字母,参见图9.5.4和图9.5.5。
<article class="about">
<h1>Antoni Gaudí</h1>
<p>Many tourists are drawn to Barcelona to see Antoni Gaudí's incredible architecture.</p>
<p>Barcelona <a href="http:// www.gaudi2002.bcn.es/english/" rel="external">celebrated the 150th anniversary</a> of Gaudí's birth in 2002.</p>
<section class="project">
<h2 lang="es">La Casa Milà</h2>
<p>Gaudí's work was essentially useful. <span lang="es">La Casa Milà</span> is an apartment building and <em>real people</em> live there.</p>
</section>
<section class="project">
<h2 lang="es">La Sagrada Família</h2>
<p>The complicatedly named and curiously unfinished Expiatory Temple of the Sacred Family is the <em>most visited</em> building in Barcelona.</p>
</section>
</article>
图9.5.1 这里无法分辨哪些文字会受到first-line
的影响,因为只有在浏览器中查看页面,根据内容的流动,才能看出哪些文字在第一行。这里讲的第一行并不是由HTML中的分行决定的
- p:first-line {
- color: red;
- }
图9.5.2 这个选择器会选择每个p
元素的第一行
图9.5.3 调整浏览器的宽度就会改变第一行的内容(并会改变受格式化影响的范围)
- p:first-letter {
- color: red;
- }
图9.5.4 这个选择器仅会选择每个p
元素的第一个字母。对应的HTML代码见图9.5.1
图9.5.5 first-letter
可用于创建首字母下沉的效果(但要等讲到除color
以外的更多属性以后)
提示 根据CSS规范,选择器应包含第一个字母前面的标点符号。现代浏览器都支持这一特性,但旧版本的IE却并不是这样做的,它将标点符号本身当做第一个字母。
提示 只有某些特定的CSS属性可以应用于
:first-letter
伪元素,包括font
、color
、background
、text-decoration
、vertical-align
(只要:first-letter
不是浮动的)、text-transform
、line-height
、margin
、padding
、border
、float
和clear
。这些属性将在第10章和第11章讲到。
提示 可以将
:first-letter
和:first-line
伪元素与比这个例子中的选择器更复杂的选择器结合使用。例如,如果要选择包含在project
类元素中的每个段落的第一个字母,可以使用.project p:first-letter
。
伪元素、伪类及CSS3的
::first-line
和::first-letter
语法在CSS3中,
:first-line
的语法为::first-line
,:first-letter
的语法为::first-letter
。注意,它们用两个冒号代替了单个冒号。这样修改的目的是将伪元素(有四个,包括
::first-line
、::first-letter
、::before
和::after
)与伪类(如:first-child
、:link
、:hover
等)区分开。伪元素(pseudo-element)是HTML中并不存在的元素。例如,定义第一个字母或第一行文字时,并未在HTML中作相应的标记。它们是另一个元素(在本例中为
p
元素)的部分内容。相反,伪类(pseudo-class)则应用于HTML元素。例如,使用
:first-child
可以选择某元素的第一个子元素。未来,
::first-line
和::first-letter
这样的双冒号语法是推荐的方式,现代浏览器也支持它们。原始的单冒号语法则被废弃了,但浏览器出于向后兼容的目的,仍然支持它们。不过,IE9之前的Internet Explorer版本均不支持双冒号。因此,你可以选择继续使用单冒号语法,除非你为IE8及以下版本设置了单独的CSS。