同様の実装を試みた経験からお話します。
邪推ですが、見出し部分にはjsonのようなデータを渡して、動的に表示する実装をするかと思います。
その前提で書きました。ご留意ください。
方法としては以下が考えられます。
・大中小ごとに行をつくり、ループを回す
・CSSGridをつかう
・大の行をつくり、その中に中の行をつくり、その中に小の行をつくる
・canvasで実装
順番はおすすめ順です。
・大中小ごとに行をつくり、ループを回す
こちらは一番簡易な実装です。
<tr>
<th colspan="3">大1</th>
<th>2</th>
<th>3</th>
</tr>
<tr>
<th>中1-1</th>
<th>中1-2</th>
<th>中1-3</th>
<th>2</th>
<th>3</th>
</tr>
<tr>
<th>小1</th>
<th>2</th>
<th>3</th>
</tr>
注意点としては2つあります。このループを回せるデータ構造にすること。加えてセルの幅を決定するために、大中には自分が持つ(中)小の個数データをもたせることがあります。
・CSSGridをつかう
ほぼ説明不要です。
ただし、上記と違い<tr>
を使わないため、<tbody>
側とのズレを細かく修正しなくてはいけません。そういった点で上記より手間がかかります。
・大の行をつくり、その中に中の行をつくり、その中に小の行をつくる
<tr>
<table>
<th>大</th>
<tr>
<th>中1</th>
<table>
<th>小</th>
</table>
</tr>
<tr>
<th>中2</th>
</tr>
</table>
</tr>
記憶が怪しいですが、このような実装だったはずです。<table>
のネストですね。こちらは構造も複雑ですし、CSSの調整にも時間がかかります。データ構造がわかりやすいことがメリットです。
・canvasで実装
一番自由度と性能が高く、一番難易度も高い実装方法です。
ひとつライブラリをつくるぐらいの気概が必要です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/21 07:10
2019/07/21 09:03 編集
2019/07/21 13:58
2019/07/23 10:37
2019/07/23 11:05