Animation CSS3: Anzeige + Opazität
ich habe ein problem mit einer CSS3-animation.
.child {
opacity: 0;
display: none;
-webkit-transition: opacity 0.5s ease-in-out;
-moz-transition: opacity 0.5s ease-in-out;
transition: opacity 0.5s ease-in-out;
}
.parent:hover .child {
opacity: 0.9;
display: block;
}
Dieser code funktioniert nur, wenn ich entfernen Sie die Veränderung der Anzeige.
Ich möchte die Anzeige ändern, nur nach dem schweben, aber die Deckkraft zu ändern, die mit dem übergang.
InformationsquelleAutor der Frage Alexis Delrieu | 2011-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basierend auf Michaels Antwort, das ist die eigentliche CSS-code zu verwenden
InformationsquelleAutor der Antwort Chris
Können Sie mit CSS-Animationen:
InformationsquelleAutor der Antwort Michael Mullany
Wenn möglich, verwenden Sie
visibility
stattdisplay
Zum Beispiel:
InformationsquelleAutor der Antwort tomas.satinsky
Diese Problemumgehung funktioniert:
definieren ein "keyframe":
Dieses "Schlüsselbild" auf "hover":
InformationsquelleAutor der Antwort Hermann77
Ich ein wenig verändert, aber das Ergebnis ist schön.
Danke an alle.
InformationsquelleAutor der Antwort Alexis Delrieu
Gibt es eine andere gute Methode, um dies getan durch die Verwendung von pointer-events:
Leider ist das nicht unterstützt IE10 und unten.
InformationsquelleAutor der Antwort RafaelKr
Ich hatte das gleiche problem. Ich habe versucht mit Animationen statt übergänge - wie vorgeschlagen von @MichaelMullany und @Chris - aber es funktioniert nur für webkit-Browser, auch wenn ich das kopieren-einfügen mit "-moz" und "-o" - Präfixe.
War ich in der Lage zu bekommen, um das problem durch die Verwendung
visibility
stattdisplay
. Dies funktioniert für mich, weil mein Kind element istposition: absolute
so Belegfluss ist nicht betroffen. Es funktioniert möglicherweise auch für andere.Dies ist, was der ursprüngliche code Aussehen würde mit meiner Lösung:
InformationsquelleAutor der Antwort Dave
Habe ich diese, es zu erreichen. Verschwinden Sie auf schweben, aber nehmen keinen Platz wenn Sie versteckt sind, perfekt!
InformationsquelleAutor der Antwort felixhirschfeld
Absolute oder Feste Elemente konnte man auch mit z-index:
Anderen Elemente sollte ein z-index zwischen -100 und 100 jetzt.
InformationsquelleAutor der Antwort Luca Steeb
Ich weiß, das ist nicht wirklich eine Lösung für Ihre Frage, weil Sie Fragen für
Mein Ansatz löst eine mehr Allgemeine Frage, aber vielleicht war dies der hintergrund-problem sollte gelöst werden, indem mit
display
in Kombination mitopacity
.Mein Wunsch war, um das Element aus dem Weg, wenn es nicht sichtbar ist.
Diese Lösung macht genau das: Es bewegt das element, aus dem Weg, und dies kann verwendet werden, für den übergang:
Dieser code enthält keine browser-Präfixe-oder rückwärts-Kompatibilität hacks. Es zeigt einfach, dass das Konzept, wie das element Weg bewegt wird, da es nicht mehr benötigt.
Der interessante Teil sind das zwei verschiedene übergänge-Definitionen. Wenn der Mauszeiger schwebt die
.parent
element der.child
element muss in Kraft gesetzt werden sofort und dann die Deckkraft geändert werden:Wenn es keine Maus oder der Maus-Zeiger bewegt war von dem element, man muss warten, bis die Deckkraft zu ändern beendet hat, bevor das element verschoben werden können, off-screen:
Bewegen des Objekts Weg wird eine gangbare alternative in einem Fall, wo die Einstellung
display:none
würde nicht brechen das layout.Ich hoffe ich trifft den Nagel auf den Kopf für diese Frage, obwohl ich nicht zu beantworten.
InformationsquelleAutor der Antwort Hannes Morgenstern
Wenn Sie die Auslösung der änderung mit JS, lassen Sie uns sagen, auf auf, es gibt einen schönen workaround.
Sehen Sie das problem geschieht, weil die animation wird ignoriert, auf display:none-element, aber browser gilt, alle änderungen auf einmal und das element wird nie display:block zwar nicht animiert, in der gleichen Zeit.
Der trick ist, zu bitten, den browser zu Rendern das Bild nach ändern der Sichtbarkeit, sondern vor Auslösung der animation.
Hier ist ein JQuery-Beispiel:
InformationsquelleAutor der Antwort daniel.sedlacek
Eine Sache, die ich Tat, war die anfängliche Staat die Marge, um so etwas wie "margin-left: -9999px", damit es nicht auf dem Bildschirm angezeigt, und setzen Sie dann "margin-left: 0" auf den hover-Zustand. Halten Sie es "display: block" in diesem Fall. Hat den trick für mich 🙂
Edit: den Zustand Sichern und nicht wieder den alten hover-Zustand? Ok, hier müssen wir JS:
InformationsquelleAutor der Antwort Joshua
Animation auf beiden Möglichkeiten onHoverIn/Out habe ich diese Lösung. Hoffe, es hilft jemandem
InformationsquelleAutor der Antwort Nicholas
display:
ist nicht transitionable. Sie werden wahrscheinlich brauchen, um jQuery verwenden zu tun, was Sie tun möchten.InformationsquelleAutor der Antwort Madara Uchiha