javascript - 将变换值添加到元素上已有的当前变换?

标签 javascript jquery css css-transforms webkit-transform

假设我有一个动态添加了 translateXtranslateY 值的 div

<div class="object child0" 
     style="-webkit-transform: translateX(873.5px) translateY(256px); 
            width: 50px; height: 50px;">

我想将 rotateY(20deg) 添加到当前转换中,但通过 element.style.webkitTransform = "rotateX(20deg)" 丢失其他值。

有没有办法在不丢失 translateXtranslateY 转换的情况下添加 rotateY

最佳答案

您可以使用 += 运算符将 rotateX(20deg) 附加到已经存在的转换。

el.style.webkitTransform += "rotateX(20deg)";

注意:我在下面的代码片段中使用了不同的转换来实现视觉效果,但方法是相同的。

window.onload = function() {
  var el = document.getElementsByTagName("div")[0];
  el.style.webkitTransform += "rotateZ(20deg)";
  console.log(el.style.webkitTransform);
  document.getElementById("changeDeg").onclick = changeDeg; //event handler
}

function changeDeg() {
  var el = document.getElementsByTagName("div")[0];
  var re = /(rotateZ)(\(.*(?:deg\)))/g; //regex to match rotateZ(...deg)
  var newDeg = 40;
  if (el.style.webkitTransform.match(re).length != -1) {
    el.style.webkitTransform = el.style.webkitTransform.replace(re, '$1(' + newDeg + 'deg)'); // $1 is first capturing group which is "rotateZ"
  }
  console.log(el.style.webkitTransform);
}
div {
  background: red;
  margin-bottom: 20px;
}
<div class="display-object child0" style="-webkit-transform: translateX(43.5px) translateY(6px); width: 50px; height: 50px;"></div>
<button id="changeDeg">Change Rotation</button>

关于javascript - 将变换值添加到元素上已有的当前变换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30010523/

相关文章:

javascript - Firebase 服务器端过滤不适用于 indexOn

javascript - 如何使用 JavaScript 使 Twitter Bootstrap Collapse 在动态加载的 html 上工作

html - 如何使用 CSS 定位文本输入字段?

javascript - 如何定义 Django View

javascript - JavaScript 字符串中的脚本标记

c# - jQuery 页面中的多个用户控件

jquery - 如何使用 jQuery 脚本为我的网站创建幻灯片?

javascript - TypeError : xx2. removeClass 不是一个函数 Tiny gallery

css - 如何保持父 div 的高度与绝对定位的 img 里面?

javascript - 以 XSL HTML 格式打印的新页面