javascript - 如何使用跨度标签附加速度控制Javascript onmousemove,因此每个附加跨度标签都没有空间
问题描述
我正在尝试 onmousemove 事件 js,但我没有解决一些问题,需要明确解决方案。
我已经制作了 onmousemove 事件,但我需要控制这个速度它的速度有多远。我需要每个跨度附加标签应该像普通绘图一样相互粘住,跨度附加标签之间不需要任何空格。请参阅下面的代码段以获得我想要的清晰想法。
document.onmousemove = doMove;
function doMove(e){
let body = document.querySelector('body');
let span = document.createElement('span');
let x = e.clientX;
let y = e.clientY;
body.appendChild(span);
span.style.left = x + 'px';
span.style.top = y + 'px';
}
span{
width: 15px;
height: 15px;
position: absolute;
background: red;
transition: .1s;
}
解决方案
正如这个答案所指出的,您无法控制 mousemove 事件的频率——这取决于您所使用的浏览器和设备。
我建议使用画布。可以在此处找到一种解决方案:https ://codepen.io/zsolt555/pen/rpPXOB 。
// ...
const stopDrawing = () => { isMouseDown = false; }
const startDrawing = event => {
isMouseDown = true;
[x, y] = [event.offsetX, event.offsetY];
}
const drawLine = event => {
if ( isMouseDown ) {
const newX = event.offsetX;
const newY = event.offsetY;
context.beginPath();
context.moveTo( x, y );
context.lineTo( newX, newY );
context.stroke();
//[x, y] = [newX, newY];
x = newX;
y = newY;
}
}
paintCanvas.addEventListener( 'mousedown', startDrawing );
paintCanvas.addEventListener( 'mousemove', drawLine );
paintCanvas.addEventListener( 'mouseup', stopDrawing );
paintCanvas.addEventListener( 'mouseout', stopDrawing );
推荐阅读
- vespa - 按“vespa.ai”中的日期属性对结果集进行排序
- c++ - 如何实现 WTSRegisterSessionNotification 功能
- jquery - 有没有办法在浏览器中使用 require 函数而不使用 Browserify、RequireJs 或类似的包
- python - 是否可以检查列表中的项目是否存在于变量中?
- android - AsyncTask 未在 oncreate 中执行
- visual-studio - TFS 脱机,联机显示许多文件的方式已更改
- scala - Spark-Scala 代码在 Spark-Shell 中运行完成,但通过 Spark-Submit 无限运行
- regex - 同一个 perl 命名正则表达式提取的多个名称
- ruby - 涉及多项检查时如何使用 Capybara Matchers?
- go-swagger - OperationhandlerFunc 第二个参数变为 interface{} 而不是 *models.Model