もくじ
Web制作において、CSSで画像を指定する際に、毎回フルパスを書くのは手間がかかります
SCSSを活用すれば、画像パスを変数で管理でき、コードの修正や保守が格段に楽になります。
さらに、インターポレーション#{$変数}
を活用することで、柔軟なパス指定が可能になります。
本記事では、SCSSで画像パスを変数で指定する方法と、インターポレーションを活用した応用例を詳しく解説します。
画像パスを変数で指定するメリット
SCSSで画像パスを変数として管理することで、以下のようなメリットがあります。
管理が楽になる
パスを変更したい場合、一箇所修正するだけでOK
コードがスッキリする
同じパスを何度も書く必要がない
保守性が向上する
チーム開発でも一貫したパス指定ができる
SCSSで画像パスを変数にする基本の書き方
基本的な変数の使い方
$IMG_PATH: "/assets/images/";
.logo {
background-image: url("#{$IMG_PATH}logo.png");
}
解説
$IMG_PATH
に画像フォルダのパスを格納#{$IMG_PATH}logo.png
のように、インターポレーション#{$}
を使って動的にパスを組み立てる
これにより、フォルダ構成が変わった場合でも、変数を一箇所変更するだけで済みます。
インターポレーションとは?
SCSSでは#{$変数}
という記法を使うと、変数の値を文字列として埋め込むことができます。
これは、通常の文字列結合とは異なり、SCSSのコンパイル時に適用されます。
インターポレーションを活用した応用例
①複数の画像パスを動的に指定する
たとえば、ダークモードとライトモードで画像を切り替える場合、以下のように記述できます。
$theme: "dark"; // "light" に変更可能
$IMG_PATH: "/assets/images/";
.button {
background-image: url("#{$IMG_PATH}button-#{$theme}.png");
}
$theme
の値を"dark"
にすると/assets/images/button-dark.png
が適用$theme
の値を"light"
にすると/assets/images/button-light.png
が適用
②メディアクエリと組み合わせる
レスポンシブ対応で、デバイスごとに異なる画像を適用する場合にも便利です。
$IMG_PATH: "/assets/images/";
.banner {
background-image: url("#{$IMG_PATH}banner-desktop.jpg");
@media (max-width: 768px) {
background-image: url("#{$IMG_PATH}banner-mobile.jpg");
}
}
スマホサイズではbanner-mobile.jpg
、PCサイズではbanner-desktop.jpg
が適用されます。
SCSSで画像パスを指定するときによくあるエラーとその対処法
変数が適用されない
原因
url()
内で#{$}
を使っていない可能性があります。対処法
url("#{$変数}")
の形にする
誤った書き方
$IMG_PATH: "/assets/images/";
.logo {
background-image: url("$IMG_PATHlogo.png"); // 動かない
}
補足: SCSSの変数展開は、url()
の中でそのまま使えないため、#{$変数}
を用いる必要があります。
正しい書き方
$IMG_PATH: "/assets/images/";
.logo {
background-image: url("#{$IMG_PATH}logo.png"); // OK
}
画像が表示されない(相対パスの問題)
原因
コンパイル後のCSSファイルの場所を基準に画像パスを指定していない可能性がある。
対処法
1.コンパイル後のCSSファイルから見た相対パスを指定する。
2.SCSSの場所に依存しない形で画像を指定したい場合は、ルートパスで記述する方法もある。
SCSSCopy$IMG_PATH: "/images/"; // ルートパスで指定
.logo {
background-image: url("#{$IMG_PATH}logo.png");
}
まとめ
SCSSで画像パスを変数化し、インターポレーションを活用することで、管理の手間を大幅に削減できます。
画像パスを変数にすることで、コードがスッキリ&保守性UP
#{$}
を使えば動的にパスを生成可能レスポンシブ対応やテーマ変更にも応用できる
SCSSを活用して、効率的なスタイル設計を実現しましょう!
Sassを学習するならこの1冊で充分!
もみじ
HTMLとCSSの知識があれば、Sassについての必要な知識を身に付けることができます。
実践的な内容を学ぶことができ解説も丁寧で分かりやすく、基礎的な内容から管理・運用・設計のやり方もこの1冊で学ぶことができます。