【CSS/html】複数のtableを横並べする方法4選
tableは表をつくるhtmlタグです。
「tableが縦に並んじゃう!tableを2つ3つ横並べしたいんだけど!」
複数のtableを横並べする方法を4つ紹介します。
目次
【htmlだけ】左のtableにalign="left"
左になるtableに「align="left"」を指定するとその次の要素が右に来ます。
セル | セル セル |
セル セル |
セル |
セル | セル |
セル | セル |
下のpタグ
<table border align="left">
<tr>
<td>セル</td>
<td>セル<br>セル</td>
</tr>
<tr>
<td>セル<br>セル</td>
<td>セル</td>
</tr>
</table>
<table border>
<tr>
<td>セル</td>
<td>セル</td>
</tr>
<tr>
<td>セル</td>
<td>セル</td>
</tr>
</table>
<p>下のpタグ</p>
メリット
- カンタン
デメリット
- 他の要素も回り込む
- html5ではalignが廃止されている
注意点
横に並ぶ要素の幅の合計が親の幅を超えていると横並びしません。
「width="50%"」など指定して超えないようにしましょう。
ちなみにwidth属性も廃止です。
tableを3つ以上並べるときは、一番右以外のtableにalign="left"を指定しましょう。
CSSやhtmlの基本をしっかり理解すると、この記事の内容もより理解できるようになりますよ。
↓CSSやhtmlを楽しく学べるようにマンガを描きましたのでゼヒご覧ください↓
↑「副業してもう少し稼ぎたい!」というかたのために副業の方法も解説しています。
【htmlだけ】間の縦列を結合
一つのtableの中の間となる列を結合することで2つに分かれているように見せる方法です。
セル セル |
セル | セル | セル | |
セル | セル | セル | セル | |
セル | セル | セル セル セル |
セル |
<table border>
<tr>
<td>セル<br>セル</td>
<td>セル</td>
<td rowspan="3"> </td>
<td>セル</td>
<td>セル</td>
</tr>
<tr>
<td>セル</td>
<td>セル</td>
<td>セル</td>
<td>セル</td>
</tr>
<tr>
<td>セル</td>
<td>セル</td>
<td>セル<br>セル<br>セル</td>
<td>セル</td>
</tr>
</table>
メリット
- 左右で行の高さがそろう
- 他の要素が回り込まない
- 廃止された属性を使っていない
デメリット
- 結合が複雑
- 上下の線がつながっている
→完全に消すにはCSSを駆使すること
上下の線を消したい場合は下記記事を参考に消しましょう。
【htmlだけ】tableの中にtable
tableは要素を横に並べることができます。線がなく、1行2列のtableを用意し、その中にtableを入れる方法です。
|
|
<table>
<tr>
<td valign="top">
<table border>
<tr>
<td>セル</td>
<td>セル</td>
</tr>
<tr>
<td>セル</td>
<td>セル</td>
</tr>
</table>
</td>
<td valign="top">
<table border>
<tr>
<td>セル</td>
<td>セル<br>セル</td>
</tr>
<tr>
<td>セル<br>セル</td>
<td>セル</td>
</tr>
</table>
</td>
</tr>
</table>
メリット
- 回り込まない
- widthを指定しなくても必ず横並びする
- きれいに横並びする
デメリット
- tableは表として使うべきでありレイアウト目的で使うべきではない
- ソースがtableだらけであり、ミスが起きやすい
【CSS】display:flex
CSS display:flexの子要素は横並びします。
セル | セル |
セル | セル |
セル | セル セル |
セル セル |
セル |
<style>
.example{
display: flex;
align-items: flex-start;
}
</style>
<div class="example">
<table border>
<tr>
<td>セル</td>
<td>セル</td>
</tr>
<tr>
<td>セル</td>
<td>セル</td>
</tr>
</table>
<table border>
<tr>
<td>セル</td>
<td>セル<br>セル</td>
</tr>
<tr>
<td>セル<br>セル</td>
<td>セル</td>
</tr>
</table>
</div>
メリット
- きれいに理想の形にできる
デメリット
- なし
(しいて言えばhtmlだけで完結しないこと)
注意点
「align-items: flex-start」を指定してtableを上寄せにしています。
左右のtableの高さをそろえたい場合「align-items: flex-start」を削除しましょう。
【まとめ】tableを横並べする方法
上のものほど簡単で、下のものほどオススメです。
方法 | メリット | デメリット |
---|---|---|
左のtableにalign="left" | カンタン | 他の要素も回り込む |
間の縦列を結合 | 左右で行の高さがそろう | 上下の線がつながっている |
tableの中にtable | htmlだけできれいに横並びする | ソースがtableだらけであり、ミスが起きやすい |
display:flex | きれいに理想の形にできる | htmlだけで完結しない |
以上、tableを横並べする方法でした。
「この記事の内容がよくわからなかった…」「なんかうまくいかなかった…」というかたは下記記事↓でhtmlとCSSの基本を学びましょう。
わからないまま突き進むより基本を学ぶのが結局近道です。