4

jQueryのfadeIn(またはfadeOut)メソッドに問題があります。アーティクルローテーターを作成しましたが、すべて正常に機能しますが、ページを下にスクロールしてアーティクルを回転させると問題が発生します。fadeIn(またはfadeOut)メソッドを使用すると、アーティクルの位置にスクロールします。これらのメソッドは、bodyのcss topプロパティを変更すると思いますが、これを回避する方法がわかりません。何か案が???

ここにコード

    function rotate(direction)
{
    if($('articles > article:visible:first') == 'undefined')
        $currentArticle = $('articles > article:first');
    else
        $currentArticle = $('articles > article:visible:first');

    if($currentArticle.attr('id') == $('articles > article:last').attr('id'))
        $next = $('articles > article:first');
    else
        $next = $currentArticle.next();

    if($currentArticle.attr('id') == $('articles > article:first').attr('id'))
        $prev = $('articles > article:last');
    else
        $prev = $currentArticle.prev();

    if($do_animation)
    {
        $currentArticle.fadeOut(1000,function(){
                switch(direction)
                {
                    case 1:
                        $next.fadeIn(1000);
                        break;
                    case -1:
                        $prev.fadeIn(1000);
                        break;
                }
                if($('.rotate_show'))
                    $('.rotate_show').removeClass('rotate_show');
                $('article_number > btn[id|="'+$next.attr('id')+'"]').addClass('rotate_show');
                });
    }
    else
        return false;
}

わかりました、サイトhttp://kario91.altervista.org/ultimateテキストはjoomlaからのものですこれは完全なサイトです!変数は正常に機能します。問題はありません。ブラウザウィンドウを縮小して、下にスクロールしてみてください。

4

3 に答える 3

5

この問題は、記事が完全にフェードアウトすると、コールバックが呼び出される直前にページの高さが低くなり(記事が非表示になっているため)、そのためにブラウザがスクロールするという事実が原因であると言いたくなります。ページの一番下(記事なし)がブラウザのウィンドウの一番下に来るまで。が完了した後でコールバックを削除してみてくださいfadeOut。ブラウザがどのように下部を揃えているかに気付くかもしれません。

これは、fadeOutが存在する前にアーティクルコンテナに高さを指定することで修正できると思います。fadeOutが完了したら、fadeInが開始した直後にこの高さを削除します...またはそのようなものです。

これがお役に立てば幸いです。

于 2011-02-07T14:45:18.907 に答える
2

私はfadeTo()でそれを解決しました、それはこのようなものです

ポジションをバックアップする

$("#position").attr("name","scroll"+$("body").scrollTop());

フェードアウト:

$("#content").fadeOut(300,function(){........});

戻るには、「セミ」フェードインを実行し、次のコマンドで位置をコールバックします。

$("#content").fadeTo(10,0.1,function(){

$("body").scrollTop($("#position").attr("name").replace("scroll",""));


});

そしてそれらは完全にフェードインします

$("#content").fadeTo(300,1);
于 2012-11-04T11:15:57.637 に答える
1

親コンテナに高さを設定すると、問題が解決しました。

于 2012-04-16T20:52:56.533 に答える