結構はまった。
tableのtdタグに、position:relative; をつけて、その中にposition:absolute を使おうとしたら、Firefoxでは全然違うところに配置された。
具体的なコードは以下の通り
<html>
<head>
<meta charset="UTF-8"/>
<title>relative test</title>
<style type="text/css">
.outerDiv
{
width:300px;
height:150px;
background-color:#EEEEEE;
position:relative;
}
table
{
background-color:#FFFFFF;
}
table td
{
height:80px;
width:100px;
position:relative;
}
table td .rightup
{
position:absolute;
top:0px;
right:0px;
}
</style>
</head>
<body>
<div class="outerDiv">
テーブルテスト
<table caption="テーブルテスト" border="1">
<tr><th>Firefox</th><td> <span class="rightup">右上</span>無効</td></tr>
</table>
</div>
</body>
</html>
Firefoxでは、position:relativeは効いているのだが、tableのtdタグのposition:relativeは無視されている。
ちなみに、これはFirefoxのバグではなく、Firefoxが正しい実装である。
The effect of ‘position:relative’ on table-row-group, table-header-group, table-footer-group, table-row, table-column-group, table-column, table-cell, and table-caption elements is undefined.
なので、正しい実装としては、tdの中でdivタグのブロックレベルタグで囲んでdivタグにposition:relativeを使うようにしなければならないらしい。
分かった後で、”position:relative firefox 効かない” で検索すると同じようにはまった人がちらほら。Androidも効かないものがあるらしい。Chromeは効くのにね・・・。

