Jak dynamicznie ustawić styl -webkit-transform za pomocą JavaScript?


112

Chcę -webkit-transform: rotate()dynamicznie zmienić właściwość za pomocą JavaScript, ale często używany setAttributenie działa:

img.setAttribute('-webkit-transform', 'rotate(60deg)');

To też .stylenie działa ...

Jak mogę ustawić to dynamicznie w JavaScript?


nie ustawisz atrybutu stylu zamiast tylko tego
— Muhammad Umer

Odpowiedzi:


201

Nazwy stylów JavaScript to WebkitTransformOriginiWebkitTransform

element.style.webkitTransform = "rotate(-2deg)";

Sprawdź informacje o rozszerzeniach DOM dla WebKit tutaj .


10
Jeśli chcesz więcej niż jeden, oddziel je spacją Na przykład: element.style.webkitTransform = "rotate(-2deg) translateX(100px)";
— Marc

1
Działa to dobrze w Safari i Chrome, ale nie działa w Firefoksie. Jaki jest równoważny sposób zrobienia tego w przeglądarce Firefox?
— Ricardo Sanchez-Saez

3
MozTransform powinien być Twoim przyjacielem.
— haagmm,

@Olafur Link do Apple jest martwy.
— Carcigenicate

Więc jest to jedyny sposób na zrobienie tego za pomocą łańcucha. Wydaje się, że byłoby to dość powolne, gdyby było rekurencyjne.
— BBaysinger

89

Oto notacje JavaScript dla najpopularniejszych dostawców:

webkitProperty
MozProperty
msProperty
OProperty
property

Zresetowałem style transformacji wbudowanej, takie jak:

element.style.webkitTransform = "";
element.style.MozTransform = "";
element.style.msTransform = "";
element.style.OTransform = "";
element.style.transform = "";

I tak używając jQuery:

$(element).css({
    "webkitTransform":"",
    "MozTransform":"",
    "msTransform":"",
    "OTransform":"",
    "transform":""
});

Zobacz wpis na blogu Kodowanie prefiksów dostawców w języku JavaScript (2012-03-21).


5
jQuery automatycznie wybiera odpowiedni prefiks, wystarczy napisać transform.
— Blaise

@Blaise To jest nowe. Począwszy od jakiej wersji?
— Armel Larcier

1
Działa od wersji jQuery 1.8.0. Zobowiązanie na Github
— Blaise

1
win.style.transform ="translate(-50%)"nie działa
— Momin


5

Jeśli chcesz to zrobić za pośrednictwem setAttribute, zmień styleatrybut w następujący sposób:

element.setAttribute('style','transform:rotate(90deg); -webkit-transform: rotate(90deg)') //etc

Byłoby to pomocne, jeśli chcesz zresetować wszystkie inne style wbudowane i ponownie ustawić tylko potrzebne wartości właściwości stylu, ALE w większości przypadków możesz tego nie chcieć. Dlatego wszyscy radzili używać tego:

element.style.transform = 'rotate(90deg)';
element.style.webkitTransform = 'rotate(90deg)';

Powyższe jest równoważne z

element.style['transform'] = 'rotate(90deg)';
element.style['-webkit-transform'] = 'rotate(90deg)';

2

Aby animować swój obiekt 3D, użyj kodu:

<script>

$(document).ready(function(){

    var x = 100;
    var y = 0;
setInterval(function(){
    x += 1;
    y += 1;
    var element = document.getElementById('cube');
    element.style.webkitTransform = "translateZ(-100px) rotateY("+x+"deg) rotateX("+y+"deg)"; //for safari and chrome
    element.style.MozTransform = "translateZ(-100px) rotateY("+x+"deg) rotateX("+y+"deg)"; //for firefox
},50);
//for other browsers use:   "msTransform",    "OTransform",    "transform"

});

</script>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.