web制作のしおり

日々の学習をアウトプットします。

31.Sassの便利な書き方を知る ~変数、関数~

昨日は

  • SassがCSSの拡張言語であること
  • CSS入れ子構造でかけること(HTMLの親子関係に似ている)
  • 疑似要素も入れ子でかけること

を学びました。

 

本日は変数、関数について学習していきます。

 

CSSなのに変数?

Sassでは変数が使えます。

先に具体例を書くと

 

$font-bigger : 32px;

 

.test{

font-size : $font-bigger;

}

 

では1つずつ見ていきます。

 

まず変数について

変数は$マークを付けて宣言します。

「なぜ$マークを付けるか」を噛み砕いて言うなら、

$がついていたら、この後の文字列は変数名ですよとお知らせするということです。

この例での変数の宣言は下記のとおりです。

$font-bigger

これは、「font-bigger」という名前の変数を使いますよ。という意味です。

 

そして変数名の後にコロンで区切り、変数に代入する値を記述します。

先程の例では下記の部分です。

: 32px;

 

$font-bigger : 32px;

まとめ確認すると、

「font-bigger」という名前の変数に「32px」という値を代入して、これから使いますよ。

という意味ですね。

 

そして変数の値を使用するには、

CSSでいう「バリュー」の部分に変数名をそのまま記載します。

font-size : $font-bigger;

 

上記はfont-sizeプロパティのバリューとして、変数font-biggerを使用しています。

 

$font-biggerには32pxが代入されているので、

SassからCSSを書き出すと

 

font-size : 32px;

 

になります。

 

ここまでをまとめると、

  • 変数は$マークをつけて宣言する
  • 変数に値を代入する時は=ではなく:コロンで区切る
  • 変数の値を使用するには、バリューの部分に$を付けて変数名をかく。

 

変数は特に難しいことはなさそうですね。

 

関数を使うには?

変数が使えるのはわかった。関数はどうやって使うの?

関数を使うには関数名と処理を先に記述します。

 

まずは関数の書き方を確認します。

@function メソッド名($引数名)

{

   処理内容

          @return 返り値

}

こんな形で書かれます。

関数を書く場合の注意点は

  • 頭に@functionをつけること
  • 引数名の頭にも変数と同様に$マークをつけること
  • 返り値の頭に@returnをつけること

ですね。

 

では具体例で定義方法と使用の仕方を見ていきましょう

@function halfSize($value){

 @return $value / 2;

};

 

.test{

font-size : halfSize(32px);

}

 

では1つずつ見ていきましょう

@function halfSize($value){ }

この部分は、

関数名がhalfSizeで、引数の変数名が$valueの関数を使うよという意味ですね。

そして{ }この間に書かれた

 

@return $value / 2;

これは $value変数 の値を 2で割った値 を返り値とするよ

という意味です。

因みに、変数に対して四則演算ができるので、軽く紹介しておきます。

足し算は「+」、引き算は「-」、掛け算は「*」、割り算は「/」の記号を使います。

 

まとめると、

halfSizeという名前で、引数$valueに代入された値を、2で割って返すという処理をもつ関数が定義された。

ということですね。

 

では使い方を見ていきましょう。

 

font-size : halfSize(32px);

 

ここで、引数が32px?それって計算できるの?と思ったそこのあなた。

私も同じでした。

そう、pxという単位が付属しているのに、

引数に代入して計算できるのか?

それが・・・できるのです。

それは「単位付きの数値も数値(number型)として扱う」というSassのデータ型のおかげです。

 

ただし、異なる単位での計算はできないので注意です。

 

色々テストした結果、下記の組み合わせは可能なようです。

 

同一単位の計算

例: 10px +2px、30px / 2px

 

片方に単位の記載が無い計算

例: 15px + 12、45px *3

などです。

 

15px  * 2%は計算不可です。

 

また、単位なし同士の計算は可能ですが、

返り値の使用先で単位指定が必要な場合には

エラーになるのでどちらかに単位を指定する必要があります。

 

これらを踏まえて関数を作る時には、

 

関数内部は単位なしの数値を使って処理を記述し、

引数には単位ありの数値を代入して使用する

 

こういうやり方が汎用性が高そうですね。

 

今日のまとめ

  • 変数は$変数名で宣言、:と値を書いて代入。使う時は$変数名
  • 関数は@functionと@return、引数に$変数名を使って記述
  • 関数内部の処理の数値には単位を付けない方が汎用性が高そう

 

今日はSassの変数と関数について学習しました。

 

明日も楽しみです。

 

では、また。