IE8 + overflow: hidden + DXImageTransform.Microsoft.Matrix で 1px はみ出る
IE8 では、overflow: hidden がちゃんと実装されていないようです。
<!DOCTYPE> <html><head><title></title><style> .frame { position: absolute; width: 180px; height: 130px; overflow: hidden; } .matrix { -ms-filter: 'progid:DXImageTransform.Microsoft.Matrix(M11=0.99862,M12=-0.05233,M21=0.01570,M22=0.29958,Dx=20,Dy=6)'; filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.99862,M12=-0.05233,M21=0.01570,M22=0.29958,Dx=20,Dy=6); } </style></head><body> <div class="frame" style="top: 10px; left: 10px"> <div class="matrix" style="position: absolute"> <img src="rhino.jpg" /> </div> <div style="positon: absolute; background-color: skyblue"> clipping area<br /> clipping area<br /> clipping area<br /> clipping area<br /> clipping area<br /> </div> </div> <div class="frame" style="top: 120px; left: 10px"> <div class="matrix" style="position: absolute"> <img src="http://uupaa-js-spinoff.googlecode.com/svn/trunk/uupaa-excanvas.js/demo/images/rhino.jpg" /> </div> <div style="positon: absolute; background-color: skyblue"> clipping area<br /> clipping area<br /> clipping area<br /> clipping area<br /> clipping area<br /> </div> </div> </body></html>
上記の HTML を IE8 で表示するとこのようにレンダリングされます。
# rhino.jpg を http://uupaa-js-spinoff.googlecode.com/svn/trunk/uupaa-excanvas.js/demo/images/rhino.jpg からダウンロードして、ローカルPC に保存してから実行してください。
↓ローカルPC 上のファイルを表示すると、右側に 1px はみでてる
↑ネットワーク上のファイルを表示すると、はみでてない(ように見えるけど…)
ローカル PC のファイルを表示している場合は、クリッピング領域から1px はみ出ているのが分かるでしょうか。
ネットワーク上のファイルを表示している場合は問題ないように見えますが、他のタブに移動したりブラウザを最小化⇒元に戻す を行うと、やはり 1px はみ出します。
レンダリングモード(標準準拠 / Quirks, IE8 / IE7 / IE5) に関係なく発生するようです。
IE6, IE7 では発生しません。
1px はみだすぐらい、問題にならないのでは?
uupaa-excanvas.js の VML モードでレンダリングの不具合として発現します(IE8で見てください)
http://uupaa-js-spinoff.googlecode.com/svn/trunk/uupaa-excanvas.js/demo/3_1_canvas_drawimage+scale.html
右側に浮かんでいる謎の一本の縦スジがそれです。
私の中では、かなり大きな問題です。