Arale

アパレル、バリスタを経て未経験からのプログラマーになった男の勉強ログ

Bootstrapのcardを元に一覧表示機能を実装

BootstrapのCardで一覧表示

フロント実装のフレームワークで重宝しているBootstrap5ですが、

Cardを使用して商品を横並びしたいと考えてました。

ところが、複数の商品を登録すると商品が縦に1列で並んでしまうので、

望んでいたデザインではありません。

f:id:Arale:20220127155622p:plain

このように縦型になってしまいます。

CSSを編集してみる

/* app/views/items/scss */
/* Cardの親要素 */
. container {
  display: flex;
  justify-content : space-between;
}

これで横並びになるかなと思ったのですが、

更新しても1mmも変わってません。

新たな記述を加える

色々検索してみたら、どうやらrowクラスの

要素を入れたら横並びになるとのこと。

eachメソッドの前にrowクラスの

要素を追記しました。

f:id:Arale:20220127160216p:plain

横並びにはなりましたが、惜しい…

モザイクなので分かりませんが、

余白が全くなく隣接している状態です。

商品が増える毎に圧迫感があるページ表示になってしまいます。

そして画像の左右だけ中途半端に余白があり、

見栄えもよろしくありません。

更に記述を加えて組み合わせる

<!-- app/views/items/index.html.erb -->
<div class="container">
      <div class="row">
        <% @items.each do |item| %>
          <div class="col-12 col-md-6 col-lg-4">
            <div class="card" style="width: 18rem;">
               /* 以下の記述略 */
            </div>
         </div>
       <% end %>
     </div>
</div>

新たにeachメソッドの後にcolクラスを追記しました。

グリッドと呼ばれるBootstrapが多く使用される理由の機能の一つなのですが、

この記述を加えることで求めていた通りの横並びとなりました。

f:id:Arale:20220127161127p:plain

まだまだ使用方法は模索中ですが、

一旦これにて問題は解決しました。

非常に参考にしたURL

qiita.com