JavaScriptを使用してスタイル-webkit-transformを動的に設定する方法


112

-webkit-transform: rotate()JavaScriptを使用してプロパティを動的に変更したいのですが、一般的に使用されているものsetAttributeが機能しません。

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

.styleどちらか動作していません...

これをJavaScriptで動的に設定するにはどうすればよいですか?


これだけではなくスタイル属性を設定しないでください
Muhammad Umer 2013

回答:


201

JavaScriptスタイル名はWebkitTransformOriginWebkitTransform

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

こちらでWebKitのDOM拡張リファレンスを確認してください。


9
複数必要な場合は、スペースで区切ります。例: element.style.webkitTransform = "rotate(-2deg) translateX(100px)";
Marc

1
これはSafariとChromeでは正常に機能しますが、Firefoxでは機能しません。Firefoxでこれを行う同等の方法は何ですか?
Ricardo Sanchez-Saez 2013年

3
MozTransformはあなたの友達でなければなりません。
haagmm 2013年

@Olafurアップルリンクは死んでいる。
発がん性物質2016

文字列でこれを行う唯一の方法です。再帰的だとかなり遅いようです。
BBaysinger 2018

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によるベンダープレフィックスのコーディング(2012-03-21)」を参照してください。


5
jQueryは自動的に適切なプレフィックスを選択しますtransform。書き込むだけです。
ブレーズ

@ブレーズそれは新しいです。どのバージョンから始めますか?
Armel Larcier、2015年

1
jQuery 1.8.0以降です。Githubでのコミット
Blaise

1
win.style.transform ="translate(-50%)"機能していません
Momin


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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.