LoginSignup
4
3

More than 5 years have passed since last update.

「flex-box」を使った レスポンシブで『複数行5カラム→3カラム→2カラム』的なレイアウトをしたい時のベストプラクティス?

Last updated at Posted at 2017-09-30

タイトルのとおりですが、「flex-box」を使って単純な複数行のレイアウトを組む場合、
いくつかの方法があります。

flex.jpg

justify-content を使って最後の行だけ左寄せにしたりっていう記事も見かけますが、そこまでするならもうflex-box使わなくていいんじゃ…って疑問に思います(場合によっては必要かと思いますが)、

display:gird に関してもベンダーつければ使えるようにはなりましたけど、
autoprefixerもちょっとまだあれですし、そもそも単発ではちょっと扱いづらい感じもあります。
なので小さな枠で使うのにはやはりflex-boxfloatに変わる一番手軽で使いやすい方法だと思います。

開始早々話がそれましたが、
実際どうするのが一番シンプルでわかりやすいのか考えた結果こうなりました。

html
<ul class="flex-container">
  <li>HTML</li>
  <li>CSS</li>
  <li>Ruby on Rails</li>
  <li>javascript</li>
  <li>PHP</li>
  <!-- 以下 省略 -->
</ul>
scss
.flex-container{
  display: flex;
  flex-wrap: wrap;
  margin: 0 -1%;
  li{

    margin: 0 1% 10px;

    @media screen and (min-width:901px) {
      width: calc(19% - 1%);
    }
    @media screen and (min-width: 601px) and (max-width: 900px) {
      width: calc(32.33333333% - 1%);
    }
    @media screen and (max-width:600px) {
      width: calc(49% - 1%);
    }

  }
}



※一応SASSを使っていない方もいるとおもうので、CSS版も追記

css
.flex-container{
  display: flex;
  flex-wrap: wrap;
  margin: 0 -1%;
}
.flex-container li{
  margin: 0 1% 10px;
}

@media screen and (min-width:901px) {
  .flex-container li{
    width: calc(19% - 1%);
  }
}
@media screen and (min-width: 601px) and (max-width: 900px) {
  .flex-container li{
    width: calc(32.33333333% - 1%);
  }
}
@media screen and (max-width:600px) {
  .flex-container li{
    width: calc(49% - 1%);
  }
}

これが一番ベストかなーとは思うんですが、他にいい方法があればご助言ください。

4
3
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
4
3