jquery-steps

How to set a dynamic height on content for each step?


I'm using Jquery steps wizard plugin. The problem I am having is that each step of the wizard has content of a different height. The css included with the examples to control the height for the content is

.wizard > .content
{
    background: #eee;
    display: block;
    margin: 0.5em;
    min-height: 35em;
    overflow: hidden;
    position: relative;
    width: auto;

    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
}

I have tweaked the min-height and overflow properties, but it still doesn't do what I want to accomplish. What I want is the height to be only high enough to accommodate the content for each step.

For example, say I have 2 fields for step 1 and 10 fields for step 2. In the examples the content is all the same height so it looks terrible having a much larger height than is necessary for the 2 fields to accommodate the 10 fields on step 2.

If I remove the min-height property, no content shows at all. Does Jquery steps require a fixed height to work for all steps? I'm hoping there is a way to make the height dynamic to accommodate the height of each individual step.

Thank you


Solution

  • Remove the height property for the below class in jquery.steps.css:

    .wizard > .content > .body{height:95%;}
    

    In the - jquery.steps.js search for:

    stepTitles.eq(state.currentIndex)
      .addClass("current").next(".body").addClass("current");
    

    Should be around line 844. Directly after, add:

    stepTitles.eq(state.currentIndex).next(".body")
        .each(function () {
        var bodyHeight = $(this).height();
        var padding = $(this).innerHeight() - bodyHeight;
        bodyHeight += padding;
        $(this).after('<div class="' + options.clearFixCssClass + '"></div>');
        $(this).parent().animate({ height: bodyHeight }, "slow");
    });
    

    The issue will be surely resolved.