正如前面看到的,除了内联样式之外,定义CSS样式的语法总遵守如下格式:

Selector{  
    property1: value1;
    property2: value2;
}

  上面语法格式可分为两个部分。
  ➢ Selector(选择器):选择器决定该样式定义对哪些元素起作用。
  ➢ {property1: value1;property2:value2}(属性定义):属性定义部分决定这些样式起怎样的作用(字体、颜色、布局等)。
  从上面介绍不难看出,学习CSS大致需要掌握两个部分内容:掌握选择器的定义方法;掌握各种CSS属性定义。

元素选择器

  元素选择器是最简单的选择器,其语法格式如下:
  E { ... }

例子
<!DOCTYPE html>  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <title> 元素选择器 </title>
    <style type="text/css">
        /* 定义对div元素起作用的CSS样式 */
        div{
            background-color: grey;
            font: italic normal bold 14pt normal 楷体_GB2312;
        }
        /* 定义对p元素起作用的CSS样式 */
        p{
            background-color: #444;
            color:#fff;
            font: normal small-caps bold 20pt normal 宋体;
        }
    </style>
</head>  
<body>  
<div>div内的文字</div>  
<p>p内的文字</p>  
</body>  
</html>  

属性选择器

  从广义角度来看,元素选择器其实是属性选择器的特例。属性选择器一共有如下几种语法格式。
  ➢ E { ... }:指定该CSS样式对所有E元素起作用。
  ➢ E[attr] { ... }:指定该CSS样式对具有attr属性的E元素起作用。
  ➢ E[attr=value] { ... }:指定该CSS样式对所有包含attr属性,且attr属性为value的E元素起作用。
  ➢ E[att^="value"] { ...... }:指定该CSS样式对所有包含attr属性,且attr属性的值为以value开头的字符串的E元素起作用。
  ➢ E[att$="value "] { ...... }:指定该CSS样式对所有包含attr属性,且attr属性的值为以value结尾的字符串的E元素起作用。
  ➢ E[att*="value"] { ...... }:指定该CSS样式对所有包含attr属性,且attr属性的值为包含value的字符串的E元素起作用。
  上面这几个选择器匹配规则越严格优先级越高。例如,对于包含abc属性的<div.../>元素,如果其属性值为xyz,则div[abc=xyz]选择器定义的CSS样式会覆盖div[abc]定义的CSS样式,如果div[abc=xyz]选择器定义的CSS样式中没有定义的属性,而div[abc]选择器定义的CSS属性依然会作用于包含abc属性值为xyz的<div.../>元素。

例子
<!DOCTYPE html>  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <title> 属性选择器 </title>
    <style type="text/css">
    /* 对所有div元素都起作用的CSS样式 */
    div {
        width:300px;
        height:30px;
        background-color:#eee;
        border:1px solid black;
        padding:10px;
    }
    /* 对有id属性的div元素起作用的CSS样式 */
    div[id] {
        background-color:#aaa;
    }
    /* 对有id属性值包含xx的div元素起作用的CSS样式 */
    div[id*=xx] {
        background-color:#999;
    }
    /* 对有id属性值以xx开头的div元素起作用的CSS样式 */
    div[id^=xx] {
        background-color:#555;
        color:#fff;
    }
    /* 对有id属性值等于xx的div元素起作用的CSS样式 */
    div[id=xx] {
        background-color:#111;
        color:#fff;
    }
    </style>
</head>  
<body>  
<div>没有任何属性的div元素</div>  
<div id="a">带id属性的div元素</div>  
<div id="zzxx">id属性值包含xx子字符串的div元素</div>  
<div id="xxyy">id属性值以xx开头的div元素</div>  
<div id="xx">id属性值为xx的div元素</div>  
</body>  
</html>  

类选择器

  class选择器指定CSS样式对具有指定class属性的元素起作用。class选择器的语法格式如下:
  [E].classValue { ...} /*其中E是有效的HTML元素
  指定该CSS定义对class属性值为classValue的E元素起作用。此处的E可以省略,如果省略E,则指定该CSS对所有的class属性为classValue的元素都起作用。

例子
<!DOCTYPE html>  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <title>class选择器测试</title>
    <style type="text/css">
    /* 对所有class为myclass的元素都起作用的CSS样式 */
    .myclass {
        width:240px;
        height:40px;
        background-color:#FF0000;
    }
    /* 对class为myclass的div元素起作用的CSS样式 */
    div.myclass {
        border:2px dotted black;
        background-color:#0000FF;
    }
    </style>
</head>  
<body>  
<div class="myclass">class属性为myclass的div元素</div>  
<p class="myclass">class属性为myclass的p元素</p>  
</body>  
</html>  

ID选择器

  ID选择器指定CSS样式将会对具有指定id属性值的HTML元素起作用。ID选择器的语法格式如下:
  #idValue { ... }
  上面语法指定该CSS样式对id为idValue的HTML元素起作用。

例子
<!DOCTYPE html>  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <title>ID选择器</title>
    <style type="text/css">
    /* 对所有div元素都起作用的CSS样式 */
    div {
        width:200px;
        height:30px;
        background-color:#ddd;
        padding:3px;
    }
    /* 对id为xx的元素起作用的CSS样式 */
    #xx {
        border:2px dotted black;
        background-color:#888;
    }
    </style>
</head>  
<body>  
<div>没有任何属性的div元素</div>  
<div id="xx">id属性值为xx的div元素</div>  
</body>  
</html>  
提示

  定义仅对指定元素起作用的ID选择器的语法格式如下:
  E#idValue {...} /*其中E是有效的HTML元素*/
  该语法指定该CSS样式对id为idValue的E元素起作用。

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