1

JavaScriptを介してdivに生成される絶対配置要素がたくさんあります。各要素の配置は上下に 2px ずつ異なります。ただし、IE は 3 要素ごとに追加の垂直ピクセルを追加し、次に 2 要素ごとに 1 つ追加し、3 要素ごとに元に戻します。

待ってください、写真はそれを説明しています:

IE の機能

バックの動作ブロックを赤で、正しいブロックを緑で色付けしました。Chrome は正しくレンダリングします (Firefox も同様です):

Chrome の機能

IE 開発者ツールを使用すると、CSS が正しく設定されていることがわかります。

CSS

要素を追加しようとしましzoom:1たが、違いはないようです。

要素を追加するコードは次のとおりです。

var element = document.createElement("a");
element.style.fontSize = "6pt";
element.style.width = "20px";
element.style.height = "20px";
element.style.position = "absolute";
element.style.backgroundColor = "red";
element.style.zoom = "1";
element.style.display = "block";
var tofs = (columns * 2 + r * 20 - (c * 2));
var lofs = (c * 14 + (r + offset) * 9);
trace(c + "," + r + ": " + lofs + "," + tofs);
element.style.top = tofs + "px";
element.style.left = lofs + "px";
element.style.textIndent = "-10000px";
element.style.overflow = "hidden";
element.innerText = t;
element.selectable = "no";
setBackgroundForSeat(t, element);
target.append(element);

1pxIE が検出されたときに 3 要素ごとに 2 要素ごとにオフセットを調整しようとしましたが、うまくいきませ2px3px

アイデアが尽きた。誰か?

更新:これは、説明されている動作を備えた JS フィドルです。http://jsfiddle.net/uGHDh/5/

4

1 に答える 1

0

IE ツールバーが CSS を正しく設定していると言っていることは知っていますが、実際の値については嘘をついている可能性があります。あなたのコードから、浮動小数点値を取得するように見えます.IEがオブジェクトを引き出すときに丸め誤差を生成しているようです.

ピクセル値を使用する前に整数にキャストすることもできますが、すべてのブラウザーで望ましくない結果が生じる可能性があります。

于 2013-01-11T15:42:29.253 に答える