1

私が見つけたこの例は、まさに私が探していたものです:http: //jsfiddle.net/sg3s/RZpbK/ Thx to the author sg3s

jQuery(function($) {

    $('a.panel').click(function() {
        var $target = $($(this).attr('href')),
            $other = $target.siblings('.active'),
            animIn = function () {
                $target.addClass('active').show().css({
                    right: -($target.width())
                }).animate({
                    left: 0
                }, 500);
            };

        if (!$target.hasClass('active') && $other.length > 0) {
            $other.each(function(index, self) {
                var $this = $(this);
                $this.removeClass('active').animate({
                    left: -$this.width()
                }, 500, animIn);
            });
        } else if (!$target.hasClass('active')) {
            animIn();
        }
    });

});

しかし、私はそれに少し問題がありました。パネルを右から「開いて」「閉じて」ほしい。私はJavaScriptに精通しておらず、適切に調整することができません。

誰かがこれで私を助けることができますか?

4

3 に答える 3

1

このような?

http://jsfiddle.net/RZpbK/845/

私がしたのは、animInを次のように変更することだけでした。

            animIn = function () {
            $target.addClass('active').show().css({
                left: +($target.width())
            }).animate({
                left: 0
            }, 500);
        };
于 2013-03-24T17:00:26.700 に答える
0

両方の場所left: -($target.width())でを置き換えるだけですleft: $target.width()

于 2013-03-24T17:03:21.657 に答える
0

あなたの以前のコメントに基づいて、これはあなたが望むものです?

http://jsfiddle.net/RZpbK/847/

フェードアウトが実行された後のコールバックとしてではなく、animInがすぐに実行されるように変更しただけです。

$this.removeClass('active').animate({
                left: -$this.width()
            }, 500);
            animIn();
于 2013-03-24T17:13:31.850 に答える