Dart Sassの変数の基本的な使い方|Dart Sass入門

Sassの特徴の1つに「変数」機能があります。
現在はCSSにも変数機能があるので、そこまで便利に思わないかもしれませんが、Sassならではの特徴があります。
今回はDart Sassの変数機能についてまとめておきます。
変数を使うメリット
「変数」はJavaScriptや他のプログラミング言語を使っている人にとってはおなじみの機能です。
値に名前を付けて管理することは、いくつかのメリットがあります。
同じ値を複数箇所で使い回せる
まず、変数を使う大きなメリットは同じ値を複数箇所で使い回せるようになることです。
例えばウェブサイト上で使うボタンの色やシャドウの強さなど、変数にして管理することで修正時に1箇所変更するだけで反映されます。
同じ記述を何度も書く必要がなるため、効率化にも繋がります。
どんな値か分かりやすくなる
また、変数で管理しておくことで、どんな値なのか分かりやすくなるメリットもあります。
例えば「#0076b5」というカラーコードを見ても、この色がなんなのかパッと見では分かりません。
しかし、「$primary-color」と名前が付いていると、「この色はメインとなる色なんだ」と分かりやすくなります。
名前を付けることで、他の人が見たり、後から見返したときにどんな値なのか分かりやすくなります。
CSS変数との違い
CSSにも変数機能がありますが、Sassの変数機能の特徴は「コンパイル後はただの値になること」です。
たとえばCSS変数の場合は、メディアクエリなどを使って特定条件の場合に変数の中の値を一括で変更できます。
そのため、ダークモード時に色を変える対応をする場合はCSS変数を使った方がラクに実現できます。
ただCSS変数は書き方が直感的ではないため、Sass変数でCSS変数を管理するようなハイブリッドな使い方をする場合もあります。
DartSass変数の使い方
変数の定義
変数を定義するには、Sassファイル上で「$変数名: 値;」の形で記述します。
$primary-color: #0076b5;変数のルールは下記の通りです。
$マークを先頭に付ける- 数字から始まる変数名は不可(
$1st-color) - CSS変数のように「
--」で始まったり、「@」で始まる変数名は不可($--primary-color、$@primay-color) - 値であれば何でも入るため、色以外にもpx指定やフォントも定義できる
変数の使用
変数を使いたい場合は、定義した変数名を入力するだけで使えます。
例えば「background-color」で使いたい場合は下記のように記述します。
background-color: $primary-color;かなり直感的ではないでしょうか。
ファイル分割して変数を使用する場合
「variable.scss」のような変数定義用のファイルを用意して、その中の変数を「@use」で呼び出して使う場合、別ファイルで定義された変数だと明確に記述する必要があります。
まず、@useで呼び出す場合に「@use "ファイル名" as 名前空間;」のように定義します。
使いたい場合は「名前空間.$変数名」のようにすれば使えます。
@use "variable" as var;
.primary-btn {
background-color: var.$primary-color;
}このように記述することで「var」の中にある「$primary-color」を使うと分かります。
ちなみに、名前空間を定義していない場合はファイル名がそのまま名前空間になります。
!defaultフラグの活用
少しややこしいですが、DartSassには「!default」フラグ機能があります。
変数の定義時に「!default」を付けることで、変数にまだ値が設定されていないか値が「null」のときにだけ値を設定してくれます。
そのため、下記の場合は「#0076b5」が入ります。
$primary-color: #0076b5 !default;
.primary-btn {
background-color: $primary-color;
}しかし、下記の場合は「#000」が入ります。
$primary-color: #000;
$primary-color: #0076b5 !default;
.primary-btn {
background-color: $primary-color;
}これは、ライブラリを作ったり、使い回しができるようなコードを書く場合に使える機能です。
すでに変数を定義していればその変数の値を使ってコードを生成して、定義していないのであればデフォルトの変数の値を使います。



CSSで::placeholderにスタイルを設定する方法
iTerm2を使いこなすために覚えておきたいショートカット集
超軽量なコードエディタ 「Zed」をサブエディタとして活用する
iOS Safariで文章の最後の1文字だけ改行されてしまう現象の対処法
サーバーのアップロードファイルの最大容量の確認と変更方法
Visual Studio Codeでパス補完機能を細かく設定して自分好みにできる拡張機能「Path Autocomplete」
EJSのincludeで別ファイルを読み込むときの画像パスを指定する方法
Movable TypeでAssetURLやEntryPermalink・ContentPermalinkで出力されるパスを絶対パスから相対パスに変える
EmmetのWrap with Abbreviationで複数行のマークアップを効率的に行う
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Ulyssesでソースブロックとテーブルタグを使って、無理矢理テーブルを表示させる方法
ウェブサイトをダークモードに対応するときに気をつけること
Abstractで「Failed to open “○○”」「An unexpected problem occurred, try again?」と表示されるときに確認すること
AlfredのWorkflowをコードを書いて作成する方法
Apple Watchで完結するポモドーロテクニック用アプリ「Flat Tomato」がかなり便利!
DeepL翻訳をAlfred上で完結させるAlfred Workflow「DeepL-Translate」
Visual Studio Codeでミニマップ関連を見やすくするカスタマイズ方法
Visual Studio CodeでCSVの編集を見やすく行う拡張機能「Edit csv」
Biscuitで普段はブラウザでリンクを開きつつ、ダウンロードリンクはBiscuitで開く方法
Movable Typeでコメントアウトして出力時に無視する方法