【レスポンシブデザイン】テーブル、と見せかけて幅のタイトなスマホではカラムを落とせるパーツなどいかがでしょう。
iPhone5をチラ見しつつiPod touchの白を買います。hakoishiです。
やっとSiriに甘い言葉を囁ける...ここまで長かったー。
さて、今回はレスポンシブデザインのパーツに使えそうなサンプルソースのご紹介をば。
何かと使いどころの悩ましいtableですが、便利なこともやはり多いですね。
会社概要とか。料金表とか。
けれど、レシポンシブ案件ではスマホだと幅が狭くて崩れる!なんてことが多々あります。
そんなとき、dlでマークアップしてPCではテーブルライクに、スマホではカラムを落として(といいますか、dt・ddをソース通り縦に並べて)見せる方法はどうでしょう。
テクニック的にはお馴染みですね。
サンプル
ウィンドウの幅を広げたり狭めたりしてみてください。
html
<dl class="tbl-common01">
<dt>Title sample</dt>
<dd>Title sample Title sample Title sample</dd>
<dt>Title sample </dt>
<dd>Title sample Title sample Title sample<br>
Title sample Title sample Title sample</dd>
<dt>Title sample </dt>
<dd>Title sample Title sample Title sample</dd>
</dl>
css
.tbl-common01 {
width: 80%;
margin: 0 auto;
border: 1px solid #666666;
border-bottom: none;
}
.tbl-common01 dt {
font-weight: bold;
}
/* スマホ
-------------------------------------------------- */
@media only screen and (max-width:570px) {
.tbl-common01 {
background-color: #EEEEEE;
}
.tbl-common01 dt,
.tbl-common01 dd {
padding: 8px 20px;
}
.tbl-common01 dt {
float: none;
background-color: #AAAAAA; /* 背景色を指定 */
border-top:1px solid #FFFFFF;
border-left: 1px solid #FFFFFF;
}
.tbl-common01 dd {
border-top: 1px solid #666666;
border-bottom: 1px solid #666666;
}
}
/* PC
-------------------------------------------------- */
@media only screen and (min-width: 571px) {
.tbl-common01 {
background: #EEEEEE url(bg.png) repeat-y -150px 0; /* dlで背景画像をyリピートし、dtの背景色のように見せる。positionはdtの幅に応じて調整 */
}
.tbl-common01 dt,
.tbl-common01 dd {
padding: 20px;
}
.tbl-common01 dt {
clear: both;
float: left;
width: 110px; /* 幅を指定 */
border-top: 1px solid #FFFFFF;
}
.tbl-common01 dd {
padding-left: 170px; /* dtの分、左にpaddingを取る */
border-top: 1px solid #FFFFFF;
border-bottom: 1px solid #666666;
border-left: 1px solid #FFFFFF;
}
}
※ブレイクポイントは、ブラウザでの確認しやすさ優先の指定です。
残念ながら、こんな時には使えません。
- dtよりddの方が行数が少ない時
(※dtはddの左上に浮いている状態なので。同様の理由で、dtの上下中央配置も難しいです。) - dtの幅を可変にしたい時
(※dlの背景画像をposition指定でdtの背景のように見せているので。)
まとめ
力技の感はありますが、地味に便利ではないかと。
そう見えればOK、という観点で探るといろいろな発見がありますね。