Sassのマップ機能を使った変数の管理方法

Sassには「マップ」というデータタイプが存在します。
ただ普通に変数を大量に並べて管理するよりも、より構造的に管理できるので、その方法についてまとめておきます。
マップの使い方
マップは連想配列のように、「キーとなる名前」と「値」をペアにして書きます。丸括弧で囲むのを間違えないように注意してください(慣れていないとCSSにつられて丸括弧を書いてしまう)。
$マップ名: (
名前1: 値1,
名前2: 値2,
名前3: 値3
);マップは入れ子にも出来ます。
$マップ名: (
名前1: 値1,
入れ子マップ名: (
名前2: 値2,
名前3: 値3
),
名前4: 値4
);
マップに入れたデータを取り出したい時は、map-get()関数を使用します。
使い方は第一引数にマップ名、第二引数にキーとなる名前を入力するだけです。
map-get($マップ名, 名前1)
// 値1が取得できる何が便利なのか?
簡単な使い方を聞いただけでは「何が便利なの?」という声が聞こえてきそうなので、ここから先は実際にデータを入れて、自分がどんな風に使っているのか説明していきます。
まず実際に名前と数値を入れてみたのが、下記のコード。
今回は色を管理する前提で$colorsというマップの中に色情報が入っています。
$colors: (
main: #0075c2,
sub: #a0d8ef,
text: #333
);
このままだと変数名の先頭に「color_」を付けているのとあまり変わらない気がします。
$color_main: #0075c2;
$color_sub: #a0d8ef;
$color_text: #333;ただ、マップを使うとeach文が書けます(配列を使っても可能)。
@each $colorName, $color in $colors {
//.color_変数名 のclassを生成
.color_#{$colorName} {
color: $color;
}
//.bg_変数名 のclassを生成
.bg_#{$colorName} {
background: $color;
}
}上記のeach文をSassファイルの中に記述しておくと、マップ内の色情報を使用して、colorプロパティを変更する.color_mainクラスや、backgroundプロパティを変更する.bg_subクラスが自動で生成されます。
こんな風にマップ内のデータを元にしてクラスを生成するのは結構使えますし、変更があった場合はマップを書き換えればOKですし、データを追加すればまたクラスが追加されます。
マップ内のデータをすぐ呼び出せるようにする
ただ1つ不便なのが、マップ内のデータを呼び出したい時にmap-get($colors, main);と書く必要がある事です。かなり長い。
そこで、すぐマップ内のデータを呼び出すために関数を1つ作ってしまいます。
@function color($colorName) {
@return map-get($colors, $colorName);
}上記コードは、map-getを返してくれるシンプルなcolor()関数を定義しました。あとはコード内でcolor(名前)を打つだけでmap-getが返ってきて、最終的にデータを取り出せます。
color(main)
// map-get($colors, main);を返してくれる今回は色のみのデータを管理しましたが、余白やブレークポイントなども同様に管理が出来ます。

思考したり情報整理したい時はMarkdown記法で文章を書き出そう!!Webデザイナーの情報整理術
Google Chromeでinput要素の補完機能を使うと背景に色がついてしまう問題
Visual Studio Codeの拡張機能「Trailing Spaces」でコードの中にある余計なスペースを表示する
gzip圧縮をしてウェブサイトの表示スピードを上げる方法
Visual Studio CodeでSVGをプレビューする拡張機能「SVG Preview」
WordPressの自動バックグラウンド更新を無効にする方法とその注意点
PubSubHubbubを利用してWebサイトの更新をリアルタイムに通知しよう
WordPressのプラグインはどれを入れたら良い?とりあえず最初に導入をオススメするプラグイン一覧
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Keyboard Maestroの変数基礎
Neovimを使い始める最初の一歩として便利な「LazyVim」
ウェブサイトをmacOSアプリとしてラッピングする「Unite Pro」
Keyboard Maestroの「Macro Debugger」で複雑なマクロのデバッグを行う方法
無料版でも高機能なランチャーアプリ「Raycast」の基本機能と環境設定
OnyXでターミナルを使わずにmacOSの詳細設定を行う
軽量で高速なターミナルエミュレーター「Ghostty」の設定方法
Eagleで実現するクリエイティブ素材の簡単管理
かゆいところに手が届く「Supercharge」でMac環境を便利にカスタマイズする
超軽量なコードエディタ 「Zed」をサブエディタとして活用する