すべてを試しましたが、メディア クエリで Stylus CSS プリプロセッサに変数を使用させることができません。
たとえば、これは機能しません:
t = 1000px
@media screen and (max-width: t)
html
background blue
誰でもこれを行う方法を知っていますか?
スタイラスは、このプル リクエストと同じことを行う少しクリーンな方法をサポートしているようです。
ここでは、ブロック サイズを指定して、コンテナーをページの中央に配置するスタイルを作成し、ブラウザーのサイズに基づいてコンテナー サイズを 1、2、または 3 ブロックの幅に設定できます。メディア クエリを変数にする (メディア クエリ行内に変数を貼り付けるのではなく) と、上記のunquote
方法を使用するよりも少しすっきりします。
/* in app.styl */
full_block_width = 300px
three_blocks = "all and (min-width: " + 3*full_block_width + ")"
two_blocks = "all and (min-width: " + 2*full_block_width + ") and (max-width: " + (3*full_block_width - 1) + ")"
one_block = "all and (max-width: " + (2*full_block_width - 1) + ")"
.container
margin: auto
@media three_blocks
.container
width: (3*full_block_width)
@media two_blocks
.container
width: (2*full_block_width)
@media one_block
.container
width: full_block_width
悲しいことに、メディア クエリで変数や補間を使用することはできません。私は昨日同様のタスクに出くわし、この解決策を思いつきました:
t = 1000px
unquote("@media screen and (max-width: " + t + ") {")
html
background blue
unquote("}")
これはきれいではありませんが、うまくいきます —unquote
このような Stylus の問題のほとんどを実際に回避するために使用できます。
今すぐ動作するはずです:
t = 1000px
@media screen and (max-width: t)
html
background blue
http://stylus-lang.com/docs/media.html
ドキュメントから:
補間と変数
メディア クエリ内で補間と変数の両方を使用できるため、次のようなことが可能です。
foo = 'width'
bar = 30em
@media (max-{foo}: bar)
body
color #fff
これは
@media (max-width: 30em) {
body {
color: #fff;
}
}
MQ 内で式を使用することもできます。
.foo
for i in 1..4
@media (min-width: 2**(i+7)px)
width: 100px*i
屈するだろう
@media (min-width: 256px) {
.foo {
width: 100px;
}
}
@media (min-width: 512px) {
.foo {
width: 200px;
}
}
@media (min-width: 1024px) {
.foo {
width: 300px;
}
}
@media (min-width: 2048px) {
.foo {
width: 400px;
}
}
クリーンで読みやすい方法を提供できる場合は、次のようにハッシュを有利に使用します。
// Custom media query sizes
--query = {
small: "screen and (min-width: 554px)",
medium: "screen and (min-width: 768px)",
large: "screen and (min-width: 992px)",
extra-large: "screen and (min-width: 1200px)",
}
たとえば、次のように呼びます。
.main-logo
font-large(--font.uni-sans-heavy)
position: relative
top: 50px
left: 35px
.logo-first
color: --color.white
margin-right: 3px
.logo-second
color: --color.bright-red
@media --query.large
left: 70px
非常に明白で、読みやすい。美しくシンプルに保ちます。
media
メディア クエリ用の名前付き変数を作成する必要がなくなる mixin を作成するのが好きです。
media(query)
@media query
{block}
使用方法は次のとおりです。
+media("screen and (min-width:" + width + "), print")
.class
foo: bar