CSSカスタム変数プロパティ:less,sassのようにcssで変数を使用
紹介する
通常、大規模なドキュメントまたはアプリケーション(小規模なドキュメントまたはアプリケーション)には、大量のCSSが含まれます.これらのCSSファイルには通常、同じデータが大量に存在します.たとえば、1つのWebサイトで1つの色のトピックを使用し、常に3~4色で貫くことを繰り返します.これらのデータを変更することは非常に困難であり、エラーが発生しやすい.CSSファイル(さらには複数のファイル)にばらばらに分布しているため、検索置換実装を使用できない可能性がある.
したがって、
親測:ios 9環境では効果がなく、ios 9はES 56をサポートしていないが、これに関連して2017-11-5注と推測される.
構文
カスタム属性の定義:
使用例初歩使用 大文字と小文字は敏感ですが、 設定値の注意事項
カスタム属性は 継承性と優先度(通常は理解できる) は、通常の属性と混合することができる 相互呼び出し無効
calc()は汎用的な数学演算規則を使用しますが、よりスマートな機能も提供します. は「+」、「-」、「*」、「/」の4つの演算を使用します. は、パーセンテージ、px、em、remなどの単位を使用することができる. は、様々な単位を混合して計算することができる. 式に「+」と「-」がある場合、その前後にスペースが必要です.例えば、「widht:calc(12%+5 em)」というスペースのない書き方は間違っています. 式に「*」と「/」がある場合は、前後にスペースはありませんが、スペースを残すことをお勧めします.
変数初期デフォルト値 変数の置換使用仕様
翻訳の参考: https://drafts.csswg.org/css-...
通常、大規模なドキュメントまたはアプリケーション(小規模なドキュメントまたはアプリケーション)には、大量のCSSが含まれます.これらのCSSファイルには通常、同じデータが大量に存在します.たとえば、1つのWebサイトで1つの色のトピックを使用し、常に3~4色で貫くことを繰り返します.これらのデータを変更することは非常に困難であり、エラーが発生しやすい.CSSファイル(さらには複数のファイル)にばらばらに分布しているため、検索置換実装を使用できない可能性がある.
したがって、
CSS
は、ユーザが特定の構文を使用して関連変数を定義し、var()
参照を一定の範囲で繰り返し使用し、これらの変数を変更することを可能にし、これらの変数を参照する場所のCSSも対応して変化する.親測:ios 9環境では効果がなく、ios 9はES 56をサポートしていないが、これに関連して2017-11-5注と推測される.
構文
カスタム属性の定義:
--*
--
で始まり、変数名が付けられ、継承性があり、すべての要素に適用され、属性が計算され、アニメーションには適用されません.Name: --*
Value:
Initial: (nothing, see prose)
Applies to: all elements
Inherited: yes
Percentages: n/a
Media: all
Computed value: specified value with variables substituted (but see prose for "invalid variables")
Canonical order: per grammar
Animatable: no
使用例
:root {
--main-color: #06c;
--accent-color: #006;
}
/* The rest of the CSS file */
#foo h1 {
//
color: var(--main-color);
}
以下使用方法エラー!!! :
.foo {
--side: margin-top;
var(--side): 20px;
}
`margin-top: 20px`, 。
--FOO
と--foo
は合法的な変数ですが、前者を参照すると前者の値を指し、後者も同様です. h1 {
--font-color: lightblue;
--Font-color: lightgreen;
color: var(--Font-color);
//lightgreen
}
カスタム属性は
!important
で終わることができますが、CSS解析器はこの属性の値を自動的に削除し、滝の流れの形で優先属性を決定します.言い換えれば、!important
は使えますがトップクラス優先"!の他の同類CSSの発効を禁止する作用はCSSを実現していない.h1 {
--font-color: lightblue!important;
--Font-color: lightgreen;
color: var(--font-color);
color: var(--Font-color);
//lightgreen
}
:root { --color: blue; }
div { --color: green; }
#alert { --color: red; }
* { color: var(--color); }
I inherited blue from the root element!
//blue
I got green set directly on me! //green
While I got red set directly on me! //red
I’m red too, because of inheritance!
//red
```
:root {
--main-color: #c06;
--accent-background: linear-gradient(to top, var(--main-color), white);
}
body {
font-size: 16px;
}
//h1 16px
h1 {
--font-color: lightblue!important;
--Font-color: lightgreen;
--one: calc(var(--two) + 30px);
--two: calc(var(--one) - 50px);
color: var(--font-color);
color: var(--Font-color);
font-size: var(--one);
}
は異なる範囲で合法的であり、実際には両者は異なる範囲で異なる変数
one { --foo: 10px; } //10
two { --bar: calc(var(--foo) + 10px); } //20
three { --foo: calc(var(--bar) + 10px); } //30
を指している.calc()は汎用的な数学演算規則を使用しますが、よりスマートな機能も提供します.
.component .header {
color: var(--header-color, blue);
}
.component .text {
color: var(--text-color, black);
}
/* In the larger application’s style: */
.component {
--text-color: #080;
/* header-color blue
: var(--header-color, blue, red)
*/
}
var()
は、CSS文字 .foo {
--gap: 20;
margin-top: var(--gap)px;
}
を原文で置換するのではなく、 margin-top: 20px;(a length)
を設定することはできないが、 margin-top: 20 px; (a number followed by an ident )
と同等であり、これは非合法な属性値である.ただし、 calc()
は、 .foo {
--gap: 20;
margin-top: calc(var(--gap) * 1px);
}
の下のコードが文法的に誤りがないが、実際の効果はないことを実現することができる.20px
は
の有効な値ではないため、ここでの設定より優先度が高い必要がある他の設定がない場合、または
の
がない場合、グローバルデフォルトの
が使用されます. :root { --not-a-color: 20px; }
p { background-color: red; }
p { background-color: var(--not-a-color); }
// , `p`
翻訳の参考: