4.1 为什么使用选择器

4.1.1 内联样式的问题

HTML代码与CSS代码混合在一起,可读性很差,并且很多重复代码。

<body style="margin: 0;">
    <div style="background-color: #0aaa76;text-align: center;padding-top: 15px;padding-bottom: 15px;">
        <h1 style="color:#fff;margin: 0;">小步教程企业简介项目 www.xiaobuteach.com</h1>
    </div>
</body>

需要一种机制将HTML代码与CSS代码分离,并且实现代码重用。


4.1.2 作用1:通过选择器分离元素与样式

为了将CSS属性设置从元素分离,则需要在元素外部“针对(选择)相应的元素”,然后设置样式。选择器的字面意思:先 “选择(针对)元素”,然后对选择元素设置样式。选择元素的个数可能是:0、1或多个。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>小步教程</title>

    <style>
        body{
            margin: 0;
        }

        div{
            background-color: #0aaa76;text-align: center;padding-top: 15px;padding-bottom: 15px;
        }

        h1{
            color:#fff;margin: 0;
        }
    </style>
</head>
<body>
    <div>
        <h1>小步教程企业简介项目 www.xiaobuteach.com</h1>
    </div>
</body>

</html>

上述代码,body内的元素结构清晰,CSS选择器的每个CSS属性一行,代码可读性强。


4.1.3 作用2:通过选择器重用样式

内联样式写法

<body>
    <p style="border: 1px solid #ccc;color: #333;">
        小步教程 xiaobuteach 第1段
    </p>
    <p style="border: 1px solid #ccc;color: #333;">
        第2段
    </p>
    <p style="border: 1px solid #ccc;color: #333;">
        第3段
    </p>
</body>

3个段落p的CSS属性设置完全重复,以后修改需修改3处。

选择器写法

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>小步教程</title>

    <style>
        p{
            border: 1px solid #ccc;
            color: #333;
        }
    </style>
</head>
<body>
    <p>小步教程 xiaobuteach 第1段</p>
    <p>第2段</p>
    <p>第3段</p>
</body>

</html>

选择器定义一次样式,选择器选择到3个元素,这3元素同时应用选择器内定义样式,实现代码重用。“选择”、“针对”,也称“匹配”,表达相同意思。上述选择器匹配3个元素。

试一试。将p{ }改成div{ },会匹配几个元素。


4.1.4 选择器的研究内容

选择器并不关心内部的具体样式,即花括号里的内容,具体样式根据需求编写。

{
    border: 1px solid #ccc;
    color: #333;
}

选择器关心花括前的内容,它表示“选择(匹配)哪些元素”。

        p{
            /* 具体样式内容并不关注 */
        }

p{ }匹配标签名是p的所有元素。