Ist es möglich, die CSS-Eigenschaft mit JQuery zu übersetzen?
$('.myButtons').animate({"transform":"translate(50px,100px)"})
und funktioniert es in vielen Browsern?
Demo funktioniert nicht: http://jsfiddle.net/ignaciocorreia/xWCVf/
UPDATE:
Meine Lösungen:
$('div').css({"-webkit-transform":"translate(100px,100px)"});
Es gibt jQuery-Plugins, mit denen Sie Folgendes erreichen können: http://ricostacruz.com/jquery.transit/
Es gibt eine interessante Möglichkeit, dies durch die Verwendung der jQuery animate
-Methode auf einzigartige Weise zu erreichen, indem Sie die animate
-Methode für ein Javascript-Objekt aufrufen, das den from
-Wert beschreibt, und als ersten Parameter ein anderes js-Objekt übergeben, das den to
-Wert beschreibt und eine step
-Funktion, die jeden Schritt der Animation gemäß den zuvor beschriebenen Werten behandelt.
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>
Nach CanIUse sollten Sie mehrere Präfixe haben.
$('div').css({
"-webkit-transform":"translate(100px,100px)",
"-ms-transform":"translate(100px,100px)",
"transform":"translate(100px,100px)"
});
Ich suchte auch nach einem guten Weg, dies zu tun. Ich fand den besten Weg, um einen Übergang für die Eigenschaft "transform" festzulegen, die Transformation zu ändern und dann den Übergang zu entfernen.
Ich habe alles in einem jQuery-Plugin zusammengefasst
https://Gist.github.com/dustinpoissant/8a4837c476e3939a5b3d1a2585e8d1b0
Sie würden den Code folgendermaßen verwenden:
$("#myElement").animateTransform("rotate(180deg)", 750, function(){
console.log("animation completed after 750ms");
});
Sie müssen die Keyframe-Animation in Ihrem CSS einstellen. Und verwenden Sie den Keyframe mit 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>