サーチ…


前書き

CSS変数を使用すると、CSS文書全体で使用できる再利用可能な値を作成することができます。

たとえば、文書全体で単一の色を再利用することは、CSSで一般的です。 CSS変数の前では、これはドキュメント全体で同じ色の値を何度も再利用することを意味します。 CSS変数を使用すると、色の値を変数に代入して複数の場所で参照することができます。これにより、従来のCSS値を使用するよりも簡単に値を変更できるようになります。

構文

  • :変数のグローバルな定義を可能にする擬似クラス* /
  • - 変数名: ; / *変数を定義する* /
  • var( - 変数名、 デフォルト値 )/ *定義された変数をデフォルト値fallbackで使う* /

備考

CSS変数は現在、実験的な技術と考えられています。


ブラウザーのサポート/互換性

Firefox:バージョン31 + (デフォルトで有効)

Mozillaより詳しい情報

Chrome:バージョン49 + (デフォルトで有効)

「この機能は有効にすることで、テストのためにクロームバージョン48で有効にすることができexperimental Web Platform機能を入力します。 chrome://flags/ Chromeのアドレスバーに、この設定にアクセスするには。」

IE:サポートされていません。

エッジ: 開発中

Safari:バージョン9.1以降

可変色

:root {
  --red: #b00;
  --blue: #4679bd;
  --grey: #ddd;
}
.Bx1 {
  color: var(--red);
  background: var(--grey);
  border: 1px solid var(--red);
}

可変寸法

:root {
  --W200: 200px;
  --W10: 10px;
}
.Bx2 {
  width: var(--W200);
  height: var(--W200);
  margin: var(--W10);
}

可変カスケーディング

CSS変数は他のプロパティと同じようにカスケードし、安全に再呼び出しできます。

変数を複数回定義することができ、選択された要素に最も高い特異性を持つ定義のみが適用されます。

このHTMLを仮定すると:

<a class="button">Button Green</a>
<a class="button button_red">Button Red</a>
<a class="button">Button Hovered On</a>

私たちはこのCSSを書くことができます:

.button {
  --color: green;
  padding: .5rem;
  border: 1px solid var(--color);
  color: var(--color);
}

.button:hover {
  --color: blue;
}

.button_red {
  --color: red;
}

そして、この結果を得る:

3つのボタンのバリエーション

有効/無効

名前付けCSS変数に名前を付けるときには、他のCSSプロパティと同じように文字とダッシュだけが含まれています(例:行の高さ、-moz-box-sizing)がダブルダッシュ( - )で始まります

//These are Invalids variable names
--123color: blue;
--#color: red;
--bg_color: yellow
--$width: 100px;

//Valid variable names
--color: red;
--bg-color: yellow
--width: 100px;

CSS変数は大文字と小文字を区別します。

/* The variable names below are all different variables */
--pcolor: ;
--Pcolor: ;
--pColor: ;

空と対空

/* Invalid */
    --color:;

/* Valid */
  --color: ; /* space is assigned */

連結

    /* Invalid - CSS doesn't support concatenation*/
    .logo{
        --logo-url: 'logo';
        background: url('assets/img/' var(--logo-url) '.png');
    }

    /* Invalid - CSS bug */
    .logo{
        --logo-url: 'assets/img/logo.png';
        background: url(var(--logo-url));
    }

    /* Valid */
    .logo{
        --logo-url: url('assets/img/logo.png');
        background: var(--logo-url);
    }

単位を使用するときは注意してください

    /* Invalid */
    --width: 10;
    width: var(--width)px;

    /* Valid */
    --width: 10px;
    width: var(--width);

    /* Valid */
    --width: 10;
    width: calc(1px * var(--width)); /* multiply by 1 unit to convert */
    width: calc(1em * var(--width));

メディアクエリを使用する

メディアクエリ内の変数を再設定し、それらが使用されている場所であればどこでもカスケードすることができます。これはプリプロセッサ変数では不可能です。

ここで、メディアクエリは、非常に単純なグリッドを設定するために使用される変数を変更します。

HTML

<div></div>
<div></div>
<div></div>
<div></div>

CSS

:root{
    --width: 25%;
    --content: 'This is desktop';
}
@media only screen and (max-width: 767px){
    :root{
        --width:50%;
        --content: 'This is mobile';
    }
}
@media only screen and (max-width: 480px){
    :root{
        --width:100%;
    }
}

div{
    width: calc(var(--width) - 20px);
    height: 100px;
}
div:before{
    content: var(--content);
}

/* Other Styles */
body {
    padding: 10px;
}

div{
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight:bold;
    float:left;
    margin: 10px;
    border: 4px solid black;
    background: red;
}

このCodePenデモでウィンドウのサイズを変更することができます

実際のサイズ変更のアニメーション化されたスクリーンショットです:

画面のサイズ変更



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow