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

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

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

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

CSS

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

Q&A

1回答

3043閲覧

スクロールバーのあるtableのthやtdにwidthを指定したい

退会済みユーザー

退会済みユーザー

総合スコア0

HTML

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

CSS

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

0グッド

0クリップ

投稿2020/02/25 14:41

前提・実現したいこと

tbodyにyスクロールバーとxスクロールバーが常時表示された状態のtableを作るとき、
th、tdにカラム毎にwidthを指定したいです。

発生している問題・エラーメッセージ

1 tbodyは外側のdiv内に収まりxyスクロールバーも想定どおりに表示されるのですが、   theadが親要素のdivのwidthを突き抜けて表示されてしまうため、   tbodyのxスクロールバーがスクロールしても効力が及ばない。 2  td、thにwidthを指定しても効かない。

該当のソースコード

html

1<div class="a"> 2 <table> 3 <thead> 4 <tr> 5 <th>abc</th> 6 <th>abc</th> 7 </tr> 8 </thead> 9 <tbody> 10 <tr> 11 <td>123</td> 12 <td>123</td> 13 </tr> 14 </tbody> 15 </table> 16</div>

scss

1div.a{ 2 width:100%; 3 table{ 4 width:100%; 5 table-layout:fixed; 6 border-collapse:collapse; 7 thead, tbody{ 8 display:block; 9 td, th{ 10 width:200px; 11 min-width:200px; 12 table-layout:fixed; 13 white-spase:nowrap; 14 } 15 } 16 tbody{ 17 overflow-y:scroll; 18 height:200px; 19 } 20 th:nth-of-type(1){ 21 width:50px; 22 } 23 td:nth-of-type(1){ 24 width:50px; 25 } 26 } 27}

試したこと

ネット上で様々な方法が紹介されていますが、xスクロールバーを表示しない場合にはth、tdのwidthは有効にできました。

補足情報(FW/ツールのバージョンなど)

CSSに不慣れなため、できるだけ具体的にどこが悪いのか教えて頂けると助かります。

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

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

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

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

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

guest

回答1

0

.aにoverflow-yでどうですか

div.a{ overflow-y:scroll; width:100%; table{ width:100%; table-layout:fixed; border-collapse:collapse; thead, tbody{ display:block; td, th{ width:200px; min-width:200px; table-layout:fixed; white-spase:nowrap; } } tbody{ height:200px; } th:nth-of-type(1){ width:50px; } td:nth-of-type(1){ width:50px; } } }

widthがきかないのはmin-widthが指定されてるからです
min-widthを0にしてください

div.a{ overflow-y:scroll; width:100%; table{ width:100%; table-layout:fixed; border-collapse:collapse; thead, tbody{ display:block; td, th{ width:200px; min-width:200px; table-layout:fixed; white-spase:nowrap; } } tbody{ height:200px; } th:nth-of-type(1){ width:50px; min-width: 0; } td:nth-of-type(1){ width:50px; min-width: 0 } } }

投稿2020/02/25 18:21

sasnight

総合スコア16

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

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

退会済みユーザー

退会済みユーザー

2020/02/26 12:23

ありがとうございます。 ただ、その方法では、一見してtableの幅内に収まったように見えても、 windowのリサイズが発生するとtheadがdivのwidthを突き抜けてしまう現象に変わりはありません。 また、th、tdのwidth指定についても、tableのwidthに収まるよう自動調整されるだけで、指定したwidthが適用される訳ではありません。 div要素とtable要素に対してyスクロールバーが二重に表示されるのも避けたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問