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;
}これは、ライブラリを作ったり、使い回しができるようなコードを書く場合に使える機能です。
すでに変数を定義していればその変数の値を使ってコードを生成して、定義していないのであればデフォルトの変数の値を使います。



gulpでPostCSSを使う方法
Visual Studio Codeで対応する括弧に色を付けて見やすくする環境設定
Vue CLIのtitleタグやmetaタグの設定方法
WordPressの常時SSL化で、下層ページのhttpからhttpsへのリダイレクトがうまくいかない場合に確認すること
Visual Studio Codeで複数ファイルを編集するときにタブやペインの操作方法
WordPressでコンタクトフォームを設置したいならこれ!!Contact Form 7のインストール方法
iOS Safariでinputタグにフォーカスを合わせると、自動で画面が拡大してしまう原因と解決方法
効率的にHTMLを生成できるPugの特徴や記述方法
Vue.jsを使う人が最低限導入しておきたいVisual Studio Codeの拡張機能
CSSでclassがついていないタグにだけスタイルを当てる方法
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
Macでアプリごとに音量を調節できるアプリ「Background Music」
Macのターミナルでパスワード付きのZIPファイルを作成する方法
MacBook Proでディスプレイのサイズ調整をして作業スペースを広げる
SteerMouseの「自動移動」機能で保存ダイアログが表示されたら自動でデフォルトボタンへカーソルを移動させる
iPhoneでタッチが一切効かなくなった場合に強制再起動する方法