Bro, I am looking for such fade in effect for images while scrolling down the page like this - http://www.google.com/tv/index.html or this http://www.stellamccartney.com/default/shop-products/Dresses I have heard about Lazy Load plugin, it is loading images while scrolling but I need just fading them in. Any thoughts?
            Asked
            
        
        
            Active
            
        
            Viewed 6,331 times
        
    0
            
            
        - 
                    I've got a link to a good plugin for this on my blog: http://webdesignrevolution.tumblr.com/post/16106467838/create-killer-scrolling-websites-with-scrollorama – Kyle Macey Feb 05 '12 at 22:25
- 
                    Scrollorama (http://johnpolacek.github.com/scrollorama/) yes? It is possible with a help of it fading in elements while scrolling down the page? – Anton Feb 05 '12 at 22:31
2 Answers
1
            
            
        I know this is old, but you can now achieve this via the jQuery appear:
Check out the demo at:
 
    
    
        Tristan Tao
        
- 855
- 11
- 29
1
            you can quite easily do this yourself.
- set display: none with jquery for all images (or the images you want to run the effect on), that are not within the $(window).innerHeight (get document scrolling offset with $(window).scrollTop() ) 
- add an onscroll listener for the document $(document).onscroll() and use $(element).fadeIn on the image when it scrolls into the viewport. 
Do better illustrate the way to script this, the following script is rather a logical concept than a copy/paste template ^^. I haven't tested this, but it should be a decent guideline.
assuming your images are properly classed like this:
<img class="classForImagesToApplyTheEffectOn" src="…" />
your script could read something like this
$('.ajax_block_product').each(function(index, el) {
    tiles = $(el);
    a = $(el).offset().top + $(el).height();
    b = $(window).scrollTop() + $(window).height();
    if (a > b) $(el).fadeTo(0,0);
    $(window).scroll(function(d,h) {
        tiles.each(function(i) {
            a = $(this).offset().top + $(this).height();
            b = $(window).scrollTop() + $(window).height();
            if (a < b) $(this).fadeTo(500,1);
        });
    });
});
 
    
    
        Michael Giovanni Pumo
        
- 14,338
- 18
- 91
- 140
 
    
    
        maddrag0n
        
- 459
- 4
- 13
- 
                    O, man, I am not good in jQuery, could you explain it more detail? By the way, here is the link where I am workin on http://layot.prestatrend.com see the images? I need such effect for them, help, please! :) – Anton Feb 05 '12 at 22:38
- 
                    
- 
                    1$(this).fadeIn(2000); and $(this).offset(); refer to the "window" element, not the classForImagesToApplyTheEffectOn – Kyle Macey Feb 05 '12 at 23:11
- 
                    @KyleMacey: dang, you are right. thx! should've read the code twice before hitting the submit button. – maddrag0n Feb 05 '12 at 23:14
- 
                    I have such error at Chrome - Uncaught TypeError: Cannot read property 'defaultView' of undefined :( – Anton Feb 05 '12 at 23:26
- 
                    
- 
                    Oh, I replaced $(window).innerHeight() with $(window).height() - but when page load now you can not see images untill you start scrolling - http://layot.prestatrend.com is there any solution? – Anton Feb 05 '12 at 23:41
- 
                    Could you see this solution -http://stackoverflow.com/a/5368165/1186095 ? But the matter is still so - Images do not show when page is loading... – Anton Feb 05 '12 at 23:44
- 
                    Drachenviech - here is what I need exactly - stackoverflow.com/a/5368165/1186095 but when page is load no images are shown only if start scrolling, is there a way to show images in viewport when page is load? – Anton Feb 05 '12 at 23:49
- 
                    you have to modify the "$(this).css('display', 'none');" part to only hide the images which are initially not in the viewport. – maddrag0n Feb 05 '12 at 23:54
- 
                    Drachenviech, but how to do this with a help of jQuery? It is very difficult? – Anton Feb 05 '12 at 23:58
- 
                    @Anton: see edited solution. I did not test it however and you might need to tweak a little here and there. – maddrag0n Feb 06 '12 at 00:26
- 
                    
