2016-08-03 11 views
2

例:これは、レンダリングされcontentプロパティの値にCSSカスタムプロパティを使用できますか?

:root { 
    --PrimaryThemeColor: #3acfb6; /* with or without quotes */ 
} 

.ColorSwatch:after { 
    content: var(--PrimaryThemeColor); 
} 

、計算されたCSSは、文字通りその値です。

content: var(--PrimaryThemeColor); 

私はフォールバックとして計算値を注入ポストプロセッサを使用している場合であっても、値自体が文字列ではないので、それはcontentには無効です。

.ColorSwatch:after { 
    content: #3acfb6; 
    content: var(--PrimaryThemeColor); 
} 
+0

「引用符の有無」とはどういう意味ですか?引用符で正しく動作するはずです。 – BoltClock

+0

はい、可能です。しかし、あなたの問題は、 'content'で変数を使うのではなく、色を文字列に変換しているようです。 – Oriol

+0

CSS変数は、CSSプロパティに適用すると機能しますが、コンテンツに適用されていない場合は機能しません。 CSS変数は、その値を文字列として出力するjavascript変数のようには動作しません。 – Buffalo

答えて

2

カスタムプロパティの値は、対応するvar()発現のための文字列(いずれかのリテラル文字列、attr()式、又はcontentの場合における前記トークンの任意の数の任意の組み合わせ)でなければなりません文字列が期待される場所で正しく動作するようにします。

var()関数を使用して、文字列以外の値を文字列に変換することも、任意の2つのデータ型間で変換することもできません。値は常に解析され、そのまま保存され、置換されます。値はあらゆる種類のトークンから構成できます。したがって、データ型間の変換は非常に難しくなります。

+0

そうですね、私はすでにそれを指摘しました。 > "値そのものは文字列ではないため、コンテンツには無効です。" –

+0

@ケビン・サトル:うん、あなた自身の質問に答えた。 – BoltClock

+2

合理的に一般的なユースケースのように見えるので、 'var'構文を' var( - name type-or-unit) 'に拡張するとよいでしょう。これは 'font-size:var( - size px)'の両方を許可し、厄介な 'font-size:calc(1px * var( - size))'を避け、コンテンツ:var( - primaryThemeColor文字列) '。 ( 'type-of-unit'はもちろん、' attr() '関数で使用されているのと同じセマンティクスを持っています)。 –

関連する問題