🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
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

解決済

2回答

3289閲覧

グリッドレイアウトでテーブルの横スクロールができません

pp3

総合スコア6

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クリップ

投稿2020/01/03 01:57

編集2020/01/03 03:02

タイトル通り、テーブルの横スクロールができません。

html

1<div class="test"> 2 <table> 3 <tr><th>1-1</th><th>1-2</th><th>1-3</th><th>1-4</th><th>1-5</th></tr> 4 <tr><td>2-1</td><td>2-2</td><td>2-3</td><td>2-4</td><td>2-5</td></tr> 5 <tr><td>3-1</td><td>3-2</td><td>3-3</td><td>3-4</td><td>3-5</td></tr> 6 <tr><td>4-1</td><td>4-2</td><td>4-3</td><td>4-4</td><td>4-5</td></tr> 7 </table> 8</div>

css

1.test table{ 2 width:800px; 3 text-align:center; 4 border:1px solid #000; 5 border-collapse:collapse; 6} 7.test th,.test td{ 8 border:1px solid #000; 9 padding:5px; 10} 11@media screen and (max-width:600px){ 12 .test{ 13 overflow-x:auto; 14 white-space:nowrap; 15 } 16}

上記がテーブル部分のみのコードで、これだけならきちんとスクロールできますので、この部分に間違いはないはずなのですが、現在XAMPPにて作成中のサイトに上記の通り書いてもスクロールができませんでした。
テーブル部分以外のCSSにできない原因があると思い、1つずつ削除しながら確認していきましたところ、#wrapper{display:grid}がなければ動くことが分かりました。
ですが、サイト全体のレイアウトに使用している部分のため、ここを変えなくてはならないとなると、サイト自体を1から作り直す必要があるため困っております。

レイアウトは、こちらのサイト様 の例にある『ヘッダー・メインコンテンツ・左右のサイドバー・フッターがあるレイアウト』とほぼ同じです。
上記サイト様の.containerの部分が#wrapperに当たり、テーブルがあるのは.mainの部分です。

グリッドレイアウトを完全に理解する前に使用してしまったのが悪いのですが、
このままテーブルの横スクロールをするには、どのようにしたら良いのでしょうか?

##追記です。

html

1<div id="wrapper"> 2 <header class="header">header</header> 3 <main class="main"> 4 <div class="test"> 5 <table> 6 <tr><th>1-1</th><th>1-2</th><th>1-3</th><th>1-4</th><th>1-5</th></tr> 7 <tr><td>2-1</td><td>2-2</td><td>2-3</td><td>2-4</td><td>2-5</td></tr> 8 <tr><td>3-1</td><td>3-2</td><td>3-3</td><td>3-4</td><td>3-5</td></tr> 9 <tr><td>4-1</td><td>4-2</td><td>4-3</td><td>4-4</td><td>4-5</td></tr> 10 </table> 11 </div> 12 </main> 13 <aside class="aside">aside</aside> 14 <nav class="nav">nav</nav> 15 <footer class="footer">footer</footer> 16</div> 17

css

1#wrapper{ 2 display:grid; 3 margin:0; 4 min-height:100vh; 5} 6@media screen and (max-width:600px){ 7 #wrapper{ 8 grid-template-rows:50px 1fr 100px; 9 grid-template-columns:1fr; 10 } 11 .header{ 12 grid-row:1; 13 } 14 .main{ 15 grid-row:2/3; 16 } 17 .aside{ 18 display:none; 19 } 20 .nav{ 21 display:none; 22 } 23 .footer{ 24 grid-row:3; 25 grid-column:1/4; 26 } 27} 28@media screen and (min-width:599px){ 29 #wrapper{ 30 grid-template-rows:50px 1fr 100px; 31 grid-template-columns:250px 1fr 250px; 32 } 33 .header{ 34 grid-row:1; 35 grid-column:1/4; 36 } 37 .main{ 38 grid-row:2; 39 grid-column:2; 40 } 41 .nav{ 42 grid-row:2; 43 grid-column:1; 44 } 45 .aside{ 46 grid-row:2; 47 grid-column:3; 48 } 49 .footer{ 50 grid-row:3; 51 grid-column:1/4; 52 } 53} 54.test table{ 55 width:800px; 56 text-align:center; 57 border:1px solid #000; 58 border-collapse:collapse; 59} 60.test th,.test td{ 61 border:1px solid #000; 62 padding:5px; 63} 64@media screen and (max-width:600px){ 65 .test{ 66 overflow-x:auto; 67 white-space:nowrap; 68 } 69}

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

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

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

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

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

s8_chu

2020/01/03 02:21

念のため、 `display: grid` の宣言を含む HTML, CSS のすべてを質問文へ追記していただけませんか?
hatena19

2020/01/03 02:26

> この部分に間違いはないはずなのですが、 間違いないところを提示するのではなく、wrapperも含めた症状の再現できるコード全体を提示できませんか。でないと、具体的に間違いを指摘するのは困難かと。 推測でしてもあっている保証はないので。
pp3

2020/01/03 03:02

お二方ともありがとうございます。 明らかにテーブルのスクロールが出来ない事と関係のないプロパティ(背景色や文字色など)を省略していますが追記部分の通りです。
guest

回答2

0

ベストアンサー

デフォルトでは min-width プロパティの算出値により、 grid アイテムはその内容よりも小さくなることは出来ません.main クラスに対して min-width プロパティを設定するか、 overflow プロパティを visible 以外に設定することでこの問題を解決出来ます (動作確認用リンク)。

§ 6.6. Automatic Minimum Size of Grid Items

To provide a more reasonable default minimum size for grid items, this specification defines that the auto value of min-width/min-height also applies an automatic minimum size in the specified axis to grid items whose overflow is visible and which span at least one track whose min track sizing function is auto.

CSS

1#wrapper { 2 display: grid; 3 margin: 0; 4 min-height: 100vh; 5} 6 7@media screen and (max-width:600px) { 8 #wrapper { 9 grid-template-rows: 50px 1fr 100px; 10 grid-template-columns: 1fr; 11 } 12 13 .header { 14 grid-row: 1; 15 } 16 17 .main { 18 grid-row: 2/3; 19 min-width: 0; /* 追記 */ 20 } 21 22 .aside { 23 display: none; 24 } 25 26 .nav { 27 display: none; 28 } 29 30 .footer { 31 grid-row: 3; 32 grid-column: 1/4; 33 } 34} 35 36@media screen and (min-width:599px) { 37 #wrapper { 38 grid-template-rows: 50px 1fr 100px; 39 grid-template-columns: 250px 1fr 250px; 40 } 41 42 .header { 43 grid-row: 1; 44 grid-column: 1/4; 45 } 46 47 .main { 48 grid-row: 2; 49 grid-column: 2; 50 } 51 52 .nav { 53 grid-row: 2; 54 grid-column: 1; 55 } 56 57 .aside { 58 grid-row: 2; 59 grid-column: 3; 60 } 61 62 .footer { 63 grid-row: 3; 64 grid-column: 1/4; 65 } 66} 67 68.test table { 69 width: 800px; 70 text-align: center; 71 border: 1px solid #000; 72 border-collapse: collapse; 73} 74 75.test th, 76.test td { 77 border: 1px solid #000; 78 padding: 5px; 79} 80 81@media screen and (max-width:600px) { 82 .test { 83 overflow-x: auto; 84 white-space: nowrap; 85 } 86} 87

投稿2020/01/03 03:14

s8_chu

総合スコア14731

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

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

pp3

2020/01/03 03:27

ありがとうございます! 思い通りになりました。 まだまだ知らないことが多そうなので、しっかり勉強してきます。 サンプルのデモまで作って頂いて、本当にありがとうございます。
hatena19

2020/01/03 04:08

s8_chuさんのサンプルだと当方の環境では、画面幅か600px以下にならないとスクロールバーが出ないのですが、それでいいのでしょうか。 テーブル幅が800px固定なので見切れてしまいます。
hatena19

2020/01/03 05:37

タイトルの「テーブルの横スクロール」ではなく「wrapper全体の横スクロール」でいいということかな?
guest

0

テーブルの幅が固定ですので、グリッドアイテムの.mainと、.testにoverflow-xを設定してスクロールできるようにすればすればいいでしょう。

css

1/*前略*/ 2 3.test table{ 4 width:800px; 5 text-align:center; 6 border:1px solid #000; 7 border-collapse:collapse; 8} 9.test th,.test td{ 10 border:1px solid #000; 11 padding:5px; 12} 13/* この部分は削除 14@media screen and (max-width:600px){ 15 .test{ 16 overflow-x:auto; 17 white-space:nowrap; 18 } 19} 20*/ 21/* 以下追加 */ 22.main { 23 overflow-x: auto; 24} 25.test { 26 overflow-x: auto; 27 white-space:nowrap; 28}

動作確認用Codepen

投稿2020/01/03 03:20

編集2020/01/03 05:39
hatena19

総合スコア34073

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

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

pp3

2020/01/03 03:32

回答いただき、ありがとうございます。 .main に overflow-x を指定すると、メインの部分がまるごとスクロールされてしまうと思うのですが、違うのでしょうか...? 今回は、テーブルのみスクロールさせたかったためこちらの方法は使えなくて申し訳ないです。
hatena19

2020/01/03 03:56

メインにテーブル以外の要素もあるのですね。 コード修正しました。サンプルも追加しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問