2013-10-13 5 views
0

У меня есть баннер, который перемещается, когда я нажимаю на него курсор, и когда мышь выйдет, баннер вернется в исходное положение, я хочу знать, как заставить его остановиться в его текущем положении после анимации (я не хочу, чтобы сбросить каждый раз)CSS3 сохранить позицию после анимации

это то, как она движется:

/*keyframe animations*/ 
.first:hover { 
    -webkit-animation: bannermove 30s linear infinite; 
     -moz-animation: bannermove 30s linear infinite; 
     -ms-animation: bannermove 30s linear infinite; 
     -o-animation: bannermove 30s linear infinite; 
      animation: bannermove 30s linear infinite; 
} 

@keyframes "bannermove" { 
0% { 
    margin-left: 0px; 
} 
100% { 
    margin-left: -2125px; 
} 

} 


@-webkit-keyframes "bannermove" { 
0% { 
    margin-left: 0px; 
} 
100% { 
    margin-left: -2125px; 
} 

} 
+0

Она изменяется, потому что в вашем ключевом кадре его 0% 0px и 100 % 2125px. И в вашей анимации CSS у вас есть счетчик итераций до бесконечности, поэтому его постоянное повторение 0px до 2125px – EasyBB

ответ

-1
.first:hover { 
    -webkit-animation: bannermove 30s linear ; 
    -moz-animation: bannermove 30s linear ; 
    -ms-animation: bannermove 30s linear ; 
    -o-animation: bannermove 30s linear ; 
     animation: bannermove 30s linear 
    } 

путем размещения бесконечного установить число итераций, чтобы постоянно воспроизводить повторно. Извлечение бесконечного решения вашей проблемы.

+0

все равно дает мне такой же эффект:/ – alaslipknot

+0

Вы хотите, чтобы элемент оставался в том месте, где он находился, когда вышла ваша мышь баннер? Если это так, для этого нам, вероятно, понадобится JavaScript. Если нет, вы просто хотите, чтобы элемент перемещался, когда мышь закончилась, и осталась на -2125 пикселей? – EasyBB

+0

«Вы хотите, чтобы элемент оставался в том месте, где он находился, когда ваша мышь вышла из баннера?» Да точно – alaslipknot

1

Есть несколько вещей, чтобы думать:

  • Вы, вероятно, нужно парить еще один элемент, как содержащий DIV, его трудно продолжать парить над элементом, когда он выходит за пределы экрана.
  • Добавить animation fill mode, это будет сохраняться в конечном состоянии анимации до тех пор, пока пользователь продолжает зависать.

Working Example

<div class="container"> 
    <div class="first"></div> 
</div> 

.container:hover .first{ 
    -webkit-animation: bannermove 30s linear both; 
    -moz-animation: bannermove 30s linear both; 
    -ms-animation: bannermove 30s linear both; 
    -o-animation: bannermove 30s linear both; 
    animation: bannermove 30s linear both; 
} 

@keyframes bannermove { 
    0% { 
     margin-left: 0px; 
    } 
    100% { 
     margin-left: -2125px; 
    } 
} 

Если вам нужно конец анимации состояние сохранятся после того, как пользователь не парит больше вы можете рассмотреть возможность использования небольшого скрипта для добавления анимации, добавив класс , например, так:

Working Example 2

$('.first').mouseenter(function(){ 
    $('.first').addClass('banner'); 
}); 

.banner{ 
    -webkit-animation: bannermove 30s linear both; 
    -moz-animation: bannermove 30s linear both; 
    -ms-animation: bannermove 30s linear both; 
    -o-animation: bannermove 30s linear both; 
    animation: bannermove 30s linear both; 
} 

Если вы должны нуждаться, чтобы иметь паузу анимации, когда пользователь больше не парит и резюме при наведении снова:

Working Example 3

$('.first').hover(function() { 
    $('.first').addClass('banner'); 
    $('.banner').css('animationPlayState', 'running'); 
}, 

function() { 
    $('.banner').css('animationPlayState', 'paused'); 
}); 
+0

Красиво сделано apaul. Хотел бы я больше помочь, хотя на данный момент есть только телефон. В любом случае, я задаюсь вопросом, хочет ли op элемент оставаться в позиции, когда он сразу же выйдет, как если бы его маржа-левая: 250 пикселей в текущем кадре, оставив элемент и оставаясь на 250 пикселей или что-то еще. – EasyBB

+1

@EasyBB смотри новость – apaul

+0

Отличная работа. Мне нравится, когда пользователи предоставляют более одного варианта. Теперь это кросс-браузер animationPlayState? Вот почему мне нравится делать более продвинутые анимации с ванилью, просто мой собственный вкус. Я не буду сильно зависеть от css3, пока его 100% -ный кросс-браузер – EasyBB

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