次のCSSルールがあります。
-webkit-transform: scale(0.5); /* Saf3.1+, Chrome */
-moz-transform: scale(0.5); /* FF3.5+ */
-ms-transform: scale(0.5); /* IE9 */
-o-transform: scale(0.5); /* Opera 10.5+ */
transform: scale(0.5);
同じ中心を維持しながら、そのすべてのコンテンツ、画像などを含むサイズを 50% に拡大するために、div に適用するつもりです。おそらくご存じのとおり、IE7-8 を除いて、私がリストしたルールはまさにそれを行います。
このサイトによると、同等の MS 独自の規則は次のようになります。
/* IE8+ - must be on one line, unfortunately */
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.5, M12=0, M21=0, M22=0.5, SizingMethod='auto expand')";
/* IE6 and 7 */
filter: progid:DXImageTransform.Microsoft.Matrix(
M11=0.5,
M12=0,
M21=0,
M22=0.5,
SizingMethod='auto expand');
ただし、これらは実際には div のコンテンツのサイズを変更しているようには見えず、その位置をシフトしているように見えますが、それだけです。
CSS3Please.comは、さまざまなマトリックス値が scale(0.5) と同等であると報告しています。
filter: progid:DXImageTransform.Microsoft.Matrix(/* IE6–IE9 */
M11=0.9999619230641713, M12=-0.008726535498373935, M21=0.008726535498373935, M22=0.9999619230641713,SizingMethod='auto expand');
これらもテストしましたが、効果は同じでした。div の位置が変わったように見えますが、内容の実際のサイズは変わりません。
最後に、 transform プロパティを割り当てるとsylvester.jsを介して自動的に行列を計算するtransformie.jsを試しましたが、最終結果は依然として次のとおりでした。
M11=0.5, M12=0, M21=0, M22=0.5
私が最初に試したものとまったく同じで、divの位置をシフトする以外に何もしなかったようです。
私はcssSandpaper.jsを試してみますが、私がやろうとしていることに対してかなり肥大化しているように見えます。さらに、jQuery ポートがなく、そのためだけにプロジェクトに cssQuery を追加したくありません。ただし、sylvester.js も使用しているように見えるため、結果は transformie.js が生成するものと同じになる可能性があります。
編集:マイクロソフトから直接来たと思われるこれも試しましたが、次の行列計算方法を提案しています:
function resizeUsingFilters(obj, flMultiplier) {
// If you don't do this at least once then you will get an error
obj.style.filter = "progid:DXImageTransform.Microsoft.Matrix(M11='1.0', sizingmethod='auto expand')";
// Resize
obj.filters.item(0).M11 *= flMultiplier;
obj.filters.item(0).M12 *= flMultiplier;
obj.filters.item(0).M21 *= flMultiplier;
obj.filters.item(0).M22 *= flMultiplier;
}
残念ながら、これは div 自体の内容もスケーリングしません。これはまったく不可能のように見えますが、次のようになります。
transform: scale
実際に内部の div コンテンツのサイズも変更するように、IE8-7 でモダンをどのようにシミュレートできますか?
存在しないものを探しているのかもしれませんが、確認したかったのです。すべてのテストは、IE8 および IE7 の互換モードで IE9 を使用して行われました (これまでのところ、常に機能しており、信頼性が低いとは思いませんが、そうでない場合は自由に修正してください)。