ユニシンク/開発ブログ

Category : CSS

レスポンシブWebデザインに便利なCSS「display:table;」

近年のスマホの普及に伴い、多くのウェブサイトがスマホに対応しました。

多くのウェブ制作者はスマホ対応作業を行うにあたって覚えたCSSは多いのではないでしょうか。

私は、スマホ普及前はCSSのdisplayなんて「block」と「none」くらいしか知りませんでしたし、それで不都合もありませんでした。

前置きはさておきCSSの「display:table;」はレスポンシブWebデザインを行うにあたりとても便利な宣言です。

 

CSS「display:table;」とは

「display:table」は<table>以外のものでもテーブルのように表示するためのCSSです。これを使えば<table>タグを使わずにテーブルのような見た目を作れます。

<style>
.table{
display: table;
border-collapse:collapse;
}
.tr{
display: table-row;
}
.th,.td{
display: table-cell;
border: 1px solid #000;
padding: 1em;
vertical-align: middle;
}
</style><div class=”table”><div class=”tr”>
<p class=”th”>屋号</p>
<p class=”td”>鈴木商店</p>
</div>

<div class=”tr”>
<p class=”th”>役員</p>
<p class=”td”>鈴木太郎<br>鈴木次郎<br>鈴木三郎<br>鈴木史朗</p>
</div>

<div class=”tr”>
<p class=”th”>本社所在地</p>
<p class=”td”>〒999-9999<br>神奈川県横浜市横浜区横浜町123-9999横浜ビル3階</p>
</div>

</div>

例えば、上記のような記述をすれば以下のような見た目になります。見た目はまんまテーブルです。「border-collapse」も「vertical-align」も使えます。

「わざわざこんな記述しなくても素直に<table>タグを使えば?」と、思うかもしれませんが、スマホでこのテーブルを表示すると以下のように本社所在地の項目がとても見難くなってしまいます。

「display:table」を使う利点はメディアクエリの指定でテーブル表示を止められることです。

そこでメディアクエリを以下のように指定します。

@media (max-width: 399px) {
.table{
display: block;
}
.tr{
display: block;
}
.th{
display: block;
border: none;
padding:0;
font-weight: bold;
}
.td{
display: block;
padding:0 0 1em 0;
border-bottom:1px solid #CCC;
border-top:none;
border-left:none;
border-right:none;
}

「display:table」、「display:table-row」、「display:table-cell」はすべて「block」にして解除した上で、一列表示に対応させます。

無事、スマホでも見やすい表示になりました。

今回の例のようなケースでは「display:table」の代わりに「float」を使っても良いかとも思いますが、テーブルなのでvertical-alignを使えたり、隣のセルとheightが同一になるので使い勝手がとても良いです。

広告 :

風俗顧客管理システム阿修羅

Unithink

ウェブ制作、グラフィックデザイン、広告制作のユニシンク。
価値のあるウェブサイトを制作し、集客UP、売上UPを目指します。

Copyright © 2019 Unithink All Rights Reserved.