0

私は横スクロールのウェブサイトに取り組んでいます。Web サイトの背景画像が大きい (幅 5000 ピクセル)。これで、現在 display:hidden にあるコンテンツを含む div があります。それらをフェードインする方法は知っていますが、右にスクロールすると動的にビューに入る必要があり、パーセンテージを使用してこれらの div をトリガーしたいと考えています。

例: ユーザーが右にスクロールを開始し、幅が 20% に達すると、最初の div が (右から) ビューに入ります。その後、ユーザーは 40% の幅に達するまでスクロールを続けます。最初の div が (左に) アニメーション化し、次の div が (右から) ビューに入ります。

jQueryでこれを達成する方法はありますか??

ここにちょっとしたコードがあります... 現時点では、いくつかの基本的なアニメーションをトリガーするリンクがあります。しかし、手動スクロールには何もありません。ああ、私はパーセンテージのために ScrollTo と呼ばれるこの素晴らしいプラグインを使用しています。

HTML

<div id="eat" class="sections">
 <div class="content">
 </div>
</div>

<div id="see" class="sections">
 <div class="content">
 </div>
</div>

<div id="meet" class="sections">
 <div class="content">
 </div>
</div>

<div id="find" class="sections">
 <div class="content">
 </div>
</div>

<div id="background">
 <img src="images/test.jpg" alt="" id="bg" />
</div>

CSS

.sections {position:absolute; right: 0; width:700px; height: 100%; min-height: 650px; z-index: 10; background-color: rgb(0,0,0);}
#drink, #eat, #see, #meet, #find {margin: 0px; padding: 0px;}
.content {margin: 20px; padding: 0px; outline: 1px solid red;}
h1 {color:#FFF; margin: 10em auto 0px auto;}
#background {height:103%; min-height: 670px; overflow-x: scroll; overflow-y: hidden; z-index: 9;}
#background img#bg {height: 100%; min-height: 650px; margin: 0px; padding: 0px;}

JS

$("document").ready(function() {

$('#link1').click(function(){
    $('#background').scrollTo('20%', 1500);
        var div = $('#drink');
        div.animate({right: $(window).width()/2 - div.outerWidth()/2}, {duration: 1500, queue: false}, function() {
        });
        $('#logo, #eat, #see, #meet, #find').fadeOut(500);          
        $('#drink').fadeIn(500);
});

$('#link2').click(function(){
    $('#background').scrollTo('40%', 1500);
        var div = $('#eat');
        div.animate({right: $(window).width()/2 - div.outerWidth()/2}, {duration: 1500, queue: false}, function() {
        });
        $('#logo, #drink, #see, #meet, #find').fadeOut(500);
        $('#eat').fadeIn(500);
});

$('#link3').click(function(){
    $('#background').scrollTo('60%', 1500);
        var div = $('#see');
        div.animate({right: $(window).width()/2 - div.outerWidth()/2}, {duration: 1500, queue: false}, function() {
        });
        $('#logo, #drink, #eat, #meet, #find').fadeOut(500);                
        $('#see').fadeIn(500);
});

$('#link4').click(function(){
    $('#background').scrollTo('80%', 1500);
        var div = $('#meet');
        div.animate({right: $(window).width()/2 - div.outerWidth()/2}, {duration: 1500, queue: false}, function() {
        });
        $('#logo, #drink, #eat, #see, #find').fadeOut(500);
        $('#meet').fadeIn(500);
});

$('#link5').click(function(){
    $('#background').scrollTo('100%', 1500);
        var div = $('#find');
        div.animate({right: $(window).width()/2 - div.outerWidth()/2}, {duration: 1500, queue: false}, function() {
        });
        $('#logo, #drink, #eat, #see, #meet').fadeOut(500);
        $('#find').fadeIn(500);
});

});
4

2 に答える 2

2

scrollLeft()スクロール イベントをリッスンしてから、次のように基づいて計算を行うことができます。

$(document).on('scroll', function() {
  //do the math
  console.log( $(this).scrollLeft() );
});
于 2012-07-23T19:40:27.887 に答える
0

scrolljQueryでイベントを監視できます。これは、左右のスクロールを追跡する方法のアイデアを提供する別の回答です。https://stackoverflow.com/a/4308435/53007

于 2012-07-23T19:39:53.927 に答える