web-dev-qa-db-ja.com

スクロール付きのJquery / Javascript不透明度アニメーション

ユーザーのスクロールに基づいて、オブジェクトの不透明度を変更する(そしてトランジションをアニメーション化する)ことを検討しています。例(http://davegamache.com/)

私はここのようにどこでも検索しましたが、ウェイポイントプラグイン(http://stackoverflow.com/questions/6316757/opacity-based-on-scroll-position)を指すことになります

[waypoints] [1]プラグインを実装し、100pxを超えるとオブジェクトがフェードするようにしました。 [offet属性を使用]ただし、基本的にオブジェクトの不透明度を制御し、上記の例のようにアニメーションを表示したいと考えています。

私はあちこちを検索しました-これが私の最後の手段です。どんな助けでも大歓迎です。

7
Soulremedy

ここで開始点と終了点を使用した例: http://jsfiddle.net/z7E9u/1/

ここに基本的なコードをコピーして貼り付けます

    var fadeStart=100 // 100px scroll or less will equiv to 1 opacity
    ,fadeUntil=200 // 200px scroll or more will equiv to 0 opacity
    ,fading = $('#fading')
;

$(window).bind('scroll', function(){
    var offset = $(document).scrollTop()
        ,opacity=0
    ;
    if( offset<=fadeStart ){
        opacity=1;
    }else if( offset<=fadeUntil ){
        opacity=1-offset/fadeUntil;
    }
    fading.css('opacity',opacity).html(opacity);
});
25
malko

これが実際の例です: http://jsfiddle.net/meEf4/

そしてコード:

var target = $('div');
var targetHeight = target.outerHeight();

$(document).scroll(function(e){
    var scrollPercent = (targetHeight - window.scrollY) / targetHeight;
    if(scrollPercent >= 0){
        target.css('opacity', scrollPercent);
    }
});

ウィンドウの現在のスクロール位置を取得し、問題の要素の何パーセントが現在画面外にあるかを把握し、そのパーセンテージで不透明度を設定するだけです。

13
maxedison

私の評判は50未満なので、Lonutの質問に答えることはできません。逆の方法を教えてください。逆の場合は、ナビゲーションバーに非常に便利な私のコードを次に示します。

$(window).scroll(function () {
        var offset = $(document).scrollTop()
        var opacity = 0;
        if (offset <= 0) {
            opacity = 0;
        } else if (offset > 0 & offset <= 200) {
            opacity = (offset - 1) / 200;
        }
        else {
            opacity = 1;
        }
        $('.black-background').css('opacity', opacity).html(opacity);
    });
1
Tom McDonough

そのサイトのソースコードを見ました。 $(document).scrollTop();を使用してスクロールの高さを決定し、$(window).scroll(function(){})を使用してイベントリスナーをスクロールにバインドします。

これを試してください:

$(window).scroll(function(){
    var fromtop = $(document).scrollTop();       // pixels from top of screen
    $('#fademeout').css({opacity: 100-fromtop}); // use a better formula for better fading
});
0
Rodik