複雑なテーブルをレスポンシブ対応 HPとスマホでセルの位置が異なる仕様

複雑なテーブルをレスポンシブ対応 HPとスマホでセルの位置が異なる仕様 静岡県のホームページ制作・WEB制作

テーブルタグをレスポンシブ対応にすることはあるかと思います。

今回は少し悩んだためメモとして残しておきたいと思います。

以下は今回のために作成したダミーです。

A
E
B
C
D
F
G
H
I

イメージとしては以下のような感じにしたかったのです。

タイトル
画像
小見出し1
小見出し2
小見出し3
小見出し1の説明。
小見出し2の説明。
小見出し3の説明。
まとめの文章をここに書いている。まとめの文章をここに書いている。まとめの文章をここに書いている。

ブラウザの横幅を狭くしてもらえるとスマホ版に変わります。

どのようなHTMLとCSSで実現しているのかを紹介します。

複雑なテーブルをレスポンシブ対応

ブラウザの横幅を変えなくても一目で分かるように画像にして紹介します。

以下がパソコンの画面での見た目です。

パソコン版テーブル

これがブラウザの横幅を縮める、つまりスマホサイズになると以下のようになります。

スマホ版テーブル

使用したHTMLとCSS

使用したHTMLとCSSは以下となります。

HTML

<div class="table-container">
<div class="cell A">A</div>
<div class="cell E">E</div>
<div class="cell B">B</div>
<div class="cell C">C</div>
<div class="cell D">D</div>
<div class="cell F">F</div>
<div class="cell G">G</div>
<div class="cell H">H</div>
<div class="cell I">I</div>
</div>

CSS

.table-container {
display: grid;
gap: 0px;
}
.cell {
padding: 5px;
text-align: center;
border: 1px solid #000;
font-weight: bold;
}
.A { background-color: #4F81BD; }
.B { background-color: #F7CA4D; }
.C { background-color: #9BBB59; }
.D { background-color: #FFFF00; }
.E { background-color: #F7C6C7; }
.F { background-color: #C4BD97; }
.G { background-color: #4FC3F7; }
.H { background-color: #9C6FD7; }
.I { background-color: #C65911; }

/* PC layout */
@media (min-width: 601px) {
.table-container {
grid-template-columns: repeat(4, 1fr);
grid-template-rows: auto;
border: 1px solid #000;
}
.A { grid-column: 1 / span 1; grid-row: 1; }
.B { grid-column: 2 / span 1; grid-row: 1; }
.C { grid-column: 3 / span 1; grid-row: 1; }
.D { grid-column: 4 / span 1; grid-row: 1; }
.E { grid-column: 1 / span 1; grid-row: 2 / span 2; }
.F { grid-column: 2 / span 1; grid-row: 2; }
.G { grid-column: 3 / span 1; grid-row: 2; }
.H { grid-column: 4 / span 1; grid-row: 2; }
.I { grid-column: 2 / span 3; grid-row: 3;text-align: left; }
}

/* SP layout */
@media (max-width: 600px) {
.table-container {
grid-template-columns: 1fr 1fr 1fr;
}
.A { grid-column: 1 / span 3; }
.E { grid-column: 1 / span 3; }
.B { grid-column: 1 / span 1; }
.C { grid-column: 2 / span 1; }
.D { grid-column: 3 / span 1; }
.F { grid-column: 1 / span 1; }
.G { grid-column: 2 / span 1; }
.H { grid-column: 3 / span 1; }
.I { grid-column: 1 / span 3; }
}

タイトルとURLをコピーしました