如何使用 JavaScript 动态设置样式 -webkit-transform?

IT技术 javascript webkit
2021-02-11 14:01:51

我想-webkit-transform: rotate()使用 JavaScript 动态更改属性,但常用的setAttribute不起作用:

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

.style不工作要么...

如何在 JavaScript 中动态设置它?

5个回答

JavaScript 样式名称是WebkitTransformOriginWebkitTransform

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

此处查看 WebKit 的 DOM 扩展参考

@Olafur Apple 链接已失效。
2021-03-21 14:01:51
所以是使用字符串执行此操作的唯一方法。如果它是递归的,它似乎会很慢。
2021-03-21 14:01:51
MozTransform 应该是你的朋友。
2021-04-01 14:01:51
这适用于 Safari 和 Chrome,但不适用于 Firefox。对于 Firefox,这样做的等效方法是什么?
2021-04-02 14:01:51
如果您想要多个,请用空格分隔例如: element.style.webkitTransform = "rotate(-2deg) translateX(100px)";
2021-04-09 14:01:51

以下是大多数常见供应商的 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":""
});

请参阅博客文章Coding Vendor Prefixes with JavaScript (2012-03-21)。

win.style.transform ="translate(-50%)" 不工作
2021-03-20 14:01:51
@Blaise 那是新的。从什么版本开始?
2021-03-22 14:01:51
jQuery 会自动选择正确的前缀,只需编写transform.
2021-03-30 14:01:51
它从 jQuery 1.8.0 开始。在 Github 上提交
2021-04-06 14:01:51

尝试使用

img.style.webkitTransform = "rotate(60deg)"

如果您想通过这样做,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)';

要为您的 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>