6
3

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.

【CSS Tips】ある程度小要素が増えると横にスクロールするリスト

Posted at

子要素が少ない時は親要素いっぱいに子要素を表示させて、増えてきたらスクロールするようにしたいなと思いCSSを書いたのでメモがてら記事にしました。

具体的にどんなケース?

子要素の数が1個、1個、3個可変するコンテナを想定しています。
そして、子要素が2個以下でコンテナに収まるときは2カラムで表示し、3個以上で収まらない時は横スクロールで表示します。

ただし、中の要素を数えて当てるCSSを変えるなどということはしません。

CSSの書き方

まずは子要素が1つ、2つ、3つ入ったコンテナをそれぞれ用意し、それぞれのコンテナと子要素に同じクラスを指定します。

そして、コンテナに以下の指定をしておきます。

  display: flex;
  gap: 40px;
  overflow-x: auto;

次に、子要素に以下の指定をします。

  flex-grow: 1;
  min-width: 240px;
  max-width: calc(50% - 20px);

まず、flex-grow: 1;を指定することで、子要素はコンテナいっぱいに横幅を伸ばします。
そして、子要素の最小サイズをmin-widthで指定しておくことで数が増えるとサイズが足りずにコンテナからはみ出すようになります。
あらかじめコンテナにはoverflow-x: auto;が当たっているので、この時に横スクロールするようになります。
また、max-width: calc(50% - 20px);を指定しているので子要素が1つの時は1/2カラム分のサイズになります。

Codepenで作成したものはこちらです。

See the Pen Untitled by かべちよ (@kabechiyo13) on CodePen.

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?