現在、メインの CSS プリプロセッサとして LESS を使用しています。@media
次のようなクエリで変数を定義する必要があります (そして、多くの人がこの必要性を持っていると確信しています) 。
@media screen and (max-width: 479px) {
myVar: 10px;
}
@media screen and (min-width: 480px) and (max-width: 767px) {
myVar: 20px;
}
@media screen and (min-width: 768px) {
myVar: 30px;
}
.myElement {
padding: @myVar;
}
コンパイルの性質のため、これは LESS では機能しません (@myVar
は特定のスコープ内で@media
のみ定義されますが、グローバルではありません)。メディアクエリの前にグローバルに定義しても@myVar
、メディアクエリに従って更新されず、.myElement
何があってもその初期値を取得します。
問題は、他の CSS プリプロセッサでこれを実現できるか、それとも.myElement
各メディア クエリ内で をオーバーライドする運命にあるのかということです。この最も単純な例では問題ありませんが、実際のプロジェクトでは、これにより多くの時間とコピー/貼り付けを節約できます。
編集: 解決策ではありませんが、私の特定のプロジェクトの回避策:
- font-size
<html>
を base font-sizeに設定 myVar
LESS 変数は、ベースの font-size の導関数としてではrem
なく、で定義されています。px
- クエリを使用
@media
して、さまざまなメディアのベース フォント サイズを調整します。 - OPTIONALまだサポートしていないブラウザーにはREM ユニットポリフィルを使用します
rem
( http://caniuse.com/#search=rem )。これは IE 8 以下では機能しませんが、メディア クエリがサポートされていないためではありませrem
ん。とにかく、IE8以下はフルサイズのメディアクエリのないスタイルシートを取得します.
コードスニペット:
@myVar: .77rem; // roughly 10px, 20px and 30px respectively
html { font-size: 13px }
@media screen and (min-width: 480px) and (max-width: 767px) {
html { font-size: 26px }
}
@media screen and (min-width: 768px) {
html { font-size: 39px }
}
.myElement {
padding: @myVar;
}
これは、さまざまな font-size 要素とさまざまに測定されたブロックを組み合わせた、より広範な例を含む JSBinです。
私のニーズに合わせて簡単かつ柔軟に。うまくいけば、他の誰かに役立つでしょう。