カテゴリー
【Sass基礎講座】Scssで見やすいフレキシブル対応の表(table)を作成する
※ 当ページには【広告/PR】を含む場合があります。
2023/11/05

当ブログ久しぶりのSassで簡単なHTML要素をスタイリングしてみるネタです。
ネットで
ただこうもおすすめされている紹介例が多いと、結局どのスタイルを参考にすべきか、きっと目移りしてしまうことでしょう。
言うまでもなく、人によって
とはいえ、万人ウケする完璧なデザインの「究極の表スタイル」が存在するならとっくに全てのWebデザイナーに普及・利用していることでしょう。
当然そんな都合の良いものはなく、絶えず「分かりやすく伝えられる」デザインとは常に何か考えながら、少しずつページのデザインを変えてみる地味な作業が求められます。
このブログ記事では、可能な限り第三者に有益な情報を分かりやすく伝えられるか、ということを良いデザインと位置づけ、この「分かりやすく伝えられる表スタイル」を以下のようなの方向性に着目したものとしてみます。
1. フレキシブル対応させて、どんなブラウザからでも見やすくする
2. マウスホバーやフォーカス時、選択要素にハイライトで強調する
これらのポイントを満たすような表スタイルは、結構他のウェブページにも紹介されていますが、css形式である場合がほとんどです。
あらためてこの記事内でSassベースのスタイリングからtable要素を見やすく修飾していく過程を考えてみましょう。
表をフレキシブル対応させる
早速、以下のプレーンなHtmlからなるtable要素にフレキシブル対応のスタイルを付けていきます。
<table>
<thead>
<tr>
<td></td>
<th scope="col">内容</th>
<th scope="col">学費(年額)</th>
</tr>
</thead>
<tbody>
<tr>
<th>Hoge大学</th>
<td data-label="内容" class="txt">Hogeを目指す人向けのHoge学部のある人気校</td>
<td data-label="学費(年額)" class="price">¥320,000</td>
</tr>
<tr>
<th>Piyo短期大学</th>
<td data-label="内容" class="txt">最短でPiyoの資格がとれる専門短期教育が強み</td>
<td data-label="学費(年額)"class="price">¥488,000</td>
</tr>
<tr>
<th>Fuga医療大学</th>
<td data-label="内容" class="txt">国内で唯一の最先端のFuga医療がじっくり学べるFuga専門学校</td>
<td data-label="学費(年額)"class="price">¥785,000</td>
</tr>
</tbody>
</table>
当然ですが、スタイルも何もないので、以下のように見やすさとは無縁の見た目になってしまいます。
まず、フレキシブル対応ではない通常のPCモニター向けの表示スタイルを付けてみましょう。
table {
border-collapse: collapse;
margin: 0 auto;
padding: 0;
width: 600px;
tr {
background-color: #fff;
border-bottom: 2px solid #fff;
&:nth-child(even) {background-color: #eee;}
}
th, td { padding: .35rem 1rem; }
thead tr {
background-color: #625223;
color: #fff;
th {
font-size: .85rem;
padding: 1rem;
}
}
tbody tr {
th {
text-align: left;
font-size: .8rem;
}
.txt { text-align: left; }
.price {
text-align: right;
font-weight: bold;
color: #ff5400;
}
}
}
このスタイルを割り当てると、
となります。
通常のブラウザからだと一見良さそうですが、画面の小さいタブレットやスマホ、ブラウザの表示サイズを縮小したときなど、表が見切れてしまい、より右側にある列の項目は見ることができないことが問題です。
そこで、スクリーン幅が
600px
table {
border-collapse: collapse;
margin: 0 auto;
padding: 0;
width: 600px;
tr {
background-color: #fff;
border-bottom: 2px solid #fff;
&:nth-child(even) {background-color: #eee;}
}
th, td { padding: .35rem 1rem; }
thead tr {
background-color: #625223;
color: #fff;
th {
font-size: .85rem;
padding: 1rem;
}
}
tbody tr {
th {
text-align: left;
font-size: .8rem;
}
.txt { text-align: left; }
.price {
text-align: right;
font-weight: bold;
color: #ff5400;
}
}
}
//👇ここから追加
@media screen and (max-width: 600px) {
table {
border: 0;
width: 100%;
th {
background-color: #625223;
display: block;
border-right: none;
}
tr {
display: block;
margin-bottom: .65rem;
border: 1px solid #625223;
&:nth-child(even) { background-color: #fff; }
}
td {
border-bottom: 1px dotted #bbb;
display: block;
font-size: .8rem;
text-align: right;
position: relative;
padding: 1.5rem 1rem 1.5rem 4rem;
border-right: none;
&::before {
content: attr(data-label);
font-weight: bold;
position: absolute;
left: 10px;
color: #000;
}
&:last-child { border-bottom: 0; }
}
thead {
border: none;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
tbody th {
color: #fff;
padding: 1rem;
}
}
}
ここでのポイントは
@media screen and (max-width: 600px) {...
width <= 600px
再度Html部分にこのスタイルをつけると、以下のような見栄えになります。
試しにブラウザで、ウインドウ幅を広くしたり狭くしたりすると、スクリーン幅に応じて、フレキシブルに表のレイアウトが切り替わるはずです。
ホバー時に選択要素をハイライトさせる
もう一点、マウスをホバーした項目が強調されるスタイルを作ってみましょう。
こちらは、table(の
tbody
tr
table {
margin: 0 auto;
width: 600px;
font-size: 0.9rem;
th, td {
padding: 0.2rem;
transition: 0.2s;
color: #111;
background-color: #fff;
}
tbody {
th {
font-weight: bold;
}
&:hover {
th, td {
color: #77735a;
background-color: #fff;
}
tr:hover {
th, td {
color: #f74016;
background-color: #fff0c1;
}
}
}
}
}
これを試してみたのが以下のようなhtmlになります。
簡単なcssの表現で簡単にハイライトを付けられるので、手早く表を見やすくするのにはとても有効な手段です。
まとめ
以上、Sassベースのスタイリングから、個人的に「分かりやすい表」の条件を考えてみました。
ただ、たまに目にする凝りに凝ったアニメーションでコテコテにカスタマイズした表のスタイルは場合によっては見にくいような気がします。
ブログなどではおおよそシンプルな表のほうが良い印象になるため、華美なスタイルにすればするほどPV数が上がるとは必ずしも言えません。
表を見やすくするためのcssスタイルの工夫もほどほどにしておかれると良いでしょう。
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー