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

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

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

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

908閲覧

Flexboxのカラムについて、綺麗に改行されません。

退会済みユーザー

退会済みユーザー

総合スコア0

CSS3

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/09/07 15:13

編集2021/09/07 15:29

前提・実現したいこと

メディアクエエリで画面サイズが小さくなるとflexboxで綺麗に2行3列並びにしたい。

発生している問題
メディアクエエリで画面サイズが小さくなるとflexboxで綺麗に2行3列並びにしたいのですが、
画面サイズが小さくなると2行に改行されるのですが、2個しか改行されず綺麗に2行3列になりません。

該当のソースコード

<HTML>

!--メインメニュー--> <section id="mainbox"> <!--ロゴ--> <div class="mainlogo"><img src="img/logo.png" width="200" height="95" alt=""/></div> <!--ロゴ--> <!--メニューリスト--> <div class="main-m-list-menu"> <ul class="main-m-list-ul"> <li class="main-m-list1"><span class="menu-text-main">ホーム</span><br><span class="menu-text-sub">HOME</span></li> <li class="main-m-list2"><span class="menu-text-main">会社概要</span><br><span class="menu-text-sub">COMPANY</span></li> <li class="main-m-list3"><span class="menu-text-main">事業内容</span><br><span class="menu-text-sub">WORKS</span></li> <li class="main-m-list4"><span class="menu-text-main">ニュース</span><br><span class="menu-text-sub">NEWS</span></li> <li class="main-m-list5"><span class="menu-text-main">採用情報</span><br><span class="menu-text-sub">RECRUIT</span></li> <li class="main-m-list6"><span class="menu-text-main">問い合わせ</span><br><span class="menu-text-sub">CONTACT</span></li> <li class="main-m-list7"></li> </ul> </div> <!-- メインメニュー --> </section>

<CSS>

* { margin:0; padding:0; } /* 1180px以上に適用されるCSS(PC用) */ @media screen and (min-width: 1180px) { #mainbox { width: 100%; display: flex; justify-content: center; } .main-m-list-menu { width: 100%; display: flex; } .mainlogo { width:100%; margin-left:5%; } ul { list-style: none; } li { text-align: center; } .main-m-list-menu { display: flex; } .main-m-list-ul { display: flex; } .main-m-list-menu li { width: 150px; margin-top:1%; margin-bottom:1%; padding:1%; justify-content: center; align-items: center; } .main-m-list2,.main-m-list3,.main-m-list4,.main-m-list5,.main-m-list6 { border-left: 1px solid #9fa0a0; } .menu-text-main { font-weight: bold; } .menu-text-sub { color: #9fa0a0; font-size: 80%; } } /* 768px以上に適用されるCSS(タブレット用) */ @media screen and (min-width: 768px) and ( max-width:1179px) { #mainbox { width: 100%; display: flex; justify-content: center; flex-wrap: wrap; } .mainlogo { width:100%;                                 margin-left:5%; } .main-m-list-menu { margin:0; width:100%; } ul { list-style: none; } li { text-align: center; } .main-m-list-menu { display: flex; justify-content: center; flex-wrap: wrap; } .main-m-list-ul { display: flex; justify-content: space-between; flex-wrap: wrap; } .main-m-list-menu li { width: 150px; margin-top:1%; margin-bottom:1%; padding:1%; align-items: center; justify-content:space-between; } .main-m-list2,.main-m-list3,.main-m-list4,.main-m-list5,.main-m-list6 { border-left: 1px solid #9fa0a0; } .menu-text-main { font-weight: bold; } .menu-text-sub { color: #9fa0a0; font-size: 80%; } } /* 428px以上に適用されるCSS(スマホ用) */ @media screen and (min-width: 428px) and ( max-width:767px){ }

試したこと

下記を追加しました。

.main-m-list-menu { display: flex; justify-content: center; flex-wrap: wrap; } .main-m-list-ul { display: flex; justify-content: space-between; flex-wrap: wrap; } .main-m-list-menu li { width: 150px; margin-top:1%; margin-bottom:1%; padding:1%; align-items: center; justify-content:space-between; }

または、リストの部分を

.main-m-list-ul { display: flex; margin-left: -10px; } .main-m-list-menu li { box-sizing: border-box; flex: 0 1 calc(100% / 3); padding: 10px; margin-left: 10px; }

こちらに変更しましたが、改行されずそのまま1列のままでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

3列にしたいのなら、アイテムの幅を親の幅の1/3になるようにすればいいでしょう。

css

1 .main-m-list-menu li { 2 width: 33%; /* 修正 */ 3 margin-top:1%; 4 margin-bottom:1%; 5 padding:1%; 6 align-items: center; 7 justify-content:space-between; 8 box-sizing: border-box; /* 追加 */ 9 } 10

投稿2021/09/07 15:54

hatena19

総合スコア33715

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

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

退会済みユーザー

退会済みユーザー

2021/09/08 01:28

ありがとうございます。うまくいきました。親の幅を均等にすればいいのですね!
退会済みユーザー

退会済みユーザー

2021/09/08 02:13

すいません。画面サイズを変えるといっきに2行3列になったんですが、これを画面を小さくするにつれて1個ずつ2行目に行くようにする場合はどしたらいいでしょうか? こちらも鋭意調査中です。
hatena19

2021/09/08 02:51

.main-m-list-menu li の幅を 180pxぐらいにしたらどうでしょう。 あとは、Gridレイアウトを検討されるとより希望にちかいものになるかも。
退会済みユーザー

退会済みユーザー

2021/09/08 04:02

ありがとうございますやってみます。
退会済みユーザー

退会済みユーザー

2021/09/08 04:06 編集

180pxにしてやってみたところ、実際の画面のスクショの画像がこのコメントに貼り付けられればいいのですが、画面サイズを小さくすると2行にはなるのですが、4列になって、2行目の右端と左端にリストが1個ずつ表示されてしまいます。 もっと画面サイズを小さくすると2行3列になります。
hatena19

2021/09/08 04:14

180pxは一例ですので、適宜調整してご希望に近くなるように調整してください。 メディアクエリのブレークポイントとも関連しますので、その辺の調整も必要です。 Gridレイアウトも検討するといいかも。 これは便利!CSS Gridのauto-fillとauto-fitの使い分けでRWDが捗る – WPJ https://www.webprofessional.jp/difference-between-auto-fill-and-auto-fit/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問