Search code examples
javascriptjqueryhtmlcssslidetoggle

using jQuery slide toggle with min height


I am trying to use jQuerys slideToggle on a div that has a minimum height. this causes the animation to jump and not move smoothly. I have spent a while now looking for a solution but i am unable to get anything to work. I have made an example on jsfiddle and would appreciate if anyone could help me solve this issue.

my css for the div being toggled:

#selected-display{
    height:calc(100vh - 50px);
    display:none;
    min-height: 750px;
}

my javascript:

$(document).ready(function(){
    $(".toggle-display").click(function(){
        $("#selected-display").slideToggle("slow");

    });
});

https://jsfiddle.net/4y3q27mh/


Solution

  • https://jsfiddle.net/rqkt58L1/

    You could just disable min-height during the animation, and then turn it back on when the animation is over:

    $(document).ready(function () {
      $(".toggle-display").click(function () {
        var minHeight = $("#selected-display").css('min-height');
        $("#selected-display").css('min-height',0).slideToggle("slow", function() {
            $(this).css('min-height', minHeight);
        });
      });
    });