我有一个HTML,我正在try 随机化每一层的上边距属性.

function randomize() {
  let r;
  let list = document.querySelectorAll("span");
  for (let i = 0; i < list.length; i++) {
    r = Math.floor(Math.random() * 50);
    list.forEach((list) => {
      style.top = `${r} + px`;
    });
  }
}
span {
  position: absolute;
  height: 20px;
  width: 20px;
  border-radius: 100%;
  z-index: -2;
}
<div class="parallax">
  <span class="layer" data-speed="-5">10110</span>
  <span class="layer" data-speed="-5">0</span>
</div>

我做错了什么?我找不到合适的解决办法.

推荐答案

有几件事:

  1. 要使用top CSS属性,元素需要定义一个位置.您可以在CSS(position: relative)中进行设置,也可以在JS中进行设置.(105 OP added CSS that they had already which set the 102. Leaving this here for people that use 100 without setting an element's 102)
  2. 您需要将随机化移动到forEach,否则它将对所有span个元素具有相同的值
  3. 您需要将styleprops 连接到您在forEach中通过的元素,例如list.style.styleProp

function randomize() {
  let r;
  let list = document.querySelectorAll("span");
  for (let i = 0; i < list.length; i++) {
    list.forEach((list) => {
      r = Math.floor(Math.random() * 50);
      list.style.top = r + 'px';
    });
  }
}

randomize();
span {
  position: absolute;
  height: 20px;
  width: 20px;
  border-radius: 100%;
  z-index: -2;
}
<div class="parallax">
  <span class="layer" data-speed="-5">10110</span>
  <span class="layer" data-speed="-5">0</span>
</div>

Javascript相关问答推荐

为什么我达到了时间限制!?LeetCode链接列表循环(已解决,但需要解释!)

确定MutationRecord中removedNodes的索引

仅圆角的甜甜圈图表

TypeScript索引签名模板限制

Next.js(react)使用moment或不使用日期和时间格式

无法使用单击按钮时的useState将数据从一个页面传递到另一个页面

查询参数未在我的Next.js应用路由接口中定义

如何在Svelte中从一个codec函数中调用error()?

如何 for each 输入动态设置输入变更值

如何根据输入数量正确显示alert ?

用另一个带有类名的div包装元素

不协调嵌入图片

本地损坏的Java脚本

rxjs在每次迭代后更新数组的可观察值

JQuery使用选项填充HTMLSELECT并设置默认结果,默认结果显示为空

如何在Firebase中读取对象的特定字段?

我如何才能让p5.js在不使用实例模式的情况下工作?

调试jQuery代码以获取所有行的总和(票证类型)

如何在不获取其子元素的文本内容的情况下获取元素的文本内容?

为什么我的Reaction组件不能使用createBrowserRouter呈现?