[CSS] Firefox の tr,th,td要素 の position プロパティ について

だいぶ前に 高津戸さん もブログに書いていましたが、
マークアップする時にちょいちょい忘れてしまうので備忘録として。

Firefox での tr, th, td要素 の扱い

Firefox では tr, th, td要素 の display プロパティに対する position:relative; の指定が定義されていません。
(「Firefoxでは」というよりは、CSS2 の仕様上そうなっているのだが)
つまり、例えば td要素 に position:relative を指定し、そこを基点にして何かの要素を position:absolute で配置するといったスタイルは Firefox では無視されます。

サンプル

かなり強引な例ですが、
次のようにトピックスかなにかの表組を組むとします。

<!-- HTML -->
<div>
<table>
<tr class="new">
<th>9999/99/99</th>
<td>あいうえおあいうえお</td>
</tr>
<tr>
<th>9999/99/99</th>
<td>あいうえおあいうえお</td>
</tr>
</table>
</div>

その td要素 に対して次のようなやり方で New! というテキストを表示しようとすると...

/* CSS */
div, table, tr, th, td{
  position:relative;
}
tr.new td{
padding-left:5em;
}
tr.new td:before{
  content:"New!";
  position:absolute;
  color:#ff0000;
  top:0;
  right:0;
}

だいたいの方が下図のようになると想像するかもしれませんが、

前述した理由から、Firefox では想定した位置にテキストが配置されません。
恐らく下図のようになります。(※もちろんマークアップやCSSによりけりですが)

あくまで "例えば" ですが。

この例の場合で言うと、New! のテキストが配置される位置は、
table要素 の親要素である div要素 の位置が基準となります。

display プロパティに table-xxxx系 を指定した場合

display プロパティには table-row, table-cell, table-column といった値を指定できるが、
これらを指定された要素も上述と同様に position:relative の指定が定義されていない扱いとなるため、
上記サンプルと同様にそれらの要素を基点として何かの要素を position:absolute; で配置しようとすると、
Firefox ではスタイルが無視されて想定する表示になりません。

気を付けましょう(自分が)。

トラックバックURL

http://mashimonator.weblike.jp/mt/mt-tb.cgi/189

コメント投稿フォーム