2016-05-29 5 views
0

Я пытаюсь получить текущее смещение элемента во время анимации css. Я стрельба анимации корыто JQuery, как это:Изменение смещения элемента во время анимации css jQuery

$('.left').css('margin-left', '50%'); 

Конечно элемент есть все переходы в CSS так .css превращается в анимацию. Тогда я пытаюсь получить ток смещения так:

var left = $(".left"); 
var Loffset = left.offset(); 
console.log(Loffset.left); 

Проблема заключается в том, что смещение не autamatically обновляется во время анимации. И я хочу поймать элемент в определенном положении.

Thnx заранее!

+0

Вы хотите получить 'offset' элемента при анимации? – Mohammad

+0

да, я бы хотел, чтобы он обновлялся на каждом пикселе, потому что мне нужно сравнить его с другим значением, а когда он соответствует значению, тогда запустите что-то – user3267302

ответ

2

Вы можете получить текущее смещение элемента, используя step объект в jquery animate().

$("div").animate({ 
 
    "margin-left": "50%" 
 
},{ 
 
    duration: 3000, 
 
    step: function(){ 
 
     console.log($(this).offset().left); 
 
    } 
 
});
div { 
 
    width: 100px; 
 
    height: 100px; 
 
    background: green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div></div>

+0

да, я знаю, но css-анимация работает лучше для меня и имеет лучшую производительность. Просто пытаюсь найти что-то вроде события «css animation in progress» – user3267302

0

Я нашел способ, чтобы сделать это. Прежде всего, я сделал функцию, которая стреляет непрерывно:

var myFunction = function() { 
     var left = $('.left'); 
     var Loffset = left.offset(); 
     console.log(Loffset.left); 
     if (windowWidthQuarter == Loffset.left) { 
      /* here goes code */   
     } 
}; 
var timer = setInterval(myFunction, 0); 

Это проверка смещения каждый 0 миллисекунды (нон-стоп). Тогда, когда переход закончится я закрыл его вниз:

$(".left").on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ 
    clearTimeout(timer); 
}); 
Смежные вопросы