Как динамически установить стиль -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.