JQuery - анимация/скольжение по высоте: 100%

У меня здесь есть код:

$('.aktualita_sipky').toggle(function() {
    $(this).parent().find('.aktualita_content').animate({ 
        height: "100%",
      }, 1500 );
}, function() {
    $(this).parent().find('.aktualita_content').animate({ 
        height: "120px",
      }, 1500 );
});

Теперь, когда я нажимаю его как первый "переключатель", он просто отображается мгновенно (без анимации), когда я нажимаю второй "переключатель", он красиво скользит вверх.

Есть ли способ сместить его до 100% с помощью этой приятной анимации?

Ответ 1

Возможно, вы могли бы сделать что-то вроде:

$height = $(window).height();   // returns height of browser viewport
//Or
$height = $(document).height(); // returns height of HTML document
//Or
$height = $(whatever).height();
$('.aktualita_sipky').toggle(function() {
    $(this).parent().find('.aktualita_content').animate({ 
        height: $height + 'px',
      }, 1500 );
}, function() {
    $(this).parent().find('.aktualita_content').animate({ 
        height: $height + 'px',
      }, 1500 );
});

http://docs.jquery.com/CSS/height

Ответ 2

Моим обходным путем для этого было добавить высоты дочерних элементов в div, добавив немного для учета полей:

function() {
  $('.accordionblock.open').removeClass('open');
  var childrenheight = 0;  $(this).children().each(function() {childrenheight += ($(this).height()*1.2)});
  $(this).animate({height:childrenheight},300).addClass('open');
  }
}

Ответ 3

Я нашел этот пост, ища решение самостоятельно, и у Karim79 было большое предложение использовать переменную и функцию height().

Для меня я не начинаю с высоты на 100%, так как у меня есть заданная высота, определенная в моей таблице стилей. Так что я делаю в функции для расширения, я делаю переменную, у которой есть запрос, чтобы вернуться к определенному элементу, который я хочу развернуть, и изменяет высоту css до 100% и возвращает высоту переменной. Затем я установил css для высоты назад (я полагаю, я мог бы использовать vars, чтобы указать исходную высоту предустановки, а также возможность редактирования css в будущем), а затем запустить анимационную функцию, используя var с высотой.

function expandAlbum (){
    var fullHeight = jQuery(this).prev('.albumDropdown').css('height' , '100%').height();
    jQuery(this).prev('.albumDropdown').css('height' , '145px');
    jQuery(this).prev('.albumDropdown').animate({'height' : fullHeight}, 1000, function(){jQuery(this).stop();});
    jQuery(this).html('close');
}

Я тоже не очень опытен, поэтому прошу небрежное кодирование.