0
2

More than 3 years have passed since last update.

CSS(SCSS) @forを使ったインクリメント文でゼロパディングした連番の出し方

Posted at

SCSSで@forをインクリメントして連番の記述をする時に

01〜10をインクリメントしたい場合下記のように

if文をネストすることで連番として出力できます。

実現したいこと

下記のような連番を@forでインクリメントしたい

CSS
.con1{background-image: url(../img/index-main_1.jpeg);}
.con2{background-image: url(../img/index-main_2.jpeg);}
.con3{background-image: url(../img/index-main_3.jpeg);}
.con4{background-image: url(../img/index-main_4.jpeg);}
.con5{background-image: url(../img/index-main_5.jpeg);}
.con6{background-image: url(../img/index-main_6.jpeg);}
.con7{background-image: url(../img/index-main_7.jpeg);}
.con8{background-image: url(../img/index-main_8.jpeg);}
.con9{background-image: url(../img/index-main_9.jpeg);}
.con10{background-image: url(../img/index-main_10.jpeg);}

以下で動かそうとすると10個目は正しくコンパイルされません
10ではなく010でコンパイルされてしまうため

SCSS
@for $i from 1 through 10{
  .con#{$i}{
    background-image: url(../img/index-main_0#{$i}.jpeg);}
  }
}

//10個目は../img/index-main_010/jpegとコンパイルされてしまう

この場合はif文ネストして1桁と2桁で分岐します。

SCSS

@for $i from 1 through 10{
  @if $i < 10{
    .con#{$i}{
      background-image: url(../img/index-main_0#{$i}.jpeg);}
    }
  } @else {
    .con#{$i}{
      background-image: url(../img/index-main_#{$i}.jpeg);}
    }
  }
}

@for@ifを使うと冗長なCSSをスッキリまとめられる場合もありますので
SCSSで記述する場合は積極的に取り入れていきましょう。
※使わないほうが可視性の高いこともあります。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2