Ich benutze -webkit-transform (und -moz-transform / -o-transform), um ein div zu drehen. Außerdem wurde eine feste Position hinzugefügt, damit das Div mit dem Benutzer nach unten scrollt.
In Firefox funktioniert es gut, aber in Webkit-basierten Browsern ist es kaputt. Nach der Verwendung der -webkit-Transformation funktioniert die festgelegte Position nicht mehr! Wie ist das möglich?
html
css
positioning
rotation
iSenne
quelle
quelle
Antworten:
Nach einigen Recherchen wurde auf der Chromium- Website ein Fehlerbericht zu diesem Problem veröffentlicht. Bisher können Webkit-Browser diese beiden Effekte nicht gleichzeitig rendern.
Ich würde vorschlagen, dass Sie Ihrem Stylesheet nur Webkit-CSS hinzufügen und das transformierte Div zu einem Bild machen und es als Hintergrund verwenden.
Im Moment müssen Sie dies also auf die altmodische Weise tun, bis die Webkit-Browser FF einholen.
BEARBEITEN: Bis zum 24.10.2012 wurde der Fehler nicht behoben.
Dies scheint kein Fehler zu sein, sondern ein Aspekt der Spezifikation aufgrund der beiden Effekte, die separate Koordinatensysteme und Stapelreihenfolgen erfordern. Wie in dieser Antwort erklärt .
quelle
Die CSS-Transformationsspezifikation erklärt dieses Verhalten. Elemente mit Transformationen fungieren als enthaltender Block für Nachkommen mit fester Position. Position: Fixiert unter etwas mit einer Transformation hat kein festes Verhalten mehr.
Sie funktionieren, wenn sie auf dasselbe Element angewendet werden. Das Element wird als fest positioniert und dann transformiert.
quelle
Für alle, die ihre Hintergrundbilder finden, verschwinden sie in Chrome aufgrund des gleichen Problems mit dem Hintergrundanhang: behoben; - das war meine Lösung:
quelle
Etwas (ein bisschen hacky), das für mich funktioniert hat, ist
position:sticky
stattdessen:quelle
August 2016 und feste Position & Animation / Transformation ist immer noch ein Problem. Die einzige Lösung, die für mich funktioniert hat, war die Erstellung einer Animation für das untergeordnete Element, die länger dauert.
quelle
Eigentlich habe ich einen anderen Weg gefunden, um diesen "Fehler" zu beheben:
Ich habe Container-Element, das Seite mit CSS3-Animationen enthält. Wenn die Seite die Animation abgeschlossen hat, hat die Eigenschaft css3 den Wert: transform: translate (0,0);. Also habe ich gerade diese Zeile entfernt und alles hat so funktioniert, wie es sollte - Position: fest wird richtig angezeigt. Wenn die CSS-Klasse zum Übersetzen der Seite angewendet wird, wird die Eigenschaft translate hinzugefügt und die CSS3-Animation funktioniert ebenfalls.
Beispiel:
Demo: http://jsfiddle.net/ZWcD9/
quelle
in meinem Phonegap-Projekt die Webkit-Transformation -webkit-transform: translateZ (0); Lief wie am Schnürchen. Es funktionierte bereits in Chrome und Safari, nur nicht im mobilen Browser. Es kann auch ein weiteres Problem geben: WRAPPER DIVs sind in einigen Fällen nicht abgeschlossen. Bei schwebenden DIVs wenden wir eine klare Klasse an.
quelle
Wahrscheinlich aufgrund eines Fehlers in Chrome, da ich weder in Safari noch in Firefox replizieren kann, aber dies funktioniert in Chrome 40.0.2214.111 http://jsbin.com/hacame/1/edit?html,css,output
Da es sich um eine ganz bestimmte Struktur handelt, handelt es sich keineswegs um ein universell einsetzbares einzeiliges CSS-Update, aber vielleicht kann jemand daran basteln, damit es in Safari und Firefox funktioniert.
quelle
Ich hatte dieses Problem beim Versuch, React-Color mit React-Swipeable-Views (rsw) zu implementieren. Das Problem für mich war, dass rsw
translate(-100%, 0)
auf ein Registerkartenfeld angewendet wird , das die über den Vollbildmodus hinzugefügte Standard- Feststellungsdivision aufhebt, die beim Klicken das Farbauswahlmodell schließt.Für mich bestand die Lösung darin, die entgegengesetzte Transformation auf das feste Element anzuwenden (in diesem Fall,
translate(100%, 0)
wodurch mein Problem behoben wurde. Ich bin mir nicht sicher, ob dies in anderen Fällen nützlich ist, dachte aber, ich würde es trotzdem teilen.Hier ist ein Beispiel, das zeigt, was ich oben beschrieben habe:
https://codepen.io/relativemc/pen/VwweEez
quelle
Das Hinzufügen des
-webkit-transform
zum festen Element hat das Problem für mich gelöst.quelle
translateZ(0)
NICHT funktioniert. Es ist wahr, dass es manchmal funktioniert, ich habe Gelegenheiten gesehen, in denen es funktioniert hat. Aber ich kann es immer noch nicht eingrenzen.Folgendes funktioniert für mich auf allen getesteten Browsern und Mobilgeräten (Chrome, IE, Firefox, Safari, iPad, iPhone 5 und 6, Android).
quelle
quelle
Wenn Sie Javascript als Option verwenden können, kann dies eine Problemumgehung sein, um ein positionsfestes Element relativ zum Fenster zu positionieren, wenn es sich in einem transformierten Element befindet:
Zugegeben, Sie müssen auch Ihre Höhe und Breite anpassen, da
fixedEl
die Berechnung anhand des Containers erfolgt. Das hängt von Ihrem Anwendungsfall ab, aber dies ermöglicht es Ihnen, die festgelegte Position vorhersehbar festzulegen, unabhängig vom Container.quelle
Fügen Sie eine dynamische Klasse hinzu, während sich das Element transformiert.
$('#elementId').addClass('transformed')
. Dann deklarieren Sie in CSS,dann
dann
Jetzt Position: Fest, wenn ein Top- und ein Z-Index-Eigenschaftswert für ein untergeordnetes Element bereitgestellt werden. Funktioniert einwandfrei und bleibt fest, bis sich das übergeordnete Element transformiert. Wenn die Umwandlung zurückgesetzt wird, wird das untergeordnete Element wieder als fest angezeigt. Dies sollte die Situation verschlechtern, wenn Sie tatsächlich eine Navigationsseitenleiste verwenden, die beim Klicken um- und geschlossen werden kann, und Sie haben eine Registerkarte, die beim Scrollen auf der Seite klebrig bleiben sollte.
quelle
In meinem Fall habe ich herausgefunden, dass wir transform: translateX () nicht vor transform: translateY () verwenden können. Wenn wir beide verwenden möchten, sollten wir transform: translate (,) verwenden.
quelle
Bitte stimmen Sie nicht ab, da dies keine genaue Antwort ist, sondern jemandem helfen könnte, da dies ein schneller Weg ist, um die Transformation auszuschalten. Wenn Sie die Transformation für das übergeordnete Element wirklich nicht benötigen und möchten, dass Ihre feste Position wieder funktioniert:
quelle