Ich habe folgende CSS-Regeln:Cross-Browser-Methode zur Verwendung der Transformation: Scale CSS-Eigenschaft?
-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);
Was ich zu einem div anzuwenden, um die Absicht, es zu skalieren, einschließlich aller Inhalte, Bilder, usw., bis zu 50% seiner Größe, während die gleiche Mitte zu halten. Wie Sie wahrscheinlich wissen, machen die aufgeführten Regeln genau das, außer für IE7-8.
Nach this site, das entspricht, MS proprietäre Regel wäre:
/* 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');
aber diese scheinen nicht wirklich, um den Inhalt der div Größe ändern, so scheint es, seine Position zu verschieben, aber das ist alles.
CSS3Please.com berichtet verschiedenen Matrixwerte das Äquivalent für Skala sein (0,5):
filter: progid:DXImageTransform.Microsoft.Matrix(/* IE6–IE9 */
M11=0.9999619230641713, M12=-0.008726535498373935, M21=0.008726535498373935, M22=0.9999619230641713,SizingMethod='auto expand');
ich diese als gut getestet haben, aber die Wirkung war die gleiche; das div schien seine Position zu ändern, aber die tatsächliche Größe seines Inhalts blieb unverändert.
Schließlich habe ich versucht transformie.js, die automatisch die Matrix über sylvester.js berechnet, wie Sie die Transformation Eigenschaft zuweisen, aber das Endergebnis war noch:
M11=0.5, M12=0, M21=0, M22=0.5
Genau das gleiche wie das, was ich zuerst versucht, die scheinbar tat nichts anderes als die Position des div zu verschieben.
ich würde versuchen cssSandpaper.js, aber es sieht ziemlich aufgebläht für das, was ich tun wollen, und es gibt keinen Port jQuery und ich fühle mich nicht cssQuery dem Projekt nur für das wie das Hinzufügen. Wahrscheinlichkeiten sind die gleichen Ergebnisse wie das, was transformie.js erzeugt, weil es scheint, auch sylvester.js zu verwenden.
Edit: Ich habe auch versucht this, die direkt von Microsoft zu kommen scheint, und schlägt vor, die folgende Matrixberechnungsmethode:
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;
}
Leider hat dies den Inhalt des div nicht maßstabs entweder selbst. Es sieht so aus, als ob das überhaupt nicht möglich ist, aber:
Wie kann das moderne transform: scale
in IE8-7 so simuliert werden, dass es tatsächlich auch die inneren div-Inhalte ändert?
Vielleicht bin ich auf der Suche nach etwas, das nicht existiert, aber ich wollte sicher sein. Alle Tests wurden mit IE9 im Kompatibilitätsmodus für IE8 und IE7 durchgeführt (bisher hat es immer die Arbeit getan, ich glaube nicht, dass es unzuverlässig ist, aber fühlen Sie frei, mich zu korrigieren, wenn Sie anders denken)
Unterstützt [Modernizr] (http://modernizr.com/) dies? [Vielleicht] (http://modernizr.com/docs/#cstransforms)? –
@JaredFarrish Afaik (aber jemand kann mich korrigieren, wenn ich falsch liege, weil ich es noch nicht benutzt habe), testet Modernizr, ob die Unterstützung für Transformationen da ist und Sie wissen lässt, aber was zu tun ist, wenn die Unterstützung fehlt ist dem Benutzer überlassen. – Mahn
Ich habe Modernizr nicht verwendet, aber von dem, was ich darüber verstehe, scheint das nicht der Anwendungsfall zu sein. Was ist der Sinn davon? –