商品カードを均等間隔に並べる方法

商品カードを均等感覚に並べる方法を紹介します。商品をカードにして並べたいけど、左右を均等間隔に並べる簡単な方法ってあるの?

フレックスレイアウトで、記述量が少なく、スマートフォン、IE11対応の方法。

商品カードを均等間隔に並べる

まず最初に、複数行のフレックスレイアウトの設定をします。今回は、二列で並べましょう。

  • 焼肉
  • 焼鳥
  • サラダ
  • お茶
<ul style="display:flex;flex-wrap:wrap;">
  <li style="width:50%;border:1px solid green;">焼肉</li>
  <li style="width:50%;border:1px solid green;">焼鳥</li>
  <li style="width:50%;border:1px solid green;">サラダ</li>
  <li style="width:50%;border:1px solid green;">お茶</li>
</ul>

左右のマージンを設定する

カードの間と一番外枠のulの左右に10pxの均等間隔をとりたいとします。まず、外枠のulの左右に10pxを取りましょう。

  • 焼肉
  • 焼鳥
  • サラダ
  • お茶
<ul style="display:flex;flex-wrap:wrap;width:calc(100% - 10px - 10px);margin-left:auto;margin-right:auto;">
  <li style="width:50%;border:1px solid green;">焼肉</li>
  <li style="width:50%;border:1px solid green;">焼鳥</li>
  <li style="width:50%;border:1px solid green;">サラダ</li>
  <li style="width:50%;border:1px solid green;">お茶</li>
</ul>

左右に10px空いたのを見てください。幅100%から左右の10pxずつを引きます。ulタグを中央に寄せるために、左右のマージンを自動「margin-left:auto;」「margin-right:auto;」に設定します。

縦の要素間のマージンを設定する

次に縦の要素間のマージンを設定しましょう。「margin-top:5px;」「margin-bottom:5px;」。フレックスレイアウトで複数行並べるときは、マージンは重ならないことに注意しましょう。

  • 焼肉
  • 焼鳥
  • サラダ
  • お茶
<ul style="display:flex;flex-wrap:wrap;width:calc(100% - 10px - 10px);margin-left:auto;margin-right:auto;">
  <li style="width:50%;border:1px solid green;margin-top:5px;margin-bottom:5px;">焼肉</li>
  <li style="width:50%;border:1px solid green;margin-top:5px;margin-bottom:5px;">焼鳥</li>
  <li style="width:50%;border:1px solid green;margin-top:5px;margin-bottom:5px;">サラダ</li>
  <li style="width:50%;border:1px solid green;margin-top:5px;margin-bottom:5px;">お茶</li>
</ul>

要素間のマージンを設定する

要素間のマージンを設定しましょう。1列目は、右側に10pxのマージンを取ります。列の幅が10px増えたので、それぞれの列の幅は、5pxづつ小さくします。

  • 焼肉
  • 焼鳥
  • サラダ
  • お茶
<ul style="display:flex;flex-wrap:wrap;width:calc(100% - 10px - 10px);margin-left:auto;margin-right:auto;">
  <li style="width:calc(50% - 5px);border:1px solid green;margin-top:5px;margin-bottom:5px;margin-right:10px;">焼肉</li>
  <li style="width:calc(50% - 5px);border:1px solid green;margin-top:5px;margin-bottom:5px;">焼鳥</li>
  <li style="width:calc(50% - 5px);border:1px solid green;margin-top:5px;margin-bottom:5px;margin-right:10px;">サラダ</li>
  <li style="width:calc(50% - 5px);border:1px solid green;margin-top:5px;margin-bottom:5px;">お茶</li>
</ul>

これで完成です。

商品カードを均等間隔に並べるサンプル

商品カードを均等間隔に並べるサンプルです。

商品カードを均等間隔に二列に並べる

商品カードを均等間隔に並べる二列のサンプル。nth-childを使うときれいに書けます。2n + 1は、奇数番目のli要素です。

  • 焼肉
  • 焼鳥
  • サラダ
  • お茶
<style>
  .card_arrange_2column ul {
    display:flex;
    flex-wrap:wrap;
    width:calc(100% - 10px - 10px);
    margin-left:auto;
    margin-right:auto;
  }
  .card_arrange_2column li {
    width:calc(50% - 5px);
    border:1px solid green;
    margin-top:5px;
    margin-bottom:5px;
  }
  .card_arrange_2column li:nth-child(2n + 1) {
    margin-right:10px;
  }
</style>

<div class="card_arrange_2column">
  <ul>
    <li>焼肉</li>
    <li>焼鳥</li>
    <li>サラダ</li>
    <li>お茶</li>
  </ul>
</div>

商品カードを均等間隔に三列に並べる

商品カードを均等間隔に三列に並べる参列のサンプル。nth-childを使うときれいに書けます。3n + 1は、1列目のli要素、3n + 2は、2列目の要素です。間隔は、割り切れるように、3pxの倍数を選びましょう。「33.4%」は、個別に設定しています。

  • 焼肉
  • 焼鳥
  • サラダ
  • お茶
  • ポテト
  • スープ
<style>
  .card_arrange_3column ul {
    display:flex;
    flex-wrap:wrap;
    width:calc(100% - 9px - 9px);
    margin-left:auto;
    margin-right:auto;
  }
  .card_arrange_3column li {
    width:calc(33.3% - 6px);
    border:1px solid green;
    margin-top:5px;
    margin-bottom:5px;
  }
  .card_arrange_3column li:nth-child(3n + 1) {
    margin-right:9px;
  }
  .card_arrange_3column li:nth-child(3n + 2) {
    margin-right:9px;
  }
</style>

<div class="card_arrange_3column">
  <ul>
    <li>焼肉</li>
    <li>焼鳥</li>
    <li>サラダ</li>
    <li>お茶</li>
    <li>ポテト</li>
    <li>スープ</li>
  </ul>
</div>
コンテンツ