質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Q&A

1回答

4834閲覧

display:flexのレイアウトについて

enokiyo

総合スコア78

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

0グッド

0クリップ

投稿2016/03/19 09:26

編集2016/03/19 14:59

以下のような並びの要素を持ったflex boxがあったとします。

□が8つ(flex item)
flex box の横幅最大値は1000pxで可変
flex itemは30%とかでそれぞれの間に余白を均等にしたい。
frex-wrap:wrapにして3つで折り返す。

以下のようなレイアウトを作りたいです。

レイアウトの説明

詳しい方いらっしゃいますか?

追記
liの両脇は均等にしたい感じです。
liのwidth:25%とかでもセンターに全体でセンターしたいのです。
space-aroundやspace-betweenも試したのですがわかりませんでした。
grewやshrinkなどでできるのかなと思い、質問させていただきました。

li 25%レイアウトテスト

追記2
margin:1%でliの余白をとっておりますが、これは例えばspaec-betweenみたいにうまいことできるのであればそちらで制御してもOKです。

ソースコード

html

1<!DOCTYPE HTML> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>display:flex layout</title> 6</head> 7<body> 8<style> 9ul { 10 width: 100%; 11 max-width:1000px; 12 padding: 0px; 13 box-sizing: border-box; 14 background: #fff; 15 border:solid 1px #333; 16 display:flex; 17 flex-direction:row; 18 flex-wrap:wrap; 19 justify-content: center; 20} 21li { 22 background: #f00; 23 width: 30%; 24 border: none; 25 margin: 1%; 26 padding:4% 2%; 27 box-sizing:border-box; 28 text-align: center; 29 list-style:none; 30} 31</style> 32<ul> 33<li>項目1</li> 34<li>項目2</li> 35<li>項目3</li> 36<li>項目4</li> 37<li>項目5</li> 38<li>項目6</li> 39<li>項目7</li> 40<li>項目8</li> 41</ul> 42</body> 43</html> 44

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shi_ue

2016/03/19 12:52

「 □が7つ(flex item) 」8つですね(笑) こういう感じのものが作れるソースを見せてもらうと、回答しやすいと思います。わたしは分かりませんが(笑)
enokiyo

2016/03/19 13:21

失礼しました、ソースコードはどこに書けばいいのですかね?
shi_ue

2016/03/19 13:22

質問に追記して、```を上下に入れてください。
enokiyo

2016/03/19 13:52

修正してみました!
guest

回答1

0

justify-content: center;で中央寄せになっているので、justify-content: flex-start;として左寄せにすると良いです。

追記
そのままだと右側に隙間が空くので、li要素のwidth: 30%;width: 31.33%;に変更して調整して下さい。

追記2
次のようなスタイルを追加する事で対応できます。
justify-contentcenterのままにしておいてください。
li要素のwidthやmarginなどを変更したり、それによって折り返す位置が変わったりした場合には調整が必要になります。

CSS

1li:nth-child(3n + 2):last-child { 2 margin-right: 33%; 3} 4 5li:nth-child(3n + 1):last-child { 6 margin-right: 65%; 7}

投稿2016/03/19 14:02

編集2016/03/19 18:53
flat

総合スコア617

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

enokiyo

2016/03/19 14:56

ご回答ありがとうございます。 ちょっと質問がちゃんと伝わっていませんでした。 難しいですね・・・。 (画像はっておきます。)
flat

2016/03/19 18:54

追記を見ました。 回答を更新したのでご確認下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問