バックグラウンド:
テーブルの列に小さなラベルを付けたいのですが。プロジェクトでHTML5/CSS3の実装された部分をいくつか使用しています。このセクションは、特にモバイルデバイスを対象としています。両方の事実が必ずしも関連しているわけではありませんが、肝心なのは、Internet ExplorerやFirefox(WebKitだけ)をサポートする必要がないということです。
問題
私の現在のCSSアプローチでは、セルの垂直方向のパディングは、列の「値」を含む< span
>要素(上/下の余白で設定)から取得されます。display: block
その結果、<span>
が空または欠落している(値がない)場合、およびラベルが配置されていない場合、パディングはありません。
「完全な」列は、値がなく、そこにない場合でも、ラベルをどこに配置するかを示す必要が<span>
あります。
「ノーブレークスペース」が使えるとは思いますが、絶対に避けたいと思います。
誰かがこれを行うための修正/より良い方法を持っているのだろうか?現在のコードは以下のとおりです。
<!DOCTYPE html>
<html lang="en">
<head>
<title>ah</title>
<style>
body {
width: 320px;
}
/* TABLE */
table { width: 100%; border-collapse: collapse; font-family: arial; }
th, td { border: 1px solid #ccc; border-width: 0px 0px 1px 1px; }
th:last-child, td:last-child { border-right-width: 1px; }
tr:first-child th { border-top-width: 1px; background: #efefef; }
/* RELEVANT STUFF */
td {
padding: 3px;
}
td sup {
display: block;
}
td span {
display: block;
margin: 3px 0px;
text-align: center;
}
</style>
</head>
<body>
<table>
<tr>
<th colspan="3">something</th>
</tr>
<tr>
<td><sup>some label</sup><span>any content</span></td>
<td><sup>some label</sup><span>any content</span></td>
<td><sup>some label</sup><span></span></td><!-- No content, just a label -->
</tr>
</table>
</body>
</html>