【Opera7.23 Strictモード】
box-sizing:border-box;を組み合せるとバグ
cf.
http://cssbug.at.infoseek.co.jp/detail/opera/b040.html 初めに、div {box-sizing:border-box;}と指定済みだとする。
div#menu {position:fixed; bottom:0;}
これは下記のDHTMLでtop値を付与したとき同じ表現になる。
var DOM=document.getElementById;
var Opera=(navigator.userAgent.indexOf("Opera")!=-1 && DOM)?1:0;
var N6=(DOM && !document.all && !Opera)?1:0;
if(DOM) {setInterval("alwaysBottom()",50);/*bodyタグ内に書き込む手間を省く*/
function alwaysBottom() {
object=document.getElementById('menu').style;
objH = document.getElementById('menu').offsetHeight;
var unit=(!N6)?'':'px';///*N6strictモード単位必須
if (DOM) {object.position='fixed'; object.top=BH-objH+unit;}
}
ところがこの関数最終行に追記して
if (DOM) {object.position='fixed'; object.top=BH-objH+unit; object.bottom='0';}
とするか、スタイルシートで#menu {bottom:0;}と指定してあるかすると、
オブジェクトdiv#menuが少しづつ動いて画面外に消え去る。
この不具合はOpera7.23でもStrictモードだけで起こり、
Quirksモードでは消え去ってゆかず、ちゃんと閲覧領域底辺に固定されたまま。
MozillaではStrictでもTransitionalでもそんなことは起らない。
setIntervalの代りにsetTimeoutで関数を実行させるとなぜかバグは生じない。
if(DOM) setTimeout("alwaysBottom()",50);
また、これらを使用せずに、ただ
if(DOM) {window.onload = posit;}
function posit(){//……変数定義省略
object.position='fixed'; object.top=BH-objH+unit; object.bottom='0';
}
としても、このバグは起きない。