flexでgapを使うときのwidth指定

<ul class="flex">
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
</ul>  
@function flexWidth($gap: 20px, $columnCount: 3) {
 @return calc((100% / $columnCount) - ((($columnCount - 1) / $columnCount) * $gap));
}

.flex {
  display: flex;
  flex-wrap: wrap;
  gap: 30px;
}

.flex-item {
  width: flexWidth(30px, 4);
}

flexで横並びにし、要素間は20pxで要素は25%の幅にしたい、というときの指定方法です。
素直にwidth: 25%; とするとgap分が足されて段落ちしてしまう(横幅の計算は25% + 20px + 25% + 20px +…となる)ので、それを回避する=gapが足されることを考慮した%がwidthに指定されるためのfunctionです。
gapと列数を引数に設定します。

カード型のリンク一覧を作りたいときとかにどうぞ。

いいなと思ったら応援しよう!