如何动画CSS翻译

Ign*_*eia 24 css jquery css3 jquery-animate jquery-transit

是否可以通过jquery为CSS属性转换设置动画?

$('.myButtons').animate({"transform":"translate(50px,100px)"})
Run Code Online (Sandbox Code Playgroud)

它在许多浏览器中都有效吗?

演示不起作用:http://jsfiddle.net/ignaciocorreia/xWCVf/

更新:

我的解决方案

  1. 简单的实现 - http://jsfiddle.net/ignaciocorreia/R3EaJ/
  2. 复杂的实现和多浏览器 - http://ricostacruz.com/jquery.transit/

fle*_*lec 7

有jQuery插件可以帮助您实现这一目标:http://ricostacruz.com/jquery.transit/

  • 让我们试试吧.我只想在我的网站上添加一行代码.它不需要整个库. (2认同)
  • @IgnácioR.Correia如果您正在寻找跨浏览器解决方案,我认为插件/库是可行的方法.除了使用jQuery,您已经在使用库了. (2认同)

Pra*_*yan 7

$('div').css({"-webkit-transform":"translate(100px,100px)"});?
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/xWCVf/5/

  • 请注意,您不需要使用供应商,jQuery 1.7+正确添加. (2认同)

Jas*_*don 6

根据CanIUse你应该让它有多个前缀。

\n\n
$(\'div\').css({\n    "-webkit-transform":"translate(100px,100px)",\n    "-ms-transform":"translate(100px,100px)",\n    "transform":"translate(100px,100px)"\n  });\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n

  • 原始发帖者询问了此代码不执行的*动画*。 (4认同)
  • 从 jQuery 1.8 开始,您不再需要指定供应商前缀。http://api.jquery.com/css/#css2 (3认同)

vsy*_*ync 5

有一种有趣的方法可以通过animate以独特的方式使用jQuery 方法来实现,您可以animate在javascript对象上调用该方法来描述该from值,然后作为第一个参数传递另一个描述该to值的js对象,以及一个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}] )
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>jQuery animate <pre>transform:translateY()</pre></h1>
Run Code Online (Sandbox Code Playgroud)