【发布时间】:2019-01-22 18:49:32
【问题描述】:
我正在使用一个小脚本来跟踪带有div 元素的光标。
该脚本使元素严格跟随光标。
我想要做的是在“跟随”光标的过程中添加某种持续时间。我尝试了 CSS 过渡,但动画总是以失败告终。有人可以帮我解决这个问题吗?
假设鼠标在某个地方,然后它的位置改变了大约 100 像素。我想指定持续时间,就像我使用 CSS 一样......但问题是我不能使用任何转换,而只能使用一些 javascript 魔法......
document.body.addEventListener("mousemove", function(e) {
var curX = e.clientX;
var curY = e.clientY;
document.querySelector('mouse').style.left = curX - 10 + 'px';
document.querySelector('mouse').style.top = curY - 10 + 'px';
});
body {
background: #333;
height: 500px;
width: 500px;
}
mouse {
display: block;
position: fixed;
height: 20px;
width: 20px;
background: #fff;
border-radius: 50%;
}
<body>
<mouse></mouse>
</body>
[编辑]:我不想使用window.setTimeout。
[edit 2]:我想使用transition: 0.1s;,但正如我所说,当用户移动鼠标过快时它会破坏效果。
【问题讨论】:
-
您好,这看起来像您想要做的吗? codepen.io/matthewpageuk/pen/ZwYEKp球跟随鼠标?
-
没错!但我想知道......您的代码仅在鼠标移动时执行......当鼠标停止移动......然后我有一个问题......无论如何,谢谢!
-
所以如果鼠标没有触发事件,并且你不想要 CSS 过渡也不想要
setTimeout,那么你如何想象做动画呢? -
那么动画就必须一直运行,但这不是一个好主意...
-
你看过 window.requestAnimationFrame() 吗,它有点用于这种类型的事情。你基本上想做你在 mousemove 块中所做的事情,但每秒 30 或 60 次。
标签: javascript html css transition