1. ASHIRIのふろんとあれ、なんだっけぇ
  2. なんだっけぇ一覧
  3. HTML/CSS
  4. 【Sass】@forを使ってアイコンを繰り返し表示する

【Sass】@forを使ってアイコンを繰り返し表示する

CATEGORY : HTML/CSS
【Sass】@forを使ってアイコンを繰り返し表示する 【Sass】@forを使ってアイコンを繰り返し表示する
今回は、コーディングの記述の簡略化・効率的にする事ができるSassより、一個ずつデザインの違うアイコンの繰り返し部分に対して通常のコーディングであれば、似たようなコーディングを複数回記述する必要がある処理を、Sassを使用して簡素化する、便利な実装方法を紹介させていただきます。
目次

    @for(フォー)とは?

    @for(フォー)は、繰り返しの命令文で、@forを使うことで指定した開始数値から終了数値まで、
    1ずつ増えながら処理を繰り返す命令文です。また、@forの構文には2つの利用方法があります。

    指定した数値を含む through 構文

    through構文は、指定した数値を含んだ繰り返し処理を実行します。

    
    @for $value from 1 through 3 {
      .sample_#{$value}{
        margin-bottom:1px * $value;
      }
    }
    

    コンパイル後

    
    .sample_1{
      margin-bottom:1px;
    }
    .sample_2{
      margin-bottom:2px;
    }
    .sample_3{
      margin-bottom:3px;
    }
    

     

    指定した数値を含まない to 構文

    to構文は、指定した数値を含まずに繰り返し処理を実行します。

    
    @for $value from 1 to 3 {
        .sample_#{$value}{
          margin-bottom:1px * $value;
        }
    }
    

    コンパイル後

    
    .sample_1{
      margin-bottom:1px;
    }
    .sample_2{
      margin-bottom:2px;
    }
    

     

    利用箇所のマークアップ状況や処理方法により、どちらを使用するかはかわるかと思いますが、through構文の方が、開始数値から終了数値以下を繰り返すので、直感的でわかりやすいかと思います。

     

    @forを使ってアイコンを繰り返し表示

    それでは、実装方法を紹介させていただきます。

    画像の準備

    例として、下記のようなリストタイプのデザインをコーディングする場合、通常のCSSであれば、
    それぞれのタグに画像を指定する事でコーディング対応はまったく可能ですが、少々行数が増えて
    めんどいですね。

    @forで繰り返し処理をするにあたり、書き出すルールとして、画像ファイル名は同じにして
    画像ファイル名の最後に数字で連番化します。

    これで画像の準備は完了です。

    マークアップ

    それではマークアップをしていきます。例えば先ほどのデザインをマークアップすると以下のようになります。

    
    <ol>
      <li><p>音楽</p></li>
      <li><p>お気に入り</p></li>
      <li><p>写真・素材</p></li>
      <li><p>ソーシャル</p></li>
      <li><p>お友だち</p></li>
      <li><p>タグ一覧</p></li>
    </ol>
    

    これでマークアップは完了です。

    Sassコーディング

    それではコーディングをしていきます。アイコンは疑似要素に入れちゃいます。

    
    ol{
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
      & li{
        width: 30%;
        margin-bottom: 4.5rem;
        display: flex;
        align-items: center;
        @for $i from 1 through 6 {
            &:nth-child(#{$i}) {
                &::before {
                    content: '';
                    display: inline-block;
                    width: 5rem;
                    height: 5rem;
                    background: url("../images/list-icon0#{$i}.png") top left no-repeat;
                    background-size: contain;
                }
            }
         }
         & p{
           display: flex;
           align-items: center;
         }
      }
    }
    

    これでSassコーディングは完了です。

    for文の変数{$i}に、ループ処理が連番で入るので、この処理を利用して、連番付けをした画像ファイル名と同じになるよう、疑似要素で読み込ませているファイル名に、{$i}を利用し、background処理にて読み込ませます。
    これでコーディングは完了、各画像を各リストにコーディングするより、グッと行数も減り、簡略化できたかと思います。

     

    まとめ

    いかがでしたでしょうか。今回はfor文を使用して、それぞれのリストに別々の画像を表示させる処理を紹介させていただきました。

    注意点

    • 画像ファイル名は揃える必要があります。

    • アイコンの画像サイズがバラバラで個々にサイズ変更を当てないといけないという場合は、コーディング解決よりも、すべてのアイコンを同じサイズでトリミングして使うと効率的で、各端末の表示崩れにならずに済みます。

    以上となります。できる限りわかりやすく伝えようとしても書いて伝えるのは難しいです。
    コードや記事の書き方について気になるところがあれば、アドバイスいただけると嬉しいです。

     

    【Sass】@forを使ってアイコンを繰り返し表示する
    CATEGORY : HTML/CSS

    アシリソリューション

    アシリソリューション

    アシリ・ソリューション

    要件定義からブラッシュアップ/実装運用まで一貫して担当。また内部対策を中心に、GTM・GA4・Looker Studioと分析・改善案の策定も進めています。北緯43度マルチエンジニア

    最近のなんだっけぇ

    1. 【javascript基礎】自動見積フォームの仕組みを理解する

      【javascript基礎】自動見積フォームの仕組みを理解する

    2. 【Node基礎】APIエンドポイントの保護を理解する

      【Node基礎】APIエンドポイントの保護を理解する

    3. 【Node基礎】RESTful API を理解する

      【Node基礎】RESTful API を理解する

    4. 【Vue基礎】Vue Routerのネストを理解する

      【Vue基礎】Vue Routerのネストを理解する

    5. 【Vue基礎】v-onディレクティブを理解する

      【Vue基礎】v-onディレクティブを理解する

    6. 【Vue基礎】v-modelディレクティブを理解する

      【Vue基礎】v-modelディレクティブを理解する

    1. API
    2. computed
    3. css
    4. ECMA
    5. javascript
    6. jquery
    7. Node
    8. php
    9. reactive
    10. reduce メソッド
    11. ref
    12. sass
    13. SSH
    14. v-bind
    15. v-on
    16. Vue
    17. Vディレクティブ
    18. wordpress
    19. セキュリティ対策
    20. 入れ子
    21. 繰り返し処理
    22. 関数