Я пытаюсь оживить div на полную высоту при нажатии кнопки и вернуться к исходной высоте при повторном нажатии кнопки. Полная высота div является автоматической, поскольку она содержит текст с различным количеством слов. Я попытался сделать приведенные ниже коды, но он не работает должным образом.
CSS:
.category_brief{
text-align:justify;
height:100px;
overflow:hidden;
}
Пример 1: Этот код не анимирует div при открытии на полную высоту, но оживляет при возврате к старой высоте.
$(".slide").toggle(function(){
$('.category_brief').animate({height:'100%'},200);
},function(){
$('.category_brief').animate({height:100},200);
});
Пример 2: Вывод этого кода такой же, как в Примере 1
var toggle = true, oldHeight = 0;
$('.slide').click(function(event) {
event.preventDefault();
var $ele = $('.category_brief');
var toHeight = ((toggle = !toggle) ? oldHeight : newHeight);
oldHeight = $ele.height();
var newHeight = $ele.height('auto').height();
$ele.animate({ height: toHeight });
});
Пример 3. Этот код анимирует div на полную высоту, но не переключает его.
var slide = $('.slide');
var slidepanel = $('.category_brief');
// On click, animate it to its full natural height
slide.click(function(event) {
event.preventDefault();
var oldHeight, newHeight;
// Measure before and after
oldHeight = slidepanel.height();
newHeight = slidepanel.height('auto').height();
// Put back the short height (you could grab this first
slidepanel.height(oldHeight);
slidepanel.animate({height: newHeight + "px"});
});
Если возможно, пожалуйста, предоставьте немного объяснений, так как я новичок ..
Обновление: Решено идеей от @chazm ..
@ chazm: спасибо за идею. Я получил его, скомбинировав 1-й и 3-й пример ... Вот код на случай, если кому-то это понадобится.
var slidepanel = $('.category_brief');
$(".slide").toggle(function(){
var oldHeight, newHeight;
// Measure before and after
oldHeight = slidepanel.height();
newHeight = slidepanel.height('auto').height();
// Put back the short height (you could grab this first
slidepanel.height(oldHeight);
slidepanel.animate({height: newHeight + "px"})
},function(){
$('.category_brief').animate({height:100},300);
});