2011-01-07 3 views
0

ich eine konzeptionelle Frage zu Fotogalerien haben wie folgt aus: in einem BrowserProblem haben, in einer Fotogalerie Bilder zu skalieren -webkit-Transformation Implementierung

http://www.nikesh.me/demo/image-hover.html

Wenn Sie diese öffnen, die CSS Transitions unterstützt (zum Beispiel Chrome), wird das überhitzte Bild problemlos skaliert, während die gezoomte Version von hoher Qualität bleibt.

Dies wird dadurch erreicht, dass die nicht gezoomten Bilder in einer etwas kleineren Version angezeigt werden, als sie tatsächlich sind, im Wesentlichen zeigt der Zoom sie in ihren wahren Dimensionen.

So werden normale Bilder zuerst verkleinert:

-webkit-transform:scale(0.8); 

Und dann auf Hover skaliert:

-webkit-transform:scale(1.2); 

Meine Frage: Wie wird die anfängliche Skalierung soll nach unten für Browser arbeiten, tun unterstützt diese Methode der Verkleinerung nicht? Versuchen Sie, diese Galerie in IE zu öffnen, um zu sehen, was ich meine, es zeigt die Bilder nicht verkleinert, was sie zu groß macht und dadurch das Layout bricht.

Was ich will:

  • Den vollen Effekt in Browsern, die sie unterstützen. Wichtig ist, dass die gezoomte Version Qualität bleibt.
  • Keine Auswirkung auf alle für Browser, die diese Funktion nicht unterstützen, noch eine solide ursprünglichen Dimension, so dass kein Layout gebrochen
  • Es ist für beide Bild Orientierungen funktionieren sollte, und es können auch Vielfalt in Bild Breiten und Höhen sein

Jeder? Vorzugsweise eine elegante Lösung, die kein Browser-Sniffing oder Javascript benötigt, aber alle Antworten sind willkommen.

+0

IE unterstützt eine Art der Skalierung: 'zoom'. Siehe http://msdn.microsoft.com/en-us/library/ms531189(v=vs.85).aspx – RoToRa

Antwort

1

Wenn Sie wollen, dass es ohne die Verwendung von Javascript funktioniert, dann scheint es, die einzige Methode, die Sie haben, ist, auf die ursprüngliche Skala mit CSS zu verzichten. Sie werden dies in der "antiquierten" Weise tun, um die Breite und Höhe des Bildes im Markup anzupassen.

<img src="yourImageSrc" width="80%" height="80%"> 

Dies würde erlauben Sie noch Ihr Layout in Takt zu halten, wenn der User-Agent nicht auf dem neuesten Stand ist.

** Ich weiß nicht, ob der Prozentsatz in der literalen Höhe/Breite-Definition funktioniert. Aber Sie können immer das Verhältnis herausfinden, das Sie brauchen, und schließen Sie es an.

+0

Ich habe ein paar Fortschritte gemacht, aber ein paar Probleme bleiben. Tatsächlich schneidet ein Prozentsatz allein nicht ab, ich musste das Verhältnis zwischen dem tatsächlichen Bild und dem verkleinerten Bild berechnen und dieses als eine buchstäbliche Breite und Höhe verwenden. Das funktioniert. Zwei Probleme bleiben bestehen: 1) In Chrome (9) ist das gezoomte Bild von minderer Qualität. Dies ist nicht das, was ich erwartet habe, da ich absichtlich Bilder lade, die größer sind als ich zeige. 2) FF3.6 zoomt das Bild korrekt in hohe Qualität, hat aber keinen Animationseffekt. Das ist kein großes Problem, aber seltsam, da ich FF 3.6 benutze und dies sollte ab 3.5 unterstützt werden. – Ferdy

+0

Wie auch immer, ich werde Ihnen das Kopfgeld geben, sobald SO mir erlaubt.Ich denke, deine Antwort ist richtig, obwohl ich wahrscheinlich diese Funktion fallen lassen werde, funktioniert es in keinem Browser wie gewünscht (Animation + hoher Zoom). – Ferdy