2016-08-26 4 views
0

У меня есть приложение, подобное reddit, в котором я хочу, чтобы анимация CSS3 запускалась всякий раз, когда я downvote элемент. Я настроил его так, чтобы анимация работала корректно всякий раз, когда downvote, но записывается, но также запускается при начальной загрузке страницы. Любые попытки сделать это не привели к тому, что анимация не работает ни при каких обстоятельствах.CSS3 Анимация по ссылке Нажмите, а не на странице Загрузка

анимация запускается следующим на моей erb странице:

<div class="animations"> 
    <%= image_tag "ballerino.png", class: "fixed animation-left-to-right", id: "to-animate", style: "margin-top: 80px; width: 300px" %> 

    <script> 
    $(".downvote").on('click', function() { 
    $('#to-animate').addClass('animation-left-to-right'); 
    window.location.reload(false); 
    }); 
    </script> 

</div> <!-- animations --> 

У меня также есть следующие определения в моей application.scss страницы, которые я пытался использовать с JQuery:

.fixed { 
    position: fixed; 
} 

.no-display { 
    display: none; 
} 

Может ли кто-нибудь помочь мне исправить это, чтобы анимация не срабатывала при загрузке страницы?

Примечание: Я не затрудняю вопрос с фактическим CSS для самой анимации, потому что анимация работает нормально, всего лишь одно дополнительное время. Если кто-то подумает, что это поможет, я могу добавить его, но я действительно думаю, что проблема связана с моим JavaScript.

+0

у вас уже есть' анимационную-слева-right' класс на IMG тег. поэтому он запускается при загрузке страницы. удаление, которое может помочь, поскольку вы применяете его через jQuery в любом случае. – AA2992

+0

@AnkithAmtange, анимация запускается один раз, когда вы сначала переходите к странице (загрузка начальной страницы), а затем снова, когда она должна (на 'downvote'). Если я удалю «анимацию-левый-правый» из класса «класс», он просто останется на странице как фиксированное изображение без движения, несмотря ни на что. – Liz

+0

добавить 'анимация-play-state: paused;' в ваш класс «анимация-левый-правый» ... затем в downvote используйте jQuery, чтобы изменить CSS в 'анимация-play-state: running' вместо добавления класс. – AA2992

ответ

0

анимация работает при загрузке, потому что вы добавили класс в тег изображения, поэтому, когда он загружает его, он делает все, что делает этот класс (в этом случае анимация). Ankith верен, если вы не хотите запускать при загрузке, это имя класса должно быть только фиксированным. Это может быть глупо, но поскольку у вас уже есть класс, попробуйте добавить пустое пространство в начале вашего javascript-вызова, возможно, поэтому ничего не делает, потому что в итоге вы получаете класс с именем «fixedanimation-left- направо»

попробовать

<script> 
$(".downvote").on('click', function() { 
$('#to-animate').addClass(' animation-left-to-right'); 
    window.location.reload(false); 
    }); 
</script> 
+0

Я знаю, что наличие «анимации-слева направо» - это то, почему он работает при загрузке, но без этого (с предыдущим javascript или с новым, который вы предложили с пространством) ничего не происходит с изображением вообще когда нажата кнопка downvote. Он остается неподвижным на странице. – Liz

+0

, если вы проверяете хром-инструменты, правильно ли он добавляет класс (если вы его не добавляете)? – frenciaj

+0

Я ударил 'downvote', а затем проверил вкладку' elements' окна 'inspect', а также версию' view page source'. На нем не было «анимации-слева-направо». Тогда я подумал, может быть, это может быть из-за 'window.location.reload (false)' обновления страницы, поэтому я избавился от этого только для проверки, и он все еще не появился ... – Liz

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