Gunnar Bittersmann: jQuery .css

Beitrag lesen

@@dave:

nuqneH

Nicht. Ich mache eine von max-height: 0 auf max-height: 9999px.

Angenommen der Inhalt ist tatsächlich 100px hoch und du setzt die Dauer der Transition auf 1s.

Tu ich nicht. Ich würde schon eine für 9999 Pixel passende Zeit wählen.

Dann dauert's nicht 1s bis es ausgeklappt ist sondern nur ~0.01s.

Dann hat der Aufklappeffekt auch eine angemessene Dauer. Bei verschieden hohen Bereichen dauert der Effekt verschieden lange, läuft aber bei allen mit derselben Geschwindigkeit, was ich nicht als Nachteil erachte.

Beim einklappen würde die ersten ~0.99 Sekunden nichts passieren.

Das ist das Problem. Die „Krücke“, wie du’s nennst, taugt fürs Aufklappen, aber nicht fürs Einklappen.

Fürs Einklappen müsste der max-height-Anfangswert nah an der wirklichen Höhe des Bereichs liegen (aber nicht kleiner als die benötigte Höhe sein). Man mag das für den bestehenden Inhalt einigermaßen abschätzen können (was auch schon Gefahren in sich birg), aber wenn sich der Inhalt ändert …

Da bedarf es dann doch etwas JavaScript. Nicht für die Transition selbst, sondern nach dem Rendern einmalig (lies: nach jedem Neurendern einmalig) die benötigte Höhe auslesen und max-height zuweisen. Oder dann auch height und die Transition darauf anwenden.

Qapla'

--
Wer möchte nicht lieber durch Glück dümmer als durch Schaden klüger werden? (Salvador Dalí)