Höhe/Breite auf „Auto“ animieren

Avatar of Chris Coyier
Chris Coyier on

Es ist nicht möglich, thing.animate({ "height": "auto" }); durchzuführen. Das ist also die Methode von Darcy Clarke, um das zu ermöglichen. Sie klonen im Wesentlichen das Element, entfernen die festen Höhen, die das Element derzeit beeinträchtigen, und messen/speichern den Wert. Dann animieren Sie das reale Element auf diesen Wert.

jQuery.fn.animateAuto = function(prop, speed, callback){
    var elem, height, width;
    return this.each(function(i, el){
        el = jQuery(el), elem = el.clone().css({"height":"auto","width":"auto"}).appendTo("body");
        height = elem.css("height"),
        width = elem.css("width"),
        elem.remove();
        
        if(prop === "height")
            el.animate({"height":height}, speed, callback);
        else if(prop === "width")
            el.animate({"width":width}, speed, callback);  
        else if(prop === "both")
            el.animate({"width":width,"height":height}, speed, callback);
    });  
}

Verwendung

$(".animateHeight").bind("click", function(e){
    $(".test").animateAuto("height", 1000); 
});

$(".animateWidth").bind("click", function(e){
    $(".test").animateAuto("width", 1000); 
});

$(".animateBoth").bind("click", function(e){
    $(".test").animateAuto("both", 1000); 
});