如何启用拖动控件以滚动和扩展所选内容
How to enable dragging off the control to scroll and extend the selection
我正在使用HTML的Canvas创建一个自定义滚动控件,其行为有点像电子表格网格。我设置了大多数标准的光标控制行为,包括使用鼠标或箭头键来扩展选择。
我接下来要做的是允许用户通过单击并拖出画布来扩展选择。我不需要帮助与实际的代码,但我想知道是否有人编程这样的东西之前,如果是这样,他们是如何接近它?以下是我能想到的方法:
- 在控件上跟踪鼠标的大致方向,在mouseLeave+mouseDown上设置一个计时器来滚动该方向,直到mouseEnter+mouseDown
- 确定鼠标在mouseLeave+mouseDown之前的最后位置,并使用它来确定滚动方向
- 当鼠标处于边缘的几个像素内(边缘决定方向)时开始缓慢滚动,然后在mouseLeave+mouseDown上快速滚动
- 某种程度上涉及到窗口。鼠标移动(而不是canvas.mouseMove),并以这种方式跟踪它(这对我来说似乎真的很丑)
- 我遗漏的一些东西,回想起来会很明显
我可以处理代码,我只是想找出最好的概念性方法。理想情况下,我喜欢处理对角线扩展选择(同时向右和向下滚动,或者至少在两者之间交替,这样看起来就像那样),但这不是一个交易破坏
您可以使用.setCapture
让您的画布继续获取鼠标事件,即使鼠标移动到画布之外:
相关文章:
- 幻灯片滚动javascript不起作用
- Node.js v6.2.0类扩展不是函数错误
- 扩展移相器按钮类不工作
- chrome扩展中的navigator.geolocation.getCurrentPosition
- 将视口底部滚动到元素底部
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 使用扩展/收缩部分/栏开发网站,同时滚动导航
- Chrome扩展-如何在打开的选项卡上捕获滚动位置
- 修改FireFox扩展:如果(滚动条存在)var-30,否则var-14
- Css”;右“;负值而不扩展滚动区域
- 使用弹出控件扩展程序Asp.net在更新面板内维护滚动位置复选框列表
- 具有扩展组件的动态滚动区域
- Jquery扩展和滚动在同一时间
- 如何启用拖动控件以滚动和扩展所选内容
- 扩展和折叠基础6手风琴菜单上滚动与麦哲伦
- 如何扩展文本字段,以便通过使用javascript删除滚动
- 如何使用服务器端处理和滚动扩展刷新DataTable
- 扩展预览关闭移动滚动
- Chrome是否有扩展程序,使选项卡始终跳转到某个滚动点
- Chrome扩展滚动条放置