jQuery - recreate slideDown() effect using the animate() function?

后端 未结 1 927
隐瞒了意图╮
隐瞒了意图╮ 2020-12-16 15:22

How can I recreate jQuery\'s $.slideDown effect using the $.animate function?

相关标签:
1条回答
  • 2020-12-16 16:02

    Animate "height", "marginTop", "marginBottom", "paddingTop", and "paddingBottom" to "show".

    For example:

    $(...).animate({
        "height": "show",
        "marginTop": "show",
        "marginBottom": "show",
        "paddingTop": "show",
        "paddingBottom": "show"
    });
    

    Source: jQuery source code.

    fxAttrs = [
        // height animations
        [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
        // width animations
        [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
        // opacity animations
        [ "opacity" ]
    ];
    ...
    
    jQuery.each({
        slideDown: genFx("show", 1),
        slideUp: genFx("hide", 1),
        slideToggle: genFx("toggle", 1),
        fadeIn: { opacity: "show" },
        fadeOut: { opacity: "hide" }
    }, function( name, props ) {
        jQuery.fn[ name ] = function( speed, callback ) {
            return this.animate( props, speed, callback );
        };
    });
    ...
    
    function genFx( type, num ) {
        var obj = {};
    
        jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
            obj[ this ] = type;
        });
    
        return obj;
    }
    
    0 讨论(0)
提交回复
热议问题