javascript - JS - DOM 和内部函数
问题描述
所以我有一个代码,它试图制作动画,但自从我第一次尝试以来我一直面临失败。请帮助我,这段代码有什么问题?
function move(obj, x, y) {
la = 20;
while (la <= x) {
obj.style.marginLeft += "20px";
la = la + 20;
}
}
move(document.getElementById("div"), 200, 200)
<div id="div" style="border:1px solid black; width:100px; height: 100px;"></div>
解决方案
您的 while 循环将阻止浏览器的 UI,您所看到的只是跳转。使其异步调用有一些延迟。
或者更好的方法:使用 CSS 动画并切换类:
function move() {
var element = document.getElementById("div");
element.classList.toggle("moved");
}
#div {
border:1px solid black;
width:100px;
height: 100px;
margin: 0;
transition: margin 300ms ease-in-out;
background: transparent;
}
#div.moved {
margin-left: 200px;
}
<div id="div" onClick="move()"></div>
推荐阅读
- javascript - 尝试在 Angular 7 中创建对 API 和技术的请求
- swift - 使用 AVMutableAudioMixInputParameters setVolumeRamp 添加许多斜坡很慢
- json - avro - 设置“记录”类型的字段
- android - 有没有办法在 termux 脚本中调用共享菜单
- python - 将每个唯一的 DataFrame 列值转换为字典键,并使用 DataFrame 中与值对应的数据填充字典
- sql-server - 远程列出 SQL Server 上的架构和表
- swift - 无法在真实设备上获取文件内容(swift 文件库应用程序)
- javascript - 如何相互连接 2 个 node.js 应用程序?(客户端应用程序之一 - 服务器应用程序之一)+ socket.io
- windows - 是什么迫使应用程序在 Windows Server 2016 上使用不同的端口?
- node.js - 无法访问 put 路由中的表单数据