繁体   English   中英

在CSS转换中使用JavaScript变量

[英]Using a JavaScript variable in a CSS transform

刚开始使用JS,所以这可能是一个新手问题。 我试图弄清楚在JS中使用以下代码行时如何使用JS变量:

But3.style.webkitTransform = "translateX(JSVARIABLE)";

在我的JS文件中,当按钮悬停在上方时,我正在运行一个函数:

HTML

<html>
<div id= "But3" class="Button3"> </div>
</html>

当该按钮悬停(鼠标悬停)时,该函数在我的JS代码中运行:

JS

But3.onmouseover = function(){

  var h = document.getElementById("But3").clientHeight;
  var w = document.getElementById("But3").clientWidth;

  var nh = Math.floor(Math.random() * h);
  var nw = Math.floor(Math.random() * w);

   /* This may be completely wrong*/
  var x = String(nh);
  var y = String (nw)

  /* This may also be completely wrong*/
  var nhf = x + "px";
  var nwf = y + "px";

  /* This works but I need it to work with nhf */
  But3.style.webkitTransform = "translateX(10px)";

}

如何使它可以将值nhfnwf用作我的translateX转换的值?

请注意,由于将值转换为字符串以便包含“ px”,因此我可能不正确设置值的格式。

如果需要,这是我的CSS

.Button3{
height: 20%;
  width: 17%;
  left: 30%;
  top: 20%;
  border-radius: 20%;
  background: #8585ad;
  margin: auto;
  position: relative;
  cursor: pointer;
  transition: 2s;
}

您可以将变量连接为值:

 But3.style.webkitTransform = "translateX(" + nhf + ")";

正如jerrylow所说,将变量连接到字符串中。 这使多余的代码变得不必要了

 document.getElementById("But3").onmouseover = function(){ var h = document.getElementById("But3").clientHeight; var w = document.getElementById("But3").clientWidth; var nh = Math.floor(Math.random() * h); var nw = Math.floor(Math.random() * w); // translateX should probably use nw instead of nh But3.style.webkitTransform = "translateX(" + nh + "px)"; } 
 <input type="button" value="Hover me" id="But3"> 

您可以在模板文字中使用字符串插值来完成此操作: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

在您的情况下,它看起来像:

But3.style.webkitTransform = `translateX(${nhf})`;

模板文字是ES2015规范中引入的,并且受到大多数主流浏览器的支持

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM