CSS 的顶层样式表由两种规则组成的规则列表构成,一种是 at 规则,另一种是普通规则。

at 规则

  • @charset
  • @import
  • @media
  • @page
  • @counter-style
  • [@keyframes](https://www.w3.org/TR/css-animations-1/)
  • @fontface
  • @support
  • @namespace

    @charset

    @charset 用于提示 CSS 文件使用的字符编码方式,它如果被使用,必须出现在最前面。
    这个规则只在给出语法解析阶段前使用,并不影响页面上的展示效果

    1. @charset "utf8"

    @import

    @import 用于引入一个 CSS 文件,除了 @charset 规则不会被引入, @import 可以引入另一个文件的全部内容。

    1. @import "mystyle.css";
    2. @import url("mystyle.css");

    另外还支持 supports 和 media query 形式。

    @media

    能够对设备的类型进行一些判断。

    1. @media print {
    2. body { font-size: 10pt }
    3. }

    @page

    用于分页媒体访问网页时的表示设置,页面是一种特殊的盒模型结构,除了页面本身,还可以设置它周围的盒。

    1. @page {
    2. size: 8.5in 11in;
    3. margin: 10%;
    4. @top-left {
    5. content: "Hamlet";
    6. }
    7. @top-right {
    8. content: "Page " counter(page);
    9. }
    10. }

    @counter-style

    产生一种数据,用于定义列表项的表现

    1. @counter-style triangle {
    2. system: cycle;
    3. symbols: ▲;
    4. suffix: " ";
    5. }

    @keyframes

    @keyframes 规则用于创建动画,在 @keyframes 中规定某项 CSS 样式,就能创建由当前样式逐渐改为新样式的动画效果。

    1. @keyframes diagonal-slide {
    2. from {
    3. left: 0;
    4. top: 0;
    5. }
    6. to {
    7. left: 100px;
    8. top: 100px;
    9. }
    10. }

    @fontface

    用于定义一种字体,icon font技术就是利用这个特性来实现的. ```css @font-face { font-family: Gentium; src: url(http://example.com/fonts/Gentium.woff); }

p { font-family: Gentium, serif; } ```

@support

检查环境的特性,与 media 比较类似。

@namespace

用于跟 XML 命名空间配合的一个规则,表示内部的 CSS 选择器全部带上特定命名空间。

@viewport

用于设置视口的一些特性,不过兼容性目前不是很好,多数时候被 html 的 meta 代替。

@layer

可以将 css 分成多个层。

普通规则

  • 选择器
  • 声明列表
    • 属性
      • 值的类型
      • 函数