Как динамически установить стиль -webkit-transform с помощью JavaScript?


112

Я хочу -webkit-transform: rotate()динамически изменить свойство с помощью JavaScript, но обычно используемые setAttributeне работают:

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

Тоже .styleне работает ...

Как я могу установить это динамически в JavaScript?


не устанавливаете ли вы атрибут стиля вместо этого?
Мухаммад Умер

Ответы:


201

Имена стилей JavaScript: WebkitTransformOriginиWebkitTransform

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

Проверьте ссылку расширения DOM для WebKit здесь .


10
Если вы хотите больше одного, разделите их пробелом. Например: element.style.webkitTransform = "rotate(-2deg) translateX(100px)";
Marc

1
Это отлично работает в Safari и Chrome, но не работает в Firefox. Какой эквивалентный способ сделать это для Firefox?
Ricardo Sanchez-Saez

3
MozTransform должен быть вашим другом.
haagmm

@Olafur Ссылка Apple мертва.
Carcigenicate

Это единственный способ сделать это со строкой. Похоже, было бы довольно медленно, если бы он был рекурсивным.
BBaysinger

89

Вот обозначения JavaScript для наиболее распространенных поставщиков:

webkitProperty
MozProperty
msProperty
OProperty
property

Я сбрасываю встроенные стили преобразования, например:

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

И вот так, используя jQuery:

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

См. Сообщение в блоге Кодирование префиксов поставщика с помощью JavaScript (21.03.2012).


5
jQuery автоматически выбирает правильный префикс, остается только написать transform.
Blaise

@Blaise Это ново. Начиная с какой версии?
Armel Larcier 01

1
Так происходит с jQuery 1.8.0. Фиксация на Github
Блез

1
win.style.transform ="translate(-50%)"не работает
МОМИН


5

Если вы хотите сделать это через, setAttributeвы должны изменить styleатрибут следующим образом:

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

Это было бы полезно, если вы хотите сбросить все остальные встроенные стили и снова установить только необходимые значения свойств стиля, НО в большинстве случаев вы можете этого не захотеть. Вот почему все советовали использовать это:

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

Вышеупомянутое эквивалентно

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

2

Чтобы оживить ваш 3D-объект, используйте код:

<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>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.