2017-05-11 15 views
1

変数の変数の値がもう1つの変数になることは可能ですか?別の変数内の変数

:root { 
    --theme-primary: --color-red; 
    --color-red: #F44336; 
} 

...または:このよう

:root { 
    --theme-primary: var(--color-red); 
    --color-red: #F44336; 
} 

可能な場合は、コードが可能としてJS を使用せずに、何ですか?

+1

[CSS変数](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables)新しいの一種であるので、私は、それを聞いていない人のためのリンクを追加するだけです。 – ArneHugo

答えて

2

可能です。次の例では、変数--theme-primary--color-yellowの値を取得します。可能でない場合(変数--color-yellowが定義されていないか、有効でない)、--theme-primaryは黒(#000)になります。

:root { 
 
    --theme-primary: var(--color-yellow, #000); 
 
    --color-yellow: yellow; 
 
    --color-blue: blue; 
 
} 
 
:root { 
 
    --theme-secondary: var(--color-blue); 
 
} 
 
div { 
 
    background: var(--theme-primary, green); 
 
    border:5px dashed var(--theme-secondary, white); 
 
    height:100px; 
 
    width:100px; 
 
}
<div>Hello World</div>

また、フォールバックとして変数(valの2番目のパラメータ)を使用することができます。だから、var(--theme-primary, var(--theme-secondary, white));

追加リンクのような何かを行うことができます:

+0

私の主要なブラウザはFirefoxで、最新バージョンを実行しています。そして、私はすべての主要なブラウザがそれをサポートしていると確信しています。 –

+0

Hmmm ...私は 'var()'の "第2の値"が何であったのか少し不思議です。変数に何らかのエラーがある場合、フォールバックの値ですか? –

+0

@LloydDominic - そうです!最初のパラメータが失敗すると、2番目のパラメータが有効になります。上記の例では、フォールバックは使用されていないので、最初のパラメータは正常に使用されています。 –