2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

効率のいいコードの書き方

Posted at

コードを書いていると、下部のようなデザインによく出くわします。
 
Group 6.png

スキーマのblockforで動的に追加するのであれば、アイテムになる部分の記述は1度でいいのですが、
静的に固定されているような時は、同じものを4回書くのもあれだし…だからといってSHOP内で、このカード使うところここしかないのでスニペットファイルにするのも…うーん…みたいな時に、for文で書く方法がないかとやり始めた方法です。

管理しやすく?記述量も大幅に減らせると思っているので、個人的におすすめです。

コード紹介

{%- comment -%} ラベル {%- endcomment -%}
{% assign title_array = "a,b,c,d" | split: "," %}

{%- comment -%} リンク {%- endcomment -%}
{% assign link_array = '/pages/a,/pages/b,/pages/c,/pages/d' | split: "," %}

<ul class="list">
  {% for i in (0..3) %}
    <li class="item">
      <a href="{{ link_array[i] }}"
        class="{% if i == 2 %} active {% endif %}"
      >
        {{ title_array[i] }}
      </a>
    </li>
  {% endfor %}
</ul>

変更になる箇所、タイトルやリンクなどの部分を先に配列で作成してあげて、for文をアイテム数だけ(0..3)で回してあげる方法です。
この方法で記述すると
・記述量を減らせ、見渡しやすい
・要素を新しく追加する時は、配列に追加して、カウント数を増やすだけでいい
・HTMLの構造の変更やクラス名の追加時に変更箇所が一箇所でいいこと
・ちょっと仕事できそうな雰囲気w

特定のスタイルの追加

aだけフォントを赤にしたい。
全てのカードの背景画像が違う
そんなこともあるかと思います。
aタグのクラス名にサンプルを追加していますが、for文の値が今何なのか?に合わせてクラス名を付与してもOKですし、スタイルシート内で:nth-child()で記述してもいいと思います。
そこは臨機応変に
 

まとめ

始まりは、ただ、書くのが面倒臭い!から始まったんですが…。
本当に楽です!
どこか使い道があれば活用されてみてください!

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?