Показать Div, когда позиция прокрутки - PullRequest
27 голосов
/ 01 февраля 2012

Прежде всего, я хотел бы обратиться к этому сайту: http://annasafroncik.it/ Мне нравится, как появляются анимации. Сложно ли создать подобную функцию в jquery? Есть ли плагины для создания такого эффекта?

Надеюсь, кто-нибудь мне поможет.

Ответы [ 3 ]

57 голосов
/ 01 февраля 2012

По сути, вы хотите добавить класс «hideme» к каждому элементу, который хотите скрыть (затем вы устанавливаете этот класс на «opacity: 0»;

Затем, используя jQuery, вы устанавливаете $ (окно)Событие .scroll () для проверки расположения нижней части каждого элемента «hideme» относительно нижнего края видимого окна.

Вот его смысл ...

/* 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).offset().top + $(this).outerHeight();
        var bottom_of_window = $(window).scrollTop() + $(window).height();

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

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

        }

    }); 

});

Вот полный jsfiddle: http://jsfiddle.net/tcloninger/e5qaD/

7 голосов
/ 01 февраля 2012

Плагины?Возможно, но вы определенно можете создавать любые анимационные комбинации, которые вы можете себе представить с помощью jQuery.Если вы хорошо разбираетесь в селекторах и CSS, то это предел!Я бы посоветовал начать на сайте jQuery и проверить несколько примеров .

, чтобы помочь начать работу, и, возможно, дать вам некоторые идеи, если выуже знакомый с jQuery, вы можете попробовать следующее ... выяснить, насколько далеко внизу страницы находится ваш div, прослушивать события прокрутки и когда фокусируется div (то есть: страница прокручивалась мимоdiv Позиция, которую вы разработали), запустите анимацию.Что-то вроде:

<div id="my_div">Some content</div>

<script type="text/javascript">

    $(document).ready(function() {

        var my_div = $("#my_div");
        var div_top = my_div.offset().top;

        $(document).scroll(function() {
            if (div_top <= $(document).scrollTop()) {
                // do some cool animations...
            }
        });

    });

</script>

Надеюсь, я не испортил свой синтаксис!

0 голосов
/ 26 июня 2015

Попробуй это.У меня это сработало

$(document).scroll(function() {
  var y = $(this).scrollTop();
  if (y > 400) {
    $("body").addClass("allowshow");
  } else {
    $("body").removeClass("allowshow");
  }
});

, а css для этого

.showmydiv{display:block}
...