Transition timing-function wird auf dem "Rückweg" ignoriert
Hallihallo an diesen sehr sonnigen Samstag Morgen,
ich spiele gerade mit Transitions herum und habe hier mal einen Testballon in Form eines zweistufigen Flyout-Menüs gebaut: HTML-Code:
<!DOCTYPE html> * Beim Hovern der obersten Ebene fährt das Menü innerhalb der Duration herunter, beim Verlassen fährt es innerhalb der Duration wieder hoch. * Das verschachtelte UL in Eintrag 3 fährt bei Hover innerhalb der Duration aus, aber: Beim Verlassen von Eintrag 3 fährt es _sofort_ ein. Mache ich da was falsch, oder ist das einfach der "Komplexität" geschuldet? |
Hallo
die Ursache ist einfach zu erklären. Bei den Auswirkungen wird es schon schwieriger, da sie etwas komplexes Denken verlangen. Die Ursache ist schlicht das transition nicht mit allen CSS-Anweisungen zusammenarbeitet, also keine Auswirkungen auf sie hat. Das ist zum Beispiel bei display: none oder display: block oder bei height der Fall. Das ist kein Browser-Bug, sondern wohl so gewollt. Aus welchen Gründen auch immer. In deinem Fall hast du height nicht mal in die transition eingebunden, das Ergebnis ist aber das gleiche. Ich habe leider noch keine Auflistung gefunden, welche CSS-Anweisungen auf transition reagieren und welche nicht. Die Auswirkungen bei dir sind folgende: Zitat:
Das ist bei Problemen mit transition ein Grundproblem: Man muss zunächst herausbekommen, ob transition überhaupt nicht funktioniert oder, wie in deinem Fall, zwar funktioniert, die Auswirkungen durch Überlagerungen aber optisch nicht sichtbar sind. Da beide Anweisungen parallel starten spielt die Reihenfolge im CSS-Quelltext keine Rolle. Und wie schon geschrieben kann meiner Kenntnis nach auf height auch nicht mit mit transition eingewirkt werden. Sachlich ist dein Quelltext also ok. Gruss MrMurphy Edith: Du kannst die Problematik teilweise sichtbar machen, wenn du dem hover-Teil eine kräftige Hintergrundfarbe verpasst und die transition-Zeit auf 10 Sekunden änderst. Beim Enthovern wird das ul schlagartig ausgeblendet, wenn du innerhalb von 10 Sekunden wieder hoverst, beginnt width nicht am Anfang, sondern dort, bis wo es sich bis dahin zurückbewegt hat. |
Stimmt, ich habe nicht bedacht, dass die Height ja sofort auf 0 gesetzt wird. Danke für den Denkanstoß :)
Height geht übrigens auch, aber transition mit Distanzen funktioniert immer nur mit absoluten Werten. |
Alle Zeitangaben in WEZ +2. Es ist jetzt 07:16 Uhr. |
Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
© Dirk H. 2003 - 2023