Ich habe oben auf meiner Seite ein div
, das einen Kopftext enthält, der bei mouseenter
(in der Höhe) erweitert werden sollte, um etwas kleineren Text zu enthüllen. Dann, bei mouseleave
, sollte es sich dann zurückziehen. Das ist härter als es klingt ...
Die Lösung muss:
Ich habe es versucht:
:hover
in meinem Stylesheet, um von einem festgelegten Pixelwert in auto
zu wechseln, wie in diese Frage (aber in meiner ist es reines CSS). Das hat nicht geändert. max-height
und Erweitern auf etwas, das größer ist als das tatsächlich erweiterte div
, wie in diese Frage . Dies bedeutet, dass die Übergänge nicht richtig funktionieren und auf verschiedenen Geräten unterschiedlich aussehen. jQuery
.animate()
und verwenden Sie den Pixelwert von auto, um dann einen Übergang zu erstellen, wie in diese Frage , aber die Animation muss beendet werden, bevor mit dem nächsten begonnen wird, was bedeutet Eine Reihe von Animationen könnte lange nach der Maus des Benutzers weiterlaufen, wenn sie weit von der div
entfernt ist. Siehe alle vier obigen Beispiele hier .
Wie gesagt, reines CSS wäre ideal, aber wenn es nicht möglich ist, würde ich gut mit JavaScript umgehen (und ich bevorzuge jQuery).
Danke! :)
Ich kenne keine reine CSS-Lösung dafür - das Überführen von Werten in auto
wurde von der Spezifikation nicht berücksichtigt. Ich denke, das war sogar eine explizite Entscheidung, die auf Implementierungsproblemen beruhen könnte.
Aber für eine "einfache" jQuery-Lösung würde ich den Absatzinhalt einfach in einen zusätzlichen Bereich einschließen, die Absatzhöhe auf 0 setzen und überblenden: versteckt, den Übergang für die Höhe an Ort und Stelle lassen - und dann jQuery lassen tue nur eine Sache, lies die Höhe des span-Elements, setze diese Höhe für den Absatz und setze sie dann wieder auf 0, um den Text wieder auszublenden.
%Vor%%Vor%
Auf diese Weise macht CSS immer noch das "Heavy Lifting", wenn die Höhenänderung über transition
gehandhabt wird (das könnte in Browsern optimiert werden), und jQuery / JavaScript wird nur verwendet, um es zu geben der kleine "Nudge" muss es wissen, was zu tun ist. (Ziemlich sicher, dass jQuery heute intern mit animate()
dasselbe macht, wenn der Browser dies unterstützt - ein zusätzlicher Vorteil wäre, dass jQuery sich um eine Fallback - Implementierung kümmert, sollte ein wirklich alter Browser transition
; in nicht unterstützen Bei meiner Lösung würde sich die Höhe sofort ändern, ohne Übergang.)
Bitte beachten Sie, dass in diesem Beispiel die Methode für alle vier Elemente gleich ist und ich den Textinhalt nicht geändert habe; -)
A css
Ansatz unter Verwendung von height
, line-height
, , font-size
opacity
jsfiddle Ссылка
Tags und Links javascript html jquery css css3