@規則 (At-rule)

@規則の種類

  • 一般
    • @charset
    • @import
    • @namespace
  • 条件付きグループ規則 (Conditional Group Rules)

@charset

スタイルシートの文字セットを定義します。

@charset 'charset';
@charset "charset";
@charset - CSS | MDN

@import

スタイルシートをインポートします。

@import 'url';
@import "url";
@import "url" media1, media2, ...;

@import url(url);
@import url('url');
@import url("url");
@import url("url") media1;
@import - CSS | MDN

@namespace

XML名前空間を、スタイルシートで使用することを宣言します。

@namespace url("XML-namespace-URL");
@namespace prefix url("XML-namespace-URL");
@namespace - CSS | MDN

モジュール レベル3では、次のように記述します。

@namespace "XML-namespace-URL";
@namespace prefix "XML-namespace-URL";
CSS Namespaces Module Level 3

使用例

@namespace url(http://www.w3.org/1999/xhtml);
@namespace svg url(http://www.w3.org/2000/svg);

/* XHTMLが既定の名前空間と宣言されているため、これはXHTMLのa要素にマッチする */
a {}

/* これはSVGのa要素にマッチする */
svg|a {}

/* これはXHTMLとSVGの、両方のa要素にマッチする */
*|a {}
Examples - @namespace - CSS | MDN

@media (Media Queries)

スタイルを適用するかどうかを、条件によって決定できます。

@media [only | not]? media_type [ and ( media_feature [: value]? ) ] {
    /* media-specific rules */
}
  • only | not … 論理演算子
  • media_type … メディアタイプ
  • media_feature … メディア特性

論理演算子 (Logical operators)

  真と評価される条件
not あるクエリの評価が偽
and いずれのクエリも真
, いずれか1つのクエリが真。つまりor演算子
only すべてのクエリが真
論理演算子 - @media - CSS: カスケーディングスタイルシート | MDN

メディアタイプ (Media types)

適用対象とするmedia_typeには、以下のような値を指定できます。メディアタイプ - @media - CSS | MDN

  • all … すべてのデバイス
  • print … 印刷物
  • screen … コンピューターのスクリーン ≫レスポンシブWebデザイン
  • speech … スピーチ シンセサイザー (音声合成のシステム)

これ以外にも、ttv、tv、projection、handheld、braille、embossed、auralがありますが、これらはすべてMedia Queries 4で非推奨とされています。Internet Explorerでは、9以降でこの@mediaがサポートされます。Browser compatibility - @media - CSS | MDN

省略すると、allが指定されたと見なされます。

メディア特性 (Media features)

@media ( media_feature : value)

メディアタイプも同時に指定するならば、それと結合するために論理演算子のandが必要となります。

@media media_type and ( media_feature : value)
メディア特性 作用
color 出力デバイスの色深度
color-index 参照する色テーブルに含まれている色の数
aspect-ratio 出力デバイスの表示部分のアスペクト比
device-aspect-ratio  
device-height  
device-width  
display-mode  
grid  
height  
monochrome  
orientation  
resolution  
scan  
width 出力デバイスのレンダリング領域の横幅
prefers-color-scheme カラーテーマ (color themes) が明色 (light) か暗色 (dark) かの判定
forced-colors 強制カラーモード (forced colors mode) が有効かどうか。Windowsのハイコントラストモードなど
   
メディア特性 - @media - CSS | MDN メディア特性 - メディアクエリの利用 - CSS | MDN

width

width - CSS: カスケーディングスタイルシート | MDN

コード スタイルが適用される条件
@media handheld and (min-width: 20em),
    screen and (min-width: 20em) { ... }
モバイル端末でレンダリング領域の幅が20emより大きいか、PCでレンダリング領域の幅が20emより大きい
@media screen and (min-width: 500px)
    and (max-width: 800px) { ... }
レンダリング領域の幅が500px以上800px以下 (500pxと800pxの時点を含む)

prefers-color-scheme

カラーテーマ (color themes) がライト モードやダーク モードに設定されていることを検出できます。

@media screen and (prefers-color-scheme: light) {
    body { color: black; background-color: white; }
}

@media screen and (prefers-color-scheme: dark) {
    body { color: white; background-color: black; }
}

prefers-color-scheme - CSS: カスケーディングスタイルシート | MDN

  ブラウザでの変更方法 開発ツールでの変更方法
Firefox 設定の[ウェブサイトの外観]で変更できます。Change web appearance settings in Firefox | Firefox Help インスペクターに表示されるcolor scheme simulator buttonsの[このページの暗いカラースキームのシミュレーションを切り替えます (Toggle dark color scheme simulation for the page)]などを選択することで変更できます。View @media rules for prefers-color-scheme - Examine and edit CSS — Firefox Source Docs documentation
Chrome ブラウザで変更する方法は提供されておらず、システムの設定に依存します。 chrome://new-tab-page/ のページを開き、[Chrome をカスタマイズ]の[デザイン]から変更できます。ダークモードまたはダークテーマでブラウジングする - パソコン - Google Chrome ヘルプ [Rendering]の[Emulate CSS media feature prefers-color-scheme]で選択します。css - How can I emulate prefers-color-scheme media query in Chrome? - Stack Overflow
HTMLの情報サイトから、まとめて検索