2016-08-08 9 views
0

Я пытался создать раскладку по эффекту прокрутки, я попробовал несколько плагинов, но я не могу найти ни одного из них, которые соответствуют тому, что я ищу, и если они делают Im не уверен в том, как эффективно реализовать его, чтобы делать то, что я хочу.jQuery & animate.css для scrollReveal

У меня есть этот фрагмент кода JavaScript, с которым я играл;

$(document).ready(function(){ 
     $(window).scroll(function(){ 
      $('.hideme').each(function(i){ 
       var bottom_of_object = $(this).offset().top + $(this).outerHeight(); 
       var bottom_of_window = $(window).scrollTop(); + $(window).height(); 
       if(bottom_of_window > bottom_of_object){ 
        $(this).addClass('animated fadeInUp', 1000); 
       } 
      }); 
     }); 
    }); 

Проблема заключается в том, что анимация добавляется только один раз это с экрана, так что я должен прокрутить прошлое, где я хотел бы, чтобы анимация вступила в силу для того, чтобы реально работать. Я не уверен, как заставить JS реализовать код animate.css, как только элемент будет выглядеть в окне/браузере.

Еще одна вещь, которую я пытаюсь сделать, - удалить класс с помощью метода jQuery (removeClass), но он просто скрывается, а объекты шоу без анимации.

Я использовал gif, чтобы проиллюстрировать мою проблему (извините за то, что она такая маленькая). enter image description here

Существует также JsFiddle для дальнейшей иллюстрации моей проблемы; https://jsfiddle.net/1hwpswow/

+0

заменить 'вар bottom_of_window = $ (окно) .scrollTop(); + $ (window) .height(); ' - ' var bottom_of_window = $ (window) .scrollTop(); ' не работает? Кажется, вы пробовали, потому что вы забыли удалить делит – Carr

+0

Привет Карр, я попробовал это, но он все равно делает то же самое. Я думаю, что строка кода, которую мне нужно изменить, - это переменная bottom_of_object, в которой мне нужно, чтобы она нацелилась на вершину элемента/объекта, а не на дно, чтобы при прокрутке она срабатывала, прежде чем я прокрутил элемент мимо, а не после. Не уверен, как этого добиться. Благодарю. – Troy

+0

Позвольте ** bottom_of_object ** просто быть ** $ (this) .offset(). Top ** не соответствует вашим потребностям? – Carr

ответ

0

Anímate css работает с непрозрачностью, вы устанавливаете непрозрачность 0 и анимация должна работать! Кроме того, вы должны удалить и добавить класс анимированного css каждый раз, когда вы его используете!

+0

Привет, Db, я понимаю, что вы говорите, но это не проблема. Проблема заключается в том, чтобы каждый фрагмент анимации или fadeInUp, когда один из этих фрагментов достигает нижней части окна. – Troy

0

Установите начальный край и удалите его после прокрутки полного расстояния, равного высоте окна. вот скрипку: https://jsfiddle.net/Carr1005/1hwpswow/2/

$(document).ready(function(){ 

    $('.hideme').eq(0).css('margin-top',$(window).height());  
    $(window).scroll(function(){ 

     console.log($(window).scrollTop()); 
     console.log($(window).height()); 
     if($(window).scrollTop() >= $(window).height()) 
     $('.hideme').eq(0).css('margin-top',0); 

     $('.hideme').each(function(i){ 

     var top_of_object = $(this).offset().top; 
       var bottom_of_window = $(window).scrollTop() + $(window).height(); 
       if(bottom_of_window > top_of_object){ 
        $(this).addClass('animated fadeInUp', 1000); 
       } 

      }); 

     }); 
    }); 

 Смежные вопросы

  • Нет связанных вопросов^_^