css - 瀏覽器 @ AT 規(guī)則

大家可能在CSS中見到過字符@然后加一些關鍵字的用法,這種用法就稱之為AT規(guī)則,在CSS中,種類還是很多的,這里總結列舉下。
常規(guī)規(guī)則
所謂“常規(guī)規(guī)則”指的是語法類似下面的規(guī)則:
@[KEYWORD] (RULE)
包括:

  • @charset

定義字符集。字符設置據說會被HTTP頭覆蓋。某些軟件,例如Dreamweaver新建CSS文件時候,自動會帶有下面所示代碼,但實際開發(fā)時候,作用不大,因為meta中已經有所設置(<meta charset="utf-8">),會覆蓋,所以我都是直接刪掉的。
@charset "utf-8";

  • @import
    導入其他CSS樣式文件。實際上線時候,不建議使用,多請求,阻塞加載之類。但,本地開發(fā)可以使用,用做CSS模塊化開發(fā),然后使用一些(如grunt)工具進行壓縮并合并。但是呢,相比less, sass等還是有不足,就是@import語句只能在CSS文件頂部,使得文件的前后關系控制,就不那么靈活。
    @import 'global.css';
  • @namespace
    此規(guī)則應用到XML HTML(XHTML)上特別有用,因為這樣的話XHTML元素可以作為選擇器在CSS中使用。
/* XHTML命名空間 */
@namespace url(http://www.w3.org/1999/xhtml);
/* 內嵌在XHTML的SVG的命名空間 */
@namespace svg url(http://www.w3.org/2000/svg);

嵌套規(guī)則
所謂“嵌套規(guī)則”,就是帶有花括號{}, 語法類似下面的規(guī)則:
@[KEYWORD] { /* 嵌套語句 */}

包括:

  • @document
    CSS 4.0規(guī)范有相關說明。如果文檔滿足給定的一些條件,就可以應用我們指定的一些樣式。比如說,這個CSS文件被子站A調用,和被子站C調用,我們可以通過域名匹配來執(zhí)行不同的CSS樣式。這樣,我們可以有效避免沖突,或者防止外鏈之類。
@document 
  /* 頁面URL需要是 */
  url(http://www.zhangxinxu.com/),  
  /* 頁面URL的開頭必須是... */
  url-prefix(www.zhangxinxu.com/wordpress/),  
  /* 該域上的所有頁面 */
  domain(zhangxinxu.com),  /* 所有https協(xié)議頁面 */
  regexp("https:.*")
{  
  /* 開始樣式 */
  body { font-family: Comic Sans; }

}

由于這個AT規(guī)則是CSS4水平的,所以目前的瀏覽器支持情況很弱,只有FireFox瀏覽器支持,而且還需要加前綴。但是,10年之后,也就是2025年再來看,估計就是另外一番景象了。

  • @font-face
    這個大家可能比較熟,自定義字體用的。IE6也支持。目前相關文章也挺多,就不啰嗦,放個示意:
@font-face {
  font-family: 'MyWebFont';
  src:  url('myfont.woff2') format('woff2'),
        url('myfont.woff') format('woff');
}
  • @keyframes
    喜歡CSS3的同學這個也耳熟能詳了,輸入法打出來發(fā)現居然是“詳”而不是“翔”,原來不是“聽得太多耳朵都能拉出屎來”的意思哦,學習了!

用來聲明CSS3 animation動畫關鍵幀用的,一笑而過:

@keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
  • @media
    媒介查詢,解釋非常常用的。響應式寬度啊,retina屏幕判斷啦,打印屏幕啦,甚至IE7,IE8瀏覽器的hack啦,很多,本文標題是了解,不深入,給大家簡單演示下使用就好了:
@media all and (min-width: 1280px) {    /* 寬度大于1280干嘛干嘛嘞... */ }
@media 
(-webkit-min-device-pixel-ratio: 1.5), 
(min-resolution: 2dppx) { 
    /* Retina屏幕干嘛干嘛嘞... */ }
@media print {    /* 閃開閃開,我要打印啦! */ }
@media \0screen\,screen\9 {    /* IE7,IE8干嘛干嘛嘞... */ }
@media screen\9 {    /* IE7干嘛干嘛嘞... */ }

  • @page
    這個規(guī)則用在打印文檔時候修改一些CSS屬性。使用@page我們只能改變部分CSS屬性,例如間距屬性margin, 打印相關的orphans, widows, 以及page-break-*, 其他CSS屬性會被忽略。
@page :first {
  margin: 1in;
}

上面CSS表示:first頁面也要有:left, :right頁面margin間距。

@page的偽類包括::blank, :first, :left, :right。

  • @supports
    是否支持某CSS屬性聲明的AT規(guī)則,瀏覽器對齊支持性越來越好了,鄙人已經在實際項目中使用了這個規(guī)則,干嘛用呢?說來慚愧,當作hack使用了。具體細節(jié)不表。下面是一些使用示意:
/* 檢查是否支持CSS聲明 */ @supports (display: flex) {
  .module { display: flex; }
}/* 檢查多個條件 */ @supports (display: flex) and (-webkit-appearance: checkbox) {
  .module { display: flex; }

}

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • ?前端面試題匯總 一、HTML和CSS 21 你做的頁面在哪些流覽器測試過?這些瀏覽器的內核分別是什么? ...
    Simon_s閱讀 2,349評論 0 8
  • 一:在制作一個Web應用或Web站點的過程中,你是如何考慮他的UI、安全性、高性能、SEO、可維護性以及技術因素的...
    Arno_z閱讀 1,354評論 0 1
  • 前端開發(fā)知識點 HTML&CSS對Web標準的理解、瀏覽器內核差異、兼容性、hack、CSS基本功:布局、盒子模型...
    Hebborn_hb閱讀 888評論 0 1
  • 一、XHTML簡介 XHTML 是更嚴格更純凈的 HTML 代碼。 XHTML 是什么? XHTML 指可擴展超文...
    碼字與律動閱讀 947評論 0 2
  • 條件CSS分類 目前的三個@規(guī)則:@media@supports@viewport CSS的@規(guī)則 CSS的@規(guī)則...
    前端小學生_f675閱讀 1,120評論 0 0

友情鏈接更多精彩內容