带滚动的Jquery / Javascript Opacity动画

时间:2012-01-02 15:04:26

标签: javascript jquery html5 css3 jquery-animate

我希望根据用户滚动更改对象的不透明度(并使动画转换为动画)。 示例(http://davegamache.com/)

我到处搜寻 喜欢这里,但它最终指向我的Waypoints插件(http://stackoverflow.com/questions/6316757/opacity-based-on-scroll-position)

我已经实现了[waypoints] [1]插件,并且一旦高于100px,对象就会消失。 [使用offet属性]但希望基本上控制对象的不透明度,并让动画像上面的例子一样可见。

我一直在搜索 - 这是我的最后一招。 非常感谢任何帮助。

6 个答案:

答案 0 :(得分:25)

这里有起点和终点的工作示例: 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);
});

答案 1 :(得分:13)

以下是一个工作示例: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);
    }
});

我们所做的就是抓住窗口的当前滚动位置,找出现在有问题的元素占屏幕外的百分比,并用该百分比设置其不透明度。

答案 2 :(得分:1)

由于我的声望低于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);
    });

答案 3 :(得分:0)

我查看了该网站的源代码。 它使用:$(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
});

答案 4 :(得分:0)

我知道我参加聚会有点晚了,但这是我的做法:

$(window).scroll(function(){
  var st = $(window).scrollTop();
  var range = 300 // finetune this to the desired effect
  $('.yourelement').css("opacity", 1- st / range); // animate your element
});

答案 5 :(得分:-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);
});

你怎么能使用鼠标滚动才能达到褪色,直到达到0.2不透明度,然后滚动页面?到目前为止我找到的解决方案完全禁用鼠标滚动功能