【问题标题】:Modify CSS properties with JavaScript without remplacing the older ones使用 JavaScript 修改 CSS 属性而不替换旧的
【发布时间】:2021-05-12 21:28:53
【问题描述】:

我正在尝试创建一个根据鼠标坐标移动的 HTML 元素。我正在使用“mousemove”事件并移动我的元素,我使用了 offsetX/Y 事件的属性。

例如,如果我只应用水平移动(所以我只使用 offsetX),它会起作用。但是当我应用垂直移动时,它不再起作用了。我使用'transform' CSS 属性,我知道问题出在哪里,但我不知道如何解决它。这是因为我应用了一个新属性来垂直移动,然后我删除了让元素水平移动的旧属性。

那么您知道如何将多个 CSS 属性(相同)添加到一个元素吗? 我试图将它们与“+”一起添加或在同一个``中,但它不起作用。

我希望我已经清楚了,对不起我的英语:)

提前感谢您的帮助:)

我的代码:

let box = document.querySelector('.box');
let x = document.querySelector('#x');
let y = document.querySelector('#y');
let area = document.querySelector('.area');

area.addEventListener('mousemove', (e) => {
  x.innerHTML = e.offsetX;
  y.innerHTML = e.offsetY;
  box.style.transform = `translateX(${e.offsetX}px)`;
  box.style.transform = `translateY(${e.offsetY}px)`;
});
.area {
  width: 1000px;
  height: 400px;
  margin: auto;
  border: 3px dashed red;
}

.box {
  width: 100px;
  height: 100px;
  border: 3px solid black;
}
<div class="area">
  <div class="box"></div>
  <p>X : <span id="x"></span></p>
  <p>Y : <span id="y"></span></p>
</div>

【问题讨论】:

  • 您可以将translate() 与水平和垂直参数一起使用,而不是单独的translateX/translateY 调用。

标签: javascript css properties transform mousemove


【解决方案1】:

transform 属性的值是一个转换列表。所以将transformXtransformY 设置在同一个作业中。

let box = document.querySelector('.box');
let x = document.querySelector('#x');
let y = document.querySelector('#y');
let area = document.querySelector('.area');

area.addEventListener('mousemove', (e) => {
  x.innerHTML = e.offsetX;
  y.innerHTML = e.offsetY;
  box.style.transform = `translateX(${e.offsetX}px) translateY(${e.offsetY}px)`;
});
.area {
  width: 1000px;
  height: 400px;
  margin: auto;
  border: 3px dashed red;
}

.box {
  width: 100px;
  height: 100px;
  border: 3px solid black;
}
<div class="area">
  <div class="box"></div>
  <p>X : <span id="x"></span></p>
  <p>Y : <span id="y"></span></p>
</div>

【讨论】:

  • 非常感谢,非常有帮助!
【解决方案2】:

它不起作用,因为您覆盖了 translateX 样式。

box.style.transform = `translate(${e.offsetX}px, ${e.offsetY}px)`;

解决你的问题。

【讨论】:

  • 他们知道为什么它不起作用,问题是 但后来我删除了旧属性
  • 代码正确。您的文字只是重申了他们在问题中已经写的内容,好像他们不知道为什么它不起作用。
  • ................................................ ..................................................... ................................................
  • 非常感谢,非常有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 2014-07-19
  • 1970-01-01
相关资源
最近更新 更多