Jquery/Javascript Opacity animation with scroll

瘦欲@ 提交于 2019-11-26 18:12:01

问题


I'm looking to change the opacity on an object (and have the transition be animated) based on a users scroll. example(http://davegamache.com/)

I've searched everywhere like here, but it ends up pointing me to the waypoints plugin (http://stackoverflow.com/questions/6316757/opacity-based-on-scroll-position)

I've implemented the [waypoints][1] plugin and have the object fading once it's higher than 100px. [Using the offet attribute] but would like to basically control the opacity of an object and have the animation be visible like the above example.

I've searched all over- this is my last resort. Any help is greatly appreciated.


回答1:


working exemple with starting and ending point here: http://jsfiddle.net/z7E9u/1/

I copy paste basic code here

    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);
});



回答2:


Here's a working example: http://jsfiddle.net/meEf4/

And the code:

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

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

All we do is grab the current scroll position of the window, figure out what percentage of the element in question is now off-screen, and set its opacity with that percentage.




回答3:


As I have lower than 50 reputation I cannot reply to Lonut's question, how to do the reverse. Here is my code if you would like the reverse, quite handy for navigation bars.

$(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);
    });



回答4:


I looked at the source code of that site. it uses: $(document).scrollTop(); to determine the scroll height, and $(window).scroll(function(){}) to bind an event listener to scrolling.

try this:

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



回答5:


I like this solution

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);
});

How could you use the mouse scrolling for the fading ONLY until eg 0.2 opacity is reached and then scroll the page too? The solutions i found so far disable the mouse scrolling function completely



来源:https://stackoverflow.com/questions/8702329/jquery-javascript-opacity-animation-with-scroll

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!