14

在此处div查找滚动条到达某个位置时如何淡出 a 的示例。但这不是平滑的油门式淡入淡出。这是该jsfiddle的代码:

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% 不透明度。想知道有没有办法解决这个问题??

谢谢!!

4

4 回答 4

24

尝试类似的东西

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 以实现您在橙色 div 中编写的效果)

于 2012-04-18T06:21:09.397 回答
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 的不透明度

另请参阅此示例

于 2012-04-18T06:27:29.957 回答
4
var divs = $('.social, .title');
$(window).scroll(function(){
    var fadeval = 1 - ($(window).scrollTop()) / ($(window).height());       
    divs.css({opacity: fadeval});
});​

小提琴演示

编辑:哇,我发帖时有这么多答案打败了我

编辑: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);       
});​

更新了 JsFiddle

于 2012-04-18T06:28:26.227 回答
1
var divs = $('.social, .title'); 
$(window).scroll(function(){
    var p = $(window).scrollTop()/ $(window).height();
    divs.stop().fadeTo("fast",p);
});
于 2012-04-18T06:27:49.027 回答