javascript - 用JS修改CSS位置

标签 javascript css

我正在使用 document.getElementById("").style.top = var;每次单击对象时随机更改对象的位置,但我只能按像素而不是百分比随机更改位置。我如何用 % 随机生成一个数字?

document.getElementById("randObject").onclick = function () {

    var bColor = "#"+((1<<24)*Math.random()|0).toString(16);
    var yAxis = Math.random()*100;
    var xAxis = Math.random()*100;      

        document.getElementById("randObject").style.backgroundColor = bColor;
        document.getElementById("randObject").style.top = yAxis;
        document.getElementById("randObject").style.left = xAxis;
}

最佳答案

document.getElementById("randObject").style.top = yAxis + "%";
document.getElementById("randObject").style.left = xAxis + "%";

我应该指出,您的颜色生成器也有 1/16 的时间无效。您需要对字符串进行左零填充:

"#" + ("00000" + ((1<<24) * Math.random() | 0).toString(16)).slice(-6);

另一个可以用来节省 DOM 查找时间的快捷方式是在点击事件中使用 this 关键字。总而言之,它看起来像:

最后,您可能会考虑使用 .addEventListener('click', function() { ... }) 因为这是当前的标准,尽管如果您真的这样做的话,您正在做的事情就没问题想支持IE6。

让我们看看这个演示,因为它现在看起来是一个非常简洁的脚本:

document.getElementById("randObject").addEventListener('click', function() {
  var bColor = "#" + ("00000" + ((1<<24) * Math.random() | 0).toString(16)).slice(-6);
  var yAxis = Math.random() * 100;
  var xAxis = Math.random() * 100;

  this.style.backgroundColor = bColor;
  this.style.top = yAxis + "%";
  this.style.left = xAxis + "%";
});
:root {
  /* change this value to update the size of playing field and #randObject */
  --size: 50px;
}

html {
  position: absolute;
  margin: 0 var(--size) var(--size) 0;
  padding: 0;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
}

body {
  margin: 0;
  padding: 0;
}

#randObject {
  position: absolute;
  top: 0;
  left: 0;
  width: var(--size);
  height: var(--size);
  background-color: #000000;
  border-radius: 50%;
  cursor: pointer;
  transition-property: top, left, background-color;
  transition-duration: 0.4s;
}
<div id="randObject"></div>

关于javascript - 用JS修改CSS位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38506849/

相关文章:

javascript - 如何在 firefox 中注入(inject) javascript 代码?

css固定div区域

javascript - 通过 D3.js 表示科学数据的示例

javascript - 仅当单击同一行中包含数据库对象的另一个 <div> 时显示包含数据库对象的 <div> - Django

javascript - 使用 js 渲染 html 是一种不好的做法吗?

html - 奇怪的 CSS 选择器 - Chrome

html - 如何让选取框位于我的 Logo 后面?

html - 将鼠标悬停在省略跨度上时防止文本重叠

javascript - 如何在 react-leaflet 中动态更改 Circle 组件的颜色 Prop ?

javascript - 为什么我的自定义 jQuery html 标记添加了不存在的断点?