javascript - 如何跟踪鼠标移动的距离?
问题描述
嘿嘿,
我正在尝试在 vanilla JS 中创建一个可拖动的滑块。
为此,我正在尝试transform = 'translateX(' + (mouseMovement) + 'px)';
鼠标在carouselSlide.addEventListener('dragover', dragOver);
事件中移动的像素数量。
但是,我不知道如何存储鼠标第一次移动的值,+ 或 - 当前位置。到目前为止我试过了。
//Hover listeners
carouselSlide.addEventListener('dragstart', dragStart);
carouselSlide.addEventListener('dragend', dragEnd);
carouselSlide.addEventListener('dragover', dragOver);
function dragStart(){
var x = event.clientX;
dragOver(x);
}
function dragEnd(){
console.log('end');
}
var lastX = 0;
function dragOver(x){
var currentX = event.clientX - x;
var mouseMove = currentX - lastX;
//Slide Direction
if (currentX > lastX){
carouselSlide.style.transform = 'translateX(' + (mouseMove) + 'px)';
} else if (currentX < lastX) {
carouselSlide.style.transform = 'translateX(' + (mouseMove) + 'px)';
}
lastX = currentX;
}
然而,这并没有真正起作用。我确实在另一篇文章中找到了我的解决方案:计算按下鼠标按钮期间鼠标移动的距离
然而,这是 jQuery
解决方案
一种方法是绑定它,以便在启动事件时存储变量。然后我会绑定其他事件来监听位置的变化。最后,我会删除这些事件。
function dragStart(evt) {
const startX = evt.clientX;
const handleDrag = function(evt) {
document.querySelector("#out").textContent = evt.clientX - startX;
}
const dragEnd = function(evt) {
this.removeEventListener("drag", handleDrag);
this.removeEventListener("dragend", dragEnd);
}
this.addEventListener("drag", handleDrag);
this.addEventListener("dragend", dragEnd);
}
var elem = document.querySelector("#test");
elem.addEventListener('dragstart', dragStart);
#test {
width: 100%;
height: 300px;
background-color: #CCC;
}
#test div {
width: 100px;
height: 300px;
background: yellow;
}
<div id="test">
<div draggable="true">X</div>
</div>
<div id="out"></div>
推荐阅读
- f# - 澄清 F# 中的事件、观察者和邮箱处理器
- android - 发布到 google play 时管理应用版本
- symfony - Symfony 5 - 如何制作管理后端
- javascript - 是否有任何解决方案可以更改 AngularJS 中的样式值?
- android - [INSTALL_FAILED_OLDER_SDK]:需要开发平台 R 但这是一个发布平台
- c# - 从中获取文本
我正在创建一个将 ASP.NET WebForm 连接到 SQL Server 的项目。要将文本插入到 SQL Server 中的表中,我正在使用,
<asp:TextBox
但是当我单击按钮以在 TextBox 中获取文本时,该文本什么都不是。这是我的工作流程:我有 1 个页面是 Administrator.asp
- c# - 如何获取异常的上下文
- django - 'Post' 对象在 django Photo Blog App 中没有属性 'get_content_type'
- javascript - Codemirror - 在字符串中查找覆盖的字符位置
- php - 如何通过控制器将帖子数据从一个视图传递到另一个视图