2016-03-08 6 views
0

им делать некоторые анимации с CSS3, используя этот пример:прокрутки анимации с CSS3

http://www.justinaguilar.com/animations/index.html#

Я сделал Jquery код, чтобы обеспечить, что анимации появляется при прокрутке. Когда я делаю анимацию только с одним div, все идет правильно, но что-то не так, когда я пытаюсь применить ту же анимацию для двух div с одним и тем же классом, первый прямоугольник становится анимированным, но не происходит со вторым; Вот код:

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
\t 
 

 
\t <style> 
 

 
\t \t body { 
 
\t \t height: 2200px; 
 
\t \t } 
 
\t \t #objeto { 
 
\t \t /* modifique la posición para que se vea en la caja de stacksnippet */ 
 
\t \t 
 
\t \t width: 30%; 
 
\t \t height: 200px; 
 
\t \t background-color: red; 
 
\t \t visibility: hidden; 
 
\t \t } 
 

 
\t \t .slideUp { 
 
\t \t animation-name: slideUp; 
 
\t \t animation-duration: 1s; 
 
\t \t animation-timing-function: ease; 
 
\t \t visibility: visible !important; 
 
\t \t } 
 
\t \t @keyframes slideUp { 
 
\t \t 0% { 
 
\t \t  transform: translateY(100%); 
 
\t \t } 
 
\t \t 50% { 
 
\t \t  transform: translateY(-8%); 
 
\t \t } 
 
\t \t 65% { 
 
\t \t  transform: translateY(4%); 
 
\t \t } 
 
\t \t 80% { 
 
\t \t  transform: translateY(-4%); 
 
\t \t } 
 
\t \t 95% { 
 
\t \t  transform: translateY(2%); 
 
\t \t } 
 
\t \t 100% { 
 
\t \t  transform: translateY(0%); 
 
\t \t } 
 
\t \t } 
 
\t </style> 
 

 
\t <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
\t \t 
 
\t <meta charset="UTF-8"> 
 
\t <title>Document</title> 
 
\t <style> 
 
\t \t li{ 
 
\t \t \t color: black; 
 
\t \t } 
 
\t \t .foo{ 
 
\t \t \t background-color: yellow; 
 
\t \t } 
 
\t </style> 
 
</head> 
 
<body> 
 

 

 
\t <div id="objeto" style="position: relative; 
 
\t \t top: 100px;"></div> 
 

 
\t <div id="objeto"></div> 
 

 
\t 
 

 

 

 
\t <script> 
 

 

 
\t $(window).scroll(function() { 
 
    \t \t $('#objeto').each(function() { 
 
\t \t  var imagePos = $(this).offset().top; 
 
\t \t  var topOfWindow = $(window).scrollTop(); 
 

 
\t  console.log(imagePos, topOfWindow); 
 
\t  if (imagePos < topOfWindow + 400) { 
 
\t  $(this).addClass("slideUp"); 
 
\t  } 
 
\t }); 
 
\t }); 
 

 
\t /*$(window).scroll(function() { 
 
    \t \t $('ul').each(function() { 
 
\t \t  $(this).css("background-color","blue") 
 
\t \t  
 
\t }); 
 
\t });*/ 
 

 
\t </script> 
 
</body> 
 
</html>

+0

Вы можете сделать тест. Если вы поместите '$ ('# objeto'). Length' возвращает 1, даже если у вас есть 5 элементов с одинаковым идентификатором. Дублированные идентификаторы на одной странице html - это плохая практика, и это вызывает множество проблем. Это решает ответ ниже. –

ответ

1

Вы должны использовать класс вместо ID. поскольку ID уникален (https://css-tricks.com/the-difference-between-id-and-class).

Просто измените код на:

.objeto { 
     /* modifique la posición para que se vea en la caja de stacksnippet */ 

     width: 30%; 
     height: 200px; 
     background-color: red; 
     visibility: hidden; 
    } 

И

<div class="objeto" style="position: relative; 
     top: 100px;"></div> 

<div class="objeto"></div> 

И

$('.objeto').each(function() { 
     var imagePos = $(this).offset().top; 
     var topOfWindow = $(window).scrollTop(); 
+0

Столь благодарен, что я часами пытался его исправить !!! THANKSSSS – Albert

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