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

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

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

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

HTML5

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

Q&A

解決済

4回答

824閲覧

tableのセルの外側に余白を設けたい場合について

moragad

総合スコア7

CSS3

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

HTML5

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

0グッド

0クリップ

投稿2022/10/31 04:43

編集2022/10/31 04:44

HTMLのtableでレイアウトを作成する際に、デザインの自由度があまり高くなくて困る事が多いです。
自由度が高くない分、tableレイアウトでのデータの配置が堅牢に実装できるのかとは思いますが、デザインを実装する際に、tableを用いるべきか、divタグを用いて自由に実装すべきか、中々判断が出来ません。

以下のようなテーブルレイアウトで、header1とheader2の間の余白を広げたいです。
イメージ説明

cellspacingやborder-spacingをtable要素に適応すると幅を指定できるかと思いますが、この場合、table全体のセルに影響が出てしまいます。
header1カラムとheader2カラムの間に余白が生まれるのは許容できますが、セルの全方位に余白が生まれてしまうのが許容できません。

また、別要件になりますが、行毎(tr)にborder-bottomを入れる必要があり、その為にtableにborder-collapse: collapse;を指定すると、そもそもborder-spacingは効かなくなります。

このようなレイアウトを作成する場合、tableレイアウトではどのように実装すべきでしょうか?
要件をまとめますと、
・header1とheader2の間の余白を広げたいが、セルの全方位に余白が生まれて欲しくない。
・tbodyのtr要素(行単位)に下線を引きたい。

そもそもtableレイアウトでやるべきでない、というような意見でも大丈夫なので、ご確認いただけますと幸いです。

<table> <thead> <tr> <th colspan="3"> header1 </th> <th colspan="3"> header2 </th> </tr> </thead> <tbody> <tr> <th>th</th> <th>th</th> <th>ht</th> <th> th </th> <th> th </th> <th> th </th> </tr> <tr> <td>td</td> <td>td</td> <td>td</td> <td>td</td> <td>td</td> <td>td</td> </tr> </tbody> </table>

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

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

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

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

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

guest

回答4

0

tableを用いるべきか、divタグを用いて自由に実装すべきか

マークアップ的にはデザインレイアウト部分にtableを使うべきではないのは当然のこと、divすらも採用の優先度は下げるべきです。
https://webtan.impress.co.jp/e/2021/06/01/39673
CSSで見た目は如何様にも出来るものの、「何でもdiv」では正しいマークアップとは言えません

投稿2022/10/31 05:10

編集2022/10/31 05:21
m.ts10806

総合スコア80850

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

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

0

デザインのためにtableを利用することはマークアップの原則から控えるべきです
tableはあくまでも構造上の表です

投稿2022/10/31 05:03

yambejp

総合スコア114779

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

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

0

ベストアンサー

そもそもtableレイアウトでやるべきでない、というような意見でも大丈夫なので

今どきであれば、ガチガチに位置を決めて作りたい場合にもグリッドレイアウトという手法が使えるようになっています。意味的に表ではないものをテーブルで組むべきではありません。

投稿2022/10/31 07:35

maisumakun

総合スコア145183

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

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

0

他の方もおっしゃっていますが、マークアップとは、 各パーツがどういう役割なのかを指定すること です。
各要素適切なタグを選ばなければなりません。

つまり、表じゃないのに、見た目だけのために<table>タグを使用すべきではありません。

また、<div><span>は何の意味もないタグで、CSSで装飾する都合上使うものです。
ですので単体では使用すべきではありません。

例えば、

html

1<!-- 🔺 --> 2<div> 3 <h2>タイトル</h2> 4 <p>本文</p> 5 <p>本文</p> 6</div> 7 8<!-- ⭕️ --> 9<section> 10 <div> 11 <h2>タイトル</h2> 12 <p>文章</p> 13 <p>文章</p> 14 </div> 15</section>

html

1<!-- ❌ --> 2<div><span>文章</span></div> 3 4<!-- ⭕️ --> 5<p><span>文章</span></p>

投稿2022/10/31 05:28

編集2022/10/31 05:33
Cocode

総合スコア2314

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

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

m.ts10806

2022/10/31 05:31

さすがにボタンはbuttonのほうが・・・。例って難しいですね。 pじゃなくarticleのほうがいいというケースもあるし、dt/ddとかも。
Cocode

2022/10/31 05:33

ボタンミスです!ボタンの例を示そうとしてやっぱり変えたので文字書き換えわすれました。修正しましたご指摘ありがとうございます〜!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問