• 介绍
    • 什么是CSS
      • 历史
    • 语法
    • 引入方式
      • 内联方式 Inline Styles
      • 内部样式块对象 Embedding a Style Block
      • 外部样式表 Linking to a Style Sheet
    • 选择器权重
    • 优先级
    • 源码
    • 参考

    介绍

    什么是CSS

    CSS 是 Cascading Style Sheet(层叠样式表)的缩写。是用于(增强)控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。CSS 不需要编译,可以直接由浏览器执行(属于浏览器解释型语言)。

    历史

    • CSS 最早被提议是在1994年;
    • 最早被浏览器支持是1996年;
    • 1996年 W3C 正式推出了CSS1;
    • 1998年 W3C 正式推出了CSS2;
    • CSS2.1 是 W3C 现在正在推荐使用的;
    • CSS3 现在还处于开发中;
    • CSS 3 在包含了所有 CSS 2 所支持的基础上更有所改进,所以不必担心兼容问题。

    CSS 支持多种设备,例如手机、电视、打印机、幻灯片等。但是 CSS 在浏览器上得到了更好的推广。

    语法

    selector {property: value;}

    介绍 - 图1

    引入方式

    三种方式将样式表加入您的网页:

    内联方式 Inline Styles

    内联定义即是在对象的标记内使用对象的 style 属性定义适用其的样式表属性。
    示例代码:

    1. <p style="color:#f00">这一行的字体颜色将显示为红色</p>

    内部样式块对象 Embedding a Style Block

    你可以在你的 HTML 文档的<head>标记里插入一个<style>块对象。
    示例代码:

    1. <style>
    2. .test2 {
    3. color: #000;
    4. }
    5. </style>

    外部样式表 Linking to a Style Sheet

    你可以先建立外部样式表文件*.css,然后使用 HTML 的 link 对象。或者使用 @import 来引入。
    示例代码:

    1. <!-- Use link elements -->
    2. <link rel="stylesheet" href="core.css">
    3. <!-- Use @imports -->
    4. <style>
    5. @import url("more.css");
    6. </style>

    注意:在实际开发中,推荐使用 HTML 的 link 对象来引入。详细内容可以参见http://www.waylau.com/css-code-guide/#css-miscellaneous

    选择器权重

    介绍 - 图2

    权重主要分为 4 个等级:

    • 第一等:代表内联样式,如: style="",权值为1000
    • 第二等:代表ID选择器,如:#content,权值为100
    • 第三等:代表类,伪类和属性选择器,如.content,权值为10
    • 第四等:代表类型选择器和伪元素选择器,如div p,权值为1

    例子如下

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>选择器权重 | www.waylau.com</title>
    6. <meta name="description" content="选择器权重">
    7. <meta name="author" content="Way Lau, www.waylau.com"/>
    8. <meta name="viewport" content="width=device-width">
    9. <link rel="shortcut icon" href="/favicon.ico">
    10. <style type="text/css">
    11. #redP p {
    12. /* 权值 = 100+1=101 */
    13. color: #F00; /* 红色 */
    14. }
    15. #redP .red em {
    16. /* 权值 = 100+10+1=111 */
    17. color: #00F; /* 蓝色 */
    18. }
    19. #redP p span em {
    20. /* 权值 = 100+1+1+1=103 */
    21. color: #FF0; /*黄色*/
    22. }
    23. </style>
    24. </head>
    25. <body>
    26. <div id="redP">
    27. <p class="red">red
    28. <span><em>em red</em></span>
    29. </p>
    30. <p>red</p>
    31. </div>
    32. </body>
    33. </html>

    最终页面效果如下:

    介绍 - 图3

    优先级

    遵循如下法则:

    • 选择器都有一个权值,权值越大越优先;
    • 当权值相等时,后出现的样式表设置要优于先出现的样式表设置;
    • 创作者的规则高于浏览者:即网页编写者设置的 CSS 样式的优先权高于浏览器所设置的样式;
    • 继承的 CSS 样式不如后来指定的 CSS 样式;
    • 在同一组属性设置中标有!important规则的优先级最大

    例子如下:

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>!important 用法 | www.waylau.com</title>
    6. <meta name="description" content="!important 用法">
    7. <meta name="author" content="Way Lau, www.waylau.com"/>
    8. <meta name="viewport" content="width=device-width">
    9. <link rel="shortcut icon" href="/favicon.ico">
    10. <style>
    11. .test {
    12. color: #f00 !important;
    13. color: #000;
    14. }
    15. .test2 {
    16. color: #f00 !important;
    17. }
    18. .test2 {
    19. color: #000;
    20. }
    21. .test3 {
    22. color: #000;
    23. }
    24. .test3 {
    25. color: #f00;
    26. }
    27. </style>
    28. </head>
    29. <body>
    30. <div class="test">同一条样式内,!important 优先级高</div>
    31. <div class="test2">在分散的样式条目内,!important 优先级高</div>
    32. <div class="test3">没有被覆盖</div>
    33. </body>
    34. </html>

    介绍 - 图4

    源码

    本文中所用例子源码参见
    https://github.com/waylau/css3-tutorial 中 samples 目录下的 important.html、priority_rules.html

    参考

    • http://www.nowamagic.net/csszone/css_SeletorPriorityRules.php
    • http://www.cnblogs.com/xugang/archive/2010/09/24/1833760.html