使用css向下滚动元素

时间:2013-03-23 18:02:38

标签: jquery css

示例: http://www.chartjs.org/

向下滚动时,每篇文章都会显示在浏览器的视口中。 css是

#examples article {
    -webkit-transition: opacity 200ms ease-in-out;
    -ms-transition: opacity 200ms ease-in-out;
    -moz-transition: opacity 200ms ease-in-out;
    -o-transition: opacity 200ms ease-in-out;
    transition: opacity 200ms ease-in-out;
    position: relative;
    margin-top: 20px;
    clear: both;
}

我试过这个css但是它不起作用。是否有一些与CSS一起工作的JavaScript?我怎样才能实现这种滚动>淡出效果?

4 个答案:

答案 0 :(得分:25)

Demo Fiddle

你想要这样的东西吗?

   $(window).scroll(function () {

        /* Check the location of each desired element */
        $('.article').each(function (i) {

            var bottom_of_object = $(this).position().top + $(this).outerHeight();
            var bottom_of_window = $(window).scrollTop() + $(window).height();

            /* If the object is completely visible in the window, fade it it */
            if (bottom_of_window > bottom_of_object) {

                $(this).animate({
                    'opacity': '1'
                }, 500);

            }

        });

    });

答案 1 :(得分:4)

穆罕默德的回答没有考虑任何绝对定位的图像......我们应该使用偏移而不是位置

$(window).scroll(function () {

    /* Check the location of each desired element */
    $('.article').each(function (i) {

        var bottom_of_object = $(this).offset().top + $(this).outerHeight();
        var bottom_of_window = $(window).scrollTop() + $(window).height();

        /* If the object is completely visible in the window, fade it it */
        if (bottom_of_window > bottom_of_object) {

            $(this).animate({
                'opacity': '1'
            }, 500);

         }
     });
});

答案 2 :(得分:1)

因为我在评论中看到了它:

如果希望对象在对象的1/3 可见时淡入,请使用以下代码:

jQuery:

$(document).ready(function() {

    /* Every time the window is scrolled ... */
    $(window).scroll( function(){

        /* Check the location of each desired element */
        $('.hideme').each( function(i){

            var bottom_of_object = $(this).position().top + ($(this).outerHeight())/3;
            var bottom_of_window = $(window).scrollTop() + $(window).height();

            /* If the object is completely visible in the window, fade it it */
            if( bottom_of_window > bottom_of_object ){

                $(this).animate({'opacity':'1'},500);

            }

        });

    });

});

仅我更改的行是这样:

var bottom_of_object = $(this).position().top + ($(this).outerHeight())/3;

通过将/3更改为/4可以让它在可见对象的1/4时淡入。

答案 3 :(得分:0)

最佳流程:

<强> HTML:

timeout exception

<强> jQuery的:

<div id="container">

    <div id="monster">Hello</div>
    <div>Hello</div>
    <div class="hideme">Fade In</div>
    <div class="hideme">Fade In</div>
    <div class="hideme">Fade In</div>
    <div class="hideme">Fade In</div>
    <div class="hideme">Fade In</div>

</div>

<强> CSS:

$(function(){  // $(document).ready shorthand
  $('.monster').fadeIn('slow');
});

$(document).ready(function() {

    /* Every time the window is scrolled ... */
    $(window).scroll( function(){

        /* Check the location of each desired element */
        $('.hideme').each( function(i){

            var bottom_of_object = $(this).position().top + $(this).outerHeight();
            var bottom_of_window = $(window).scrollTop() + $(window).height();

            /* If the object is completely visible in the window, fade it it */
            if( bottom_of_window > bottom_of_object ){

                $(this).animate({'opacity':'1'},1500);

            }

        }); 

    });

});