【PR】を含みます。

Webデザイン

【SCSS】画像パスを変数で指定する方法!インターポレーションの活用例

SCSS 画像パスを変数で指定する方法!インターポレーションの活用例

Web制作において、CSSで画像を指定する際に、毎回フルパスを書くのは手間がかかります

SCSSを活用すれば、画像パスを変数で管理でき、コードの修正や保守が格段に楽になります。

さらに、インターポレーション#{$変数}を活用することで、柔軟なパス指定が可能になります。

本記事では、SCSSで画像パスを変数で指定する方法と、インターポレーションを活用した応用例を詳しく解説します。

画像パスを変数で指定するメリット

SCSSで画像パスを変数として管理することで、以下のようなメリットがあります。

  • 管理が楽になる

    パスを変更したい場合、一箇所修正するだけでOK

  • コードがスッキリする

    同じパスを何度も書く必要がない

  • 保守性が向上する

    チーム開発でも一貫したパス指定ができる

SCSSで画像パスを変数にする基本の書き方

基本的な変数の使い方

SCSS
Copy
  1. $IMG_PATH: "/assets/images/";
  2. .logo {
  3.   background-image: url("#{$IMG_PATH}logo.png");
  4. }

解説

  • $IMG_PATHに画像フォルダのパスを格納

  • #{$IMG_PATH}logo.pngのように、インターポレーション#{$}を使って動的にパスを組み立てる

これにより、フォルダ構成が変わった場合でも、変数を一箇所変更するだけで済みます。

インターポレーションとは?

SCSSでは#{$変数}という記法を使うと、変数の値を文字列として埋め込むことができます。

これは、通常の文字列結合とは異なり、SCSSのコンパイル時に適用されます。

インターポレーションを活用した応用例

①複数の画像パスを動的に指定する

たとえば、ダークモードとライトモードで画像を切り替える場合、以下のように記述できます。

SCSS
Copy
  1. $theme: "dark"; // "light" に変更可能
  2. $IMG_PATH: "/assets/images/";
  3. .button {
  4.   background-image: url("#{$IMG_PATH}button-#{$theme}.png");
  5. }
  • $themeの値を"dark"にすると/assets/images/button-dark.pngが適用

  • $themeの値を"light"にすると/assets/images/button-light.pngが適用

②メディアクエリと組み合わせる

レスポンシブ対応で、デバイスごとに異なる画像を適用する場合にも便利です。

SCSS
Copy
  1. $IMG_PATH: "/assets/images/";
  2. .banner {
  3.   background-image: url("#{$IMG_PATH}banner-desktop.jpg");
  4.   @media (max-width: 768px) {
  5.     background-image: url("#{$IMG_PATH}banner-mobile.jpg");
  6.   }
  7. }

スマホサイズではbanner-mobile.jpg、PCサイズではbanner-desktop.jpgが適用されます。

SCSSで画像パスを指定するときによくあるエラーとその対処法

変数が適用されない

  • 原因

    url()内で#{$}を使っていない可能性があります。

  • 対処法

    url("#{$変数}")の形にする

誤った書き方

SCSS
Copy
  1. $IMG_PATH: "/assets/images/";
  2. .logo {
  3.   background-image: url("$IMG_PATHlogo.png"); // 動かない
  4. }

補足: SCSSの変数展開は、url()の中でそのまま使えないため、#{$変数}を用いる必要があります。

正しい書き方

SCSS
Copy
  1. $IMG_PATH: "/assets/images/";
  2. .logo {
  3.   background-image: url("#{$IMG_PATH}logo.png"); // OK
  4. }

画像が表示されない(相対パスの問題)

  • 原因

    コンパイル後のCSSファイルの場所を基準に画像パスを指定していない可能性がある。

  • 対処法

    1.コンパイル後のCSSファイルから見た相対パスを指定する。

    2.SCSSの場所に依存しない形で画像を指定したい場合は、ルートパスで記述する方法もある。

    SCSS
    Copy
    1. $IMG_PATH: "/images/"; // ルートパスで指定
    2. .logo {
    3.   background-image: url("#{$IMG_PATH}logo.png");
    4. }

まとめ

SCSSで画像パスを変数化し、インターポレーションを活用することで、管理の手間を大幅に削減できます。

  • 画像パスを変数にすることで、コードがスッキリ&保守性UP

  • #{$}を使えば動的にパスを生成可能

  • レスポンシブ対応やテーマ変更にも応用できる

SCSSを活用して、効率的なスタイル設計を実現しましょう!

Sassを学習するならこの1冊で充分!

アイコン画像

もみじ

HTMLとCSSの知識があれば、Sassについての必要な知識を身に付けることができます。

実践的な内容を学ぶことができ解説も丁寧で分かりやすく、基礎的な内容から管理・運用・設計のやり方もこの1冊で学ぶことができます。

-Webデザイン
-