内部样式表

源码下载

  先学习《内部样式表》这一节内容。然后思考如果标签栏td元素、含义栏td元素、分类栏td元素的内经颜色不同,如何去定义。 具体代码如下。

class属性

style标签里面定义class样式

        .red{
            background-color: red;
        }
        .green{
            background-color: green;
        }
        .blue{
            background-color: blue;
        }

td元素定义class属性

<tr>
        <td class="red">table</td>
        <td class="green">最外层标签</td>
        <td class="blue">闭合标签</td>
    </tr>
    <tr>
        <td class="red">tr</td>
        <td class="green">创建行</td>
        <td class="blue">闭合标签</td>
    </tr>
    <tr>
        <td class="red">th</td>
        <td class="green">创建表格单元(表头)</td>
        <td class="blue">闭合标签</td>
    </tr>
    <tr>
        <td class="red">td</td>
        <td class="green">创建表格单元(内容)</td>
        <td class="blue">闭合标签</td>
    </tr> 

  观察上面的代码你应该能够看出规律,首先在style标签里面定义样式属性的时候,每一个大括号前面的名字和上节课有所不同,不是元素的标签名,而是自定义命名,然后名字前面加一个标记符号点(.)。 然后在td元素标签里面,引入一个class属性,属性值就是你在style标签里面自定义使用点符号标记的名字。这样的话,浏览器解析代码的时候就会知道,一个元素通过class属性引用了style标签中的那一个大括号中样式集合。

  大家可以注意代码里面td元素通过td元素名字和class属性方式同时定义了背景样式background-color,但是通过标签名字定义的灰色背景颜色并没有起作用,三部分td区域的颜色分别是红绿蓝,显示的是来自class的定义。 这其实是优先级的问题。通过class属性定义的样式会覆盖通过元素名(标签名)定义的样式,这一点也好理解,如果让你规定优先级你也应该把杀伤面积小的定义为更高优先级,通过元素名字定义的样式,整个html文档中所有的该类元素都会被约束。 但实际的工程中,尤其复杂的页面使用同一种元素的的地方很多,不可能样式都一样。class属性恰恰可以解决这个问题,通过class方式定义一个属性,哪个元素引用class名字,哪个元素就会有对应的样式,覆盖原来的元素名字定义的属性和浏览器默认的 元素属性。

id属性

  id属性和class属性类似,都可以用来标记一个元素,区别在于,所有的元素可以有共同的class属性,也就是属性值相同,而W3c规定id属性元素的id属性值不能重复,元素的id顾名思义就像人的身份证号码是唯一的。 它也可以用于定义样式,不过一般大的工程中都是使用class而非id定义的样式,如果不理解,也没关系,只有你体验过从原生代码逐步封装构建一个网站就会明白,也许有一天你会回来看这一句话。id岂不是多余了,那肯定不是,在其他的方面, 也有很大用途。

  使用id属性方式定义第一个td元素的字体颜色。

style样式部分代码

        #black{
            color: black;
        }

  在样式style标签中,class属性使用符号点标记,id属性使用符号(#)标记,都是英文状态下的输入。

td部分代码

  <td class="red" id="black">table</td>

  和添加class属性一样引入id属性。每种元素基本都有自己的专有属性,class和id属性属于通用属性非专用属性,只要你进行定义,所有的元素都可以拥有。

优先级总结

  style标签里面通过元素名td方式定义了所有td元素字体颜色为白色,通过id的方式#black定义了第一个td元素字体颜色为黑色,第一个td元素的字体显示为黑色,这里同样可以看出id的优先级高于class。你可以测试一下, 就可以发现三种方式定义样式的优先级顺序是:id>class>元素名>浏览器默认样式。一定要记住这个优先级顺序,工作时不可能总百度,尤其是工作只负责css的编写, 但此时此刻不用记住,学习有个过程,先领会精神,为什么会有优先级,优先级的顺序为什么这样定义,然后去记忆细节。记忆细节的时候要理解式记忆,使用范围广的,自由性低的优先级就低,约束范围窄的,自由性大的优先级就高。 比如浏览器默认样式,适用所有的元素,程序员更改的自由性几乎为零,这取决于浏览器各自的厂商;通过元素名定义的样式,所有同类的元素都在杀伤半径之内,通过class定义的样式,自由性大,你们谁选我, 我就约束谁的显示效果,杀伤面积取决于程序员;W3c直接规定每个元素只能有唯一的id属性,这个杀伤范围是唯一的,优先级自然高于class等方式。