Подтвердить что ты не робот

Как анимировать CSS-перевод

Можно ли анимировать свойство CSS с помощью jquery?

$('.myButtons').animate({"transform":"translate(50px,100px)"})

и работает ли он во многих браузерах?

Демонстрация не работает: http://jsfiddle.net/ignaciocorreia/xWCVf/

UPDATE:

Мои решения:

4b9b3361

Ответ 3

В соответствии с CanIUse вы должны иметь его с несколькими префиксами.

$('div').css({
    "-webkit-transform":"translate(100px,100px)",
    "-ms-transform":"translate(100px,100px)",
    "transform":"translate(100px,100px)"
  });​

Ответ 4

Интересный способ, которым это может быть достигнуто с помощью метода jQuery animate уникальным способом, где вы вызываете метод animate в javascript Object, который описывает значение from, а затем вы передаете в качестве первого параметр another js object, который описывает значение to и функцию step, которая обрабатывает каждый шаг анимации в соответствии со значениями, описанными ранее.

Пример - преобразование анимации translateY:

var $elm = $('h1'); // element to be moved

function run( v ){
  // clone the array (before "animate()" modifies it), and reverse it
  var reversed = JSON.parse(JSON.stringify(v)).reverse();
  
  $(v[0]).animate(v[1], {
      duration: 500,
      step: function(val) {
          $elm.css("transform", `translateY(${val}px)`); 
      },
      done: function(){
          run( reversed )
      }
  })
};

// "y" is arbitrary used as the key name 
run( [{y:0}, {y:80}] )
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>jQuery animate <pre>transform:translateY()</pre></h1>

Ответ 5

Я тоже искал хороший способ сделать это, я нашел, что лучший способ - установить переход на свойство "transform", а затем изменить преобразование, а затем удалить переход.

Я объединил все это в плагин jQuery

https://gist.github.com/dustinpoissant/8a4837c476e3939a5b3d1a2585e8d1b0

Вы использовали бы такой код:

$("#myElement").animateTransform("rotate(180deg)", 750, function(){
  console.log("animation completed after 750ms");
});

Ответ 6

Вам нужно настроить анимацию ключевых кадров в CSS. И используйте ключевой кадр с jQuery:

$('#myTest').css({"animation":"my-animation 2s infinite"});
#myTest {
  width: 50px;
  height: 50px;
  background: black;
}

@keyframes my-animation {
  0% {
    background: red;  
  }
  50% {
    background: blue;  
  }
  100% {
    background: green;  
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myTest"></div>