at-rule是一个声明,为CSS提供执行或怎么表现的指令。每个声明以@开头,后紧跟一个可用的关键字,这个关键字充当一个标识符,用于表示CSS该做什么。这是一个通用的语法,尽管每个at-rule有其它语法变体。QGWHTML5中文学习网 - HTML5先行者学习网
常规规则QGWHTML5中文学习网 - HTML5先行者学习网
常规规则遵循下面的语法:QGWHTML5中文学习网 - HTML5先行者学习网
代码如下:QGWHTML5中文学习网 - HTML5先行者学习网
@[KEYWORD] (RULE);QGWHTML5中文学习网 - HTML5先行者学习网
@charsetQGWHTML5中文学习网 - HTML5先行者学习网
这个规则定义了浏览器使用的字符集,如果样式表包含非ASCII characters (e.g:UTF-8)。注意,被放在HTTP头部的字符集将会覆盖@charset规则QGWHTML5中文学习网 - HTML5先行者学习网
代码如下:QGWHTML5中文学习网 - HTML5先行者学习网
@charset "UTF-8";QGWHTML5中文学习网 - HTML5先行者学习网
@importQGWHTML5中文学习网 - HTML5先行者学习网
这个规则指示请求样式表,在这一行,如果内容是正确的,就会引入一个外部的CSS文件。QGWHTML5中文学习网 - HTML5先行者学习网
代码如下:QGWHTML5中文学习网 - HTML5先行者学习网
@import 'global.css';QGWHTML5中文学习网 - HTML5先行者学习网
虽然流行的CSS预处理器都支持@import,但是应该指出的是,它们的工作原理不同于原生的CSS:预处理器会抓取CSS文件并将它们处理成一个CSS文件,对原生CSS,每一个@import都是一个独立的HTPP请求。QGWHTML5中文学习网 - HTML5先行者学习网
@namespaceQGWHTML5中文学习网 - HTML5先行者学习网
对于将CSS应用在XML HTML(XHTML),这个规则是非常有用的,因为XHTML元素能在CSS中被作为一个选择器使用。QGWHTML5中文学习网 - HTML5先行者学习网
代码如下:QGWHTML5中文学习网 - HTML5先行者学习网
/* Namespace for XHTML */QGWHTML5中文学习网 - HTML5先行者学习网
@namespace url(http://www.w3.org/1999/xhtml);QGWHTML5中文学习网 - HTML5先行者学习网
/* Namespace for SVG embedded in XHTML */QGWHTML5中文学习网 - HTML5先行者学习网
@namespace svg url(http://www.w3.org/2000/svg);QGWHTML5中文学习网 - HTML5先行者学习网
嵌套规则QGWHTML5中文学习网 - HTML5先行者学习网
嵌套规则包含了额外的子集声明,其中一些声明只能用于特定情况。QGWHTML5中文学习网 - HTML5先行者学习网
代码如下:QGWHTML5中文学习网 - HTML5先行者学习网
@[KEYWORD] {QGWHTML5中文学习网 - HTML5先行者学习网
/* Nested Statements */QGWHTML5中文学习网 - HTML5先行者学习网
}QGWHTML5中文学习网 - HTML5先行者学习网
@documentQGWHTML5中文学习网 - HTML5先行者学习网
这个规则为样式表指定了条件:只能应用于特定页面。举个粟子,我们提供一个URL,然后为这个特定的页面自定义样式,在其他页面中,这些样式会被忽略。QGWHTML5中文学习网 - HTML5先行者学习网
代码如下:QGWHTML5中文学习网 - HTML5先行者学习网
@documentQGWHTML5中文学习网 - HTML5先行者学习网
/* Rules for a specific page */QGWHTML5中文学习网 - HTML5先行者学习网
url(http://css-tricks.com/),QGWHTML5中文学习网 - HTML5先行者学习网
/* Rules for pages with a URL that begin with... */QGWHTML5中文学习网 - HTML5先行者学习网
url-prefix(http://css-tricks.com/snippets/),QGWHTML5中文学习网 - HTML5先行者学习网
/* Rules for any page hosted on a domain */QGWHTML5中文学习网 - HTML5先行者学习网
domain(css-tricks.com),QGWHTML5中文学习网 - HTML5先行者学习网
/* Rules for all secure pages */QGWHTML5中文学习网 - HTML5先行者学习网
regexp("https:.*")QGWHTML5中文学习网 - HTML5先行者学习网
{QGWHTML5中文学习网 - HTML5先行者学习网
/* Start styling */QGWHTML5中文学习网 - HTML5先行者学习网
body { font-family: Comic Sans; }QGWHTML5中文学习网 - HTML5先行者学习网
}QGWHTML5中文学习网 - HTML5先行者学习网
@font-faceQGWHTML5中文学习网 - HTML5先行者学习网
这个规则允许在web页面上加载自定义字体,对自定义字体有不同程度的支持,但是这个规则接受语句创建和提供这些字体。QGWHTML5中文学习网 - HTML5先行者学习网
代码如下:QGWHTML5中文学习网 - HTML5先行者学习网
@font-face {QGWHTML5中文学习网 - HTML5先行者学习网
font-family: 'MyWebFont';QGWHTML5中文学习网 - HTML5先行者学习网
src: url('myfont.woff2') format('woff2'),QGWHTML5中文学习网 - HTML5先行者学习网
url('myfont.woff') format('woff');QGWHTML5中文学习网 - HTML5先行者学习网
}QGWHTML5中文学习网 - HTML5先行者学习网
@keyframesQGWHTML5中文学习网 - HTML5先行者学习网
在诸多CSS属性中,这个规则是关键帧 动画的基础,并允许我们标记动画开始和结束的标志。QGWHTML5中文学习网 - HTML5先行者学习网
代码如下:QGWHTML5中文学习网 - HTML5先行者学习网
@keyframes pulse {QGWHTML5中文学习网 - HTML5先行者学习网
0% {QGWHTML5中文学习网 - HTML5先行者学习网
background-color: #001f3f;QGWHTML5中文学习网 - HTML5先行者学习网
}QGWHTML5中文学习网 - HTML5先行者学习网
100% {QGWHTML5中文学习网 - HTML5先行者学习网
background-color: #ff4136;QGWHTML5中文学习网 - HTML5先行者学习网
}QGWHTML5中文学习网 - HTML5先行者学习网
}QGWHTML5中文学习网 - HTML5先行者学习网
@mediaQGWHTML5中文学习网 - HTML5先行者学习网
这个规则包含条件声明,可用于为特定屏幕指定样式,这些声明可以包含屏幕大小,在适屏样式中会很有用.QGWHTML5中文学习网 - HTML5先行者学习网
代码如下:QGWHTML5中文学习网 - HTML5先行者学习网
/* iPhone in Portrait and Landscape */QGWHTML5中文学习网 - HTML5先行者学习网
@media only screenQGWHTML5中文学习网 - HTML5先行者学习网
and (min-device-width: 320px)QGWHTML5中文学习网 - HTML5先行者学习网
and (max-device-width: 480px)QGWHTML5中文学习网 - HTML5先行者学习网
and (-webkit-min-device-pixel-ratio: 2) {QGWHTML5中文学习网 - HTML5先行者学习网
.module { width: 100%; }QGWHTML5中文学习网 - HTML5先行者学习网
}QGWHTML5中文学习网 - HTML5先行者学习网
或者只在文档打印时运用样式QGWHTML5中文学习网 - HTML5先行者学习网
代码如下:QGWHTML5中文学习网 - HTML5先行者学习网
@media print {QGWHTML5中文学习网 - HTML5先行者学习网
}QGWHTML5中文学习网 - HTML5先行者学习网
@pageQGWHTML5中文学习网 - HTML5先行者学习网
这个规则为将要打印的单独页面定义样式。特别的是,它能为页面伪元素设置外边距::first、:left和:rightQGWHTML5中文学习网 - HTML5先行者学习网
代码如下:QGWHTML5中文学习网 - HTML5先行者学习网
@page :first {QGWHTML5中文学习网 - HTML5先行者学习网
margin: 1in;QGWHTML5中文学习网 - HTML5先行者学习网
}QGWHTML5中文学习网 - HTML5先行者学习网
@supportsQGWHTML5中文学习网 - HTML5先行者学习网
这个规则可测试浏览器知否支持某个特性/功能,如果满足条件,将会为这些元素应用特定样式。有点像Modernizr,但确实是CSS属性。QGWHTML5中文学习网 - HTML5先行者学习网
代码如下:QGWHTML5中文学习网 - HTML5先行者学习网
/* Check one supported condition */QGWHTML5中文学习网 - HTML5先行者学习网
@supports (display: flex) {QGWHTML5中文学习网 - HTML5先行者学习网
.module { display: flex; }QGWHTML5中文学习网 - HTML5先行者学习网
}QGWHTML5中文学习网 - HTML5先行者学习网
/* Check multiple conditions */QGWHTML5中文学习网 - HTML5先行者学习网
@supports (display: flex) and (-webkit-appearance: checkbox) {QGWHTML5中文学习网 - HTML5先行者学习网
.module { display: flex; }QGWHTML5中文学习网 - HTML5先行者学习网
}QGWHTML5中文学习网 - HTML5先行者学习网
总结QGWHTML5中文学习网 - HTML5先行者学习网
at-rule可以使CSS做一些疯狂有趣的事情。尽管文章中的示例很基础,但是可以看到,对于特定的条件,它们是如何使用样式的,从而创建匹配特定场景的用户体验和交互。