コンテンツにスキップ
トップに戻る
このページについて

変数

式を変数に代入し、スタイルシート全体でその変数を使用できます。

font-size = 14px

body
  font font-size Arial, sans-serif

//Compiles to:
body {
  font: 14px Arial, sans-serif;
}
font-size = 14px

body
  font font-size Arial, sans-serif

//Compiles to:
body {
  font: 14px Arial, sans-serif;
}

変数は式のリストで構成することもできます。

font-size = 14px
font-stack = "Lucida Grande", Arial, sans-serif

body
  font font-size font-stack

//Compiles to:
body {
  font: 14px "Lucida Grande", Arial, sans-serif;
}
font-size = 14px
font-stack = "Lucida Grande", Arial, sans-serif

body
  font font-size font-stack

//Compiles to:
body {
  font: 14px "Lucida Grande", Arial, sans-serif;
}

識別子(変数名、関数など)には、`$`文字を含めることもできます。 例:

$font-size = 14px
body {
  font: $font-size sans-serif;
}
$font-size = 14px
body {
  font: $font-size sans-serif;
}

nullを使用して空の変数を作成することはできませんが、括弧`()`を使用すれば作成できます。

empty = ()
body {
  font: empty sans-serif;
}
empty = ()
body {
  font: empty sans-serif;
}

コンパイル結果:

    body {
      font: sans-serif;
    }
    body {
      font: sans-serif;
    }

プロパティ参照

Stylus独自のもう1つの優れた機能は、値を変数に代入*せずに*定義されたプロパティを参照できることです。 この好例は、要素を垂直方向と水平方向に中央揃えするために必要なロジックです(通常、パーセンテージと負のマージンを使用して次のように行われます)。

#logo
  position: absolute
  top: 50%
  left: 50%
  width: w = 150px
  height: h = 80px
  margin-left: -(w / 2)
  margin-top: -(h / 2)
#logo
  position: absolute
  top: 50%
  left: 50%
  width: w = 150px
  height: h = 80px
  margin-left: -(w / 2)
  margin-top: -(h / 2)

変数 `w` と `h` を代入する代わりに、プロパティ名の前に `@` 文字を追加するだけで値にアクセスできます。

#logo
  position: absolute
  top: 50%
  left: 50%
  width: 150px
  height: 80px
  margin-left: -(@width / 2)
  margin-top: -(@height / 2)
#logo
  position: absolute
  top: 50%
  left: 50%
  width: 150px
  height: 80px
  margin-left: -(@width / 2)
  margin-top: -(@height / 2)

別のユースケースは、他のプロパティが存在するかどうか基づいて、mixin内でプロパティを条件付きで定義することです。 次の例では、デフォルトの `z-index`として `1` を適用しますが、`z-index` が以前に指定されていない場合*のみ*です。

position()
  position: arguments
  z-index: 1 unless @z-index

#logo
  z-index: 20
  position: absolute

#logo2
  position: absolute
position()
  position: arguments
  z-index: 1 unless @z-index

#logo
  z-index: 20
  position: absolute

#logo2
  position: absolute

プロパティ参照は、プロパティが見つかるまでスタックを「バブルアップ」し、プロパティを解決できない場合は `null` を返します。 次の例では、`@color` は `blue` に解決されます。

body
  color: red
  ul
    li
      color: blue
      a
        background-color: @color
body
  color: red
  ul
    li
      color: blue
      a
        background-color: @color