【SCSS】background-imageで画像配列をforループ文で表示させる方法

CSS

SCSS(SASS)のfor文を使って、background-imageで画像配列をループさせる方法を紹介します。

SCSSのfor文でbackground-imageをループさせるときの手順

画像を連番にする

imgフォルダなどを作成し、そこに画像を配置します。
そして、画像のファイル名を変更し、連番になるようにします。
たとえば、次の通りです。

0-01.jpg
0-02.jpg
0-03.jpg
...

htmlタグにidを指定する

次のように、htmlタグに連番になったidを指定します。

<div id="img1"></div>
<div id="img2"></div>
<div id="img3"></div>
<div id="img4"></div>
<div id="img5"></div>
<div id="img6"></div>
<div id="img7"></div>
<div id="img8"></div>

これでimg1からimg8までをそれぞれ指定できるようになります。

for文を使って要素を連番にする

SCSSのfor文では次の2種類あります。

@for $i from 1 through 8 { }
@for $i from 1 to 8 { }

throughは最後の数字を含みます。
toは最後の数字を含みません。
どちらかを使用します。
上の例の場合、1から8を繰り返すという意味になります。

for文で連番のidを指定する

@for $i from 1 through 8 {
  #img#{$i} {
  }
}

上のidでは、img1・・・img8というようになっているので、#{}$iを囲います。
そうすることで、その部分が1~8の数字を意味することになります。

background-image内のurlに連番を指定する

@for $i from 1 through 8 {
  #img#{$i} {
    background-image: url('../assets/img/0-0#{$i}.jpg');
  }
}

上と同じで0-01・・・0-08という部分が連番になっているので、
そこを#{}$iを囲います。

CSS

Posted by devsakaso