伪元素选择器

  伪元素选择器并不是针对真正的元素使用的选择器,伪元素选择器只能针对CSS中已有的伪元素起作用。
  CSS提供的伪元素选择器有如下几个。
  ➢ :first-letter:该选择器对应的CSS样式对指定对象内的第一个字符起作用。
  ➢ :first-line:该选择器对应的CSS样式对指定对象内的第一行内容起作用。
  ➢ :before:该选择器与内容相关的属性结合使用,用于在指定对象内部的前端插入内容。
  ➢ :after:该选择器与内容相关的属性结合使用,用于在指定对象内部的尾端添加内容。

first-letter选择器

  下面先看:first-letter伪元素选择器的用法。:first-letter选择器仅对块元素(如<div.../><p.../><section.../>等元素)起作用。如果想对内联元素(如<span.../>等元素)使用该属性,必须先设定对象的height、width属性,或者设定position属性为absolute,或者设定display属性为block。通过该选择器配合font-size、float属性可制作首字下沉效果。

例子
<!DOCTYPE html>  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <title> :first-letter </title>
    <style type="text/css">
        span {
            display:block;
        }
        /* span元素里第一个字母加粗、变蓝
        由于span是内联元素,因此需要先把span的display设为block
        */
        span:first-letter{
            color:#f00;
            font-size:20pt;
        }
        /* section元素里第一个字母加粗、变蓝 */
        section:first-letter{
            color:#00f;
            font-size:30pt;
            font-weight:bold;
        }
        /* p元素里第一个字母加粗、变蓝 */
        p:first-letter{
            color:#00f;
            font-size:40pt;
            font-weight:bold;
        }
    </style>
</head>  
<body>  
<span>abc</span>  
<section>其实我是一个程序员</section>  
<p>疯狂Java讲义</p>  
</body>  
</html>  

first-line选择器

  :first-line选择器同样只对块元素(如<div.../><p.../><section.../>等元素)起作用。如果要对内联元素(如<span.../>等元素)使用该属性,必须先设定对象的height、width属性,或者设定position属性为absolute,或者设定display属性为block。如果没有通过width属性为HTML元素设置宽度,该元素的宽度可能随浏览器窗口的大小发生改变,这样第一行内容的长度可能会变化。

例子
<!DOCTYPE html>  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <title> :first-line </title>
    <style type="text/css">
        span {
            display:block;
        }
        /* span元素里第一行文字的字体加大、变红
        由于span是内联元素,因此需要先把span的display设为block
        */
        span:first-line{
            color:#f00;
            font-size:20pt;
        }
        /* section元素里第一行文字的字体加大、变蓝 */
        section:first-line{
            color:#00f;
            font-size:30pt;
        }
        /* p元素里第一行文字的字体加大、变蓝 */
        p:first-line{
            color:#00f;
            font-size:30pt;
        }
    </style>
</head>  
<body>  
<span>abc<br/>xyz</span>  
<section>去年今日此门中,<br/>  
人面桃花相印红。</section>
<p style="width:160px">疯狂Java讲义</p>  
</body>  
</html>  

:before、:after伪元素选择器

  此处先介绍的内容相关的属性,与前面用过的color、font-size等CSS属性的本质是相同的。这些内容相关的属性同样需要定义在CSS样式的花括号({})里面。
  CSS支持的内容相关的属性有如下几个。
  ➢ include-source:该属性的值应为url(url),插入绝对或相对URL地址所对应的文档。目前还没有浏览器支持该属性,故此处不会详述该属性的用法。
  ➢ content:该属性的值可以是字符串、url(url)、attr(alt)、counter(name)、counter(name, list-style-type)、open-quote、close-quote等格式。该属性用于向指定元素之前或之后插入指定内容。
  ➢ quotes:该属性用于为content属性定义open-quote和close-quote,该属性的值可以是两个以空格分隔的字符串,其中前面的字符串是open-quote,后面的字符串是close-quote。
  ➢ counter-increment:该属性用于定义一个计数器。该属性的值就是所定义的计数器的名称。
  ➢ counter-reset:该属性用于对指定的计数值复位。

例子
<!DOCTYPE html>  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <title> content </title>
    <style type="text/css">
        /* 指定对于div元素内部的前端插入content属性对应的内容 */
        div>div:before{
            content: 'CrazyIt:';
            color:blue;
            font-weight:bold;
            background-color:gray;
        }
    </style>
</head>  
<body>  
    <div>
    <div>疯狂Java讲义</div>
    <div>疯狂Android讲义</div>
    <div>轻量级Java EE企业应用实战</div>
    </div>
</body>  
</html>  

使用自定义编号

  CSS默认添加的编号都是数值编号,这种编号能满足大部分的应用场景,但有些时候还需要自定义编号,例如使用非数字编号(比如使用罗马字母编号)。这种需求可通过counter(name, list-style-type)用法来实现,其中list-style-type指定编码风格,该参数支持如下值。
  ➢ decimal:阿拉伯数字。默认值。
  ➢ disc:实心圆。
  ➢ circle:空心圆。
  ➢ square:实心方块。
  ➢ lower-roman:小写罗马数字。
  ➢ upper-roman:大写罗马数字。
  ➢ lower-alpha:小写英文字母。
  ➢ upper-alpha:大写英文字母。
  ➢ none:不使用项目符号。
  ➢ cjk-ideographic:浅白的表意数字。
  ➢ georgian:传统的乔治数字。
  ➢ lower-greek:基本的希腊小写字母。
  ➢ hebrew:传统的希伯莱数字。
  ➢ hiragana:日文平假名字符。
  ➢ hiragana-iroha:日文平假名序号。
  ➢ katakana:日文片假名字符。
  ➢ katakana-iroha:日文片假名序号。
  ➢ lower-latin:小写拉丁字母。
  ➢ upper-latin:大写拉丁字母。

例子
<!DOCTYPE html>  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <title> 自定义编号 </title>
    <style type="text/css">
        /* 为div的子div元素定义了一个计数器:mycounter */
        div>div{
            counter-increment: mycounter;
        }
        /* 在div的子div元素的前端插入自定义风格的mycounter计数器  */
        div>div:before{
            content: '第' counter(mycounter , lower-greek) '本.';
            font-size: 20pt;
            font-weight: bold;
        }
    </style>
</head>  
<body>  
    <div>
    <div>疯狂Java讲义</div>
    <div>疯狂Android讲义</div>
    <div>轻量级Java EE企业应用实战</div>
    </div>
</body>  
</html>  

注:本博客内容节选自李刚编著的疯狂HTML 5/CSS 3/JavaScript讲义 ,详细内容请参阅书籍。