Весь следующий текст просто ИМХО:)
Смотрите мой пример здесь - http://jsfiddle.net/XUjAH/99/
HTML:
<p id="click-meopen">click me to open</p>
<p id="click-meclose">click me to close</p>
<div id="this">
<div id="content">here<br />is<br />a<br />bunch<br />of<br />content<br />sdf</div>
</div>
как для JS:
$('#click-meopen').click(function() {
$("#this").height($("#content").height());
});
$('#click-meopen').click();
$('#click-meclose').click(function() {
$("#this").height('0');
});
Что касается CSS, он должен быть таким же, как у вас.
UPD : кажется, что анимация немного нестабильна - при установке 'height: auto' - div виден с самого начала, однако кнопка закрытия игнорирует анимацию при первом нажатии (у меня Chrome с последним обновлением ) поэтому я добавил обходной путь. Также добавлены другие стили для поддержки этой анимации для других браузеров, таких как Firefox и Opera, и не только для тех, кто поддерживает -webkit.
http://jsfiddle.net/XUjAH/110/
в CSS добавлен класс и удален «переход» из основного стиля:
.with-animation {
-webkit-transition: height 1s ease-in-out;
-moz-transition: height 1s ease-in-out;
-o-transition: height 1s ease-in-out;
transition: height 1s ease-in-out;
}
в JS:
// Однако наш div уже имеет правильный размер этой строки
// предотвращает мгновенное закрытие при первом нажатии, не знаю почему
. $ ( "# Контейнер") высота (. $ ( "# Содержание") высота ());
$('#click-meopen').click(function() {
$("#container").height($("#content").height());
});
$('#click-meclose').click(function() {
// If we add class with-animation on upper level div will
// start animation on page load
$("#container").height('0').addClass("with-animation");
});
1027 *