2012-04-18 90 views
11

查找当滚动条到达某个位置here时如何淡出div的示例。但它不是一个平滑的节流式淡入淡出。下面是该jsfiddle的代码:基于滚动条位置的Div不透明度

var divs = $('.social, .title'); 
$(window).scroll(function(){ 
    if($(window).scrollTop()<10){ 
     divs.fadeIn("fast"); 
    } else { 
     divs.fadeOut("fast"); 
    } 
});​ 

我希望不透明度百分比来反映滚动条的位置。例如,当滚动条处于最高位置时,div不透明度为100%。当我向下滚动35px时,我希望div的不透明度淡入0%

也许一种技术可能是当div A在顶部35px处,div B = 100%不透明度。当div A从顶部0px时,div B = 0%不透明度。并在它们之间的所有阶段平稳淡化。

谢谢!

更新:感谢所有帮助他们大多数工作相当好,但我真的需要它在35px范围内工作。所以我创建了一个新的例子,它将清楚地说明它应该如何工作。
http://jsfiddle.net/J8XaX/1/

更新2:移动设备:我试图在我的iPhone和淡入淡出效果不理想。它的工作方式是,如果您中途滑动并松开手指,则不透明度会降低。但如果您尝试平滑滚动,则会从100%不透明度直接变为0%不透明度。想知道是否有什么办法解决这个问题?

谢谢!

回答

22

尝试像

var divs = $('.social, .title'), 
    limit = 35; /* scrolltop value when opacity should be 0 */ 

$(window).on('scroll', function() { 
    var st = $(this).scrollTop(); 

    /* avoid unnecessary call to jQuery function */ 
    if (st <= limit) { 
     divs.css({ 'opacity' : (1 - st/limit) }); 
    } 
}); 

时scrollTop的达到35px随后的div的不透明度为1 - 35/35 = 0

例如小提琴:http://jsfiddle.net/wSkmL/1/
您的提琴更新:http://jsfiddle.net/J8XaX/2/(我已经改变了35 130px实现效果你写在橙色格)

+0

试了一下,没”工作,但是你有我需要的概念。向下滚动35px应该会让div淡出。我创造了一个新的小提琴,也许给它一个旋风? – user433575 2012-04-18 09:28:11

+0

简单的迷蒙。我插入了一个额外的')'看看我的更新 – fcalderan 2012-04-18 09:42:25

+0

非常感谢很多,我更新的小提琴完美的作品! – user433575 2012-04-18 18:33:40

7
var divs = $('.social, .title'); 
$(window).scroll(function(){ 
    var percent = $(document).scrollTop()/($(document).height() - $(window).height()); 
    divs.css('opacity', 1 - percent); 
}); 

$(document).height() - $(window).height():滚动区域
$(document).scrollTop():当前滚动位置
percent:以百分比
divs.css('opacity', 1 - percent);当前滚动位置:设置的div

的不透明度也可参见this example

+0

谢谢,它的工作非常流畅,但我需要它在35px的限制内工作。请看我的新例子。感谢帮助! – user433575 2012-04-18 09:30:25

1
var divs = $('.social, .title'); 
$(window).scroll(function(){ 
    var p = $(window).scrollTop()/ $(window).height(); 
    divs.stop().fadeTo("fast",p); 
}); 
+0

也适用,但需要35px的限制..请检查我的新示例。谢谢! – user433575 2012-04-18 09:30:58

4
var divs = $('.social, .title'); 
$(window).scroll(function(){ 
    var fadeval = 1 - ($(window).scrollTop())/($(window).height());  
    divs.css({opacity: fadeval}); 
});​ 

Fiddle demo

编辑:哇这么多答案打败了我,而我是张贴

编辑:2

var divs = $('.fademe'); 
$(document).ready(function(){divs.css('opacity', 0);}); //can be done using CSS also 
$(window).scroll(function(){ 

    var percent = $(document).scrollTop()/(35); 
    divs.css('opacity', percent);  
});​ 

Updated JsFiddle

+0

伟大的工作,但我需要它在35px的限制工作。请检查我的新示例。谢谢! – user433575 2012-04-18 09:31:31

+0

更新了我的答案 – Ghokun 2012-04-18 09:46:54