首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

仅当拖动到项目上时才禁用指针事件

基础概念

指针事件(Pointer Events)是Web开发中用于处理鼠标、触摸屏等输入设备的一种事件模型。它统一了鼠标事件和触摸事件,使得开发者可以更方便地处理各种输入设备的交互。

相关优势

  1. 统一性:指针事件将鼠标事件和触摸事件统一起来,简化了事件处理的复杂性。
  2. 兼容性:指针事件在现代浏览器中得到了广泛支持,能够很好地兼容各种设备。
  3. 灵活性:通过指针事件,开发者可以更灵活地处理不同设备的输入,提升用户体验。

类型

常见的指针事件包括:

  • pointerdown:指针按下时触发。
  • pointermove:指针移动时触发。
  • pointerup:指针抬起时触发。
  • pointerover:指针移动到元素上时触发。
  • pointerout:指针移出元素时触发。

应用场景

指针事件常用于处理用户与页面元素的交互,例如:

  • 拖放操作
  • 点击按钮
  • 触摸滑动

问题描述及解决方案

问题描述

仅当拖动到项目上时才禁用指针事件。

原因

在某些情况下,我们希望用户在拖动到某个特定元素上时,无法与该元素进行交互,即禁用指针事件。

解决方案

可以通过监听pointeroverpointerout事件来实现这一功能。以下是一个示例代码:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Disable Pointer Events on Drag</title>
    <style>
        .item {
            width: 200px;
            height: 200px;
            background-color: lightblue;
            margin: 10px;
            display: inline-block;
        }
        .disabled {
            pointer-events: none;
            opacity: 0.5;
        }
    </style>
</head>
<body>
    <div class="item" id="item1">Item 1</div>
    <div class="item" id="item2">Item 2</div>

    <script>
        const item1 = document.getElementById('item1');
        const item2 = document.getElementById('item2');

        let isDraggingOver = false;

        item1.addEventListener('pointerover', () => {
            isDraggingOver = true;
            item1.classList.add('disabled');
        });

        item1.addEventListener('pointerout', () => {
            isDraggingOver = false;
            item1.classList.remove('disabled');
        });

        item2.addEventListener('pointerover', () => {
            if (isDraggingOver) {
                item2.classList.add('disabled');
            }
        });

        item2.addEventListener('pointerout', () => {
            item2.classList.remove('disabled');
        });
    </script>
</body>
</html>

解释

  1. HTML结构:创建两个div元素,分别表示两个项目。
  2. CSS样式:定义了项目的样式,并通过.disabled类来禁用指针事件并降低透明度。
  3. JavaScript逻辑
    • 监听item1pointeroverpointerout事件,当鼠标移动到item1上时,设置isDraggingOvertrue,并添加.disabled类;当鼠标移出item1时,设置isDraggingOverfalse,并移除.disabled类。
    • 监听item2pointeroverpointerout事件,当鼠标移动到item2上且isDraggingOvertrue时,添加.disabled类;当鼠标移出item2时,移除.disabled类。

通过这种方式,可以实现仅在拖动到某个项目上时禁用指针事件的效果。

参考链接

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

探究 css touch-action 属性

使用 Pointer_events 的应用程序将在浏览器开始处理触摸手势收到一个 pointercancel 事件。...手势开始,浏览器与触摸的元素及其所有祖先的触摸动作值相交直到一个实现手势(换句话说,第一个包含滚动元素)的触摸动作值。...值 auto 触控事件发生在元素,不进行任何操作。 none 触控事件发生在元素,不进行任何操作 pan-x 启用单指水平平移手势。...启用平移和缩小缩放手势,但禁用其他非标准手势,例如双击以进行缩放。 禁用双击可缩放功能可减少浏览器在用户点击屏幕延迟生成点击事件的需要。...示例 最常见的用法是禁用元素(及其不可滚动的后代)的所有手势,以使用自己提供的拖放和缩放行为(如地图或游戏表面) #map { touch-action: none; } 另一种常见的模式是使用指针事件处理水平平移的图像轮播

1.8K10

MacBook Pro最全快捷键指南——高效型选手必备

Mac 处于唤醒状态,按住这个按钮 1.5 秒钟会显示一个对话框,询问您是要睡眠、重新启动还是关机。...Fn–箭头 Page Up:向上滚动一页。 Fn–下箭头 Page Down:向下滚动一页。 Fn–左箭头 Home:滚动到文稿开头 Fn–右箭头 End:滚动到文稿末尾。...Command–调低亮度 Mac 连接到多个显示器打开或关闭显示器镜像功能。 右箭头 打开所选文件夹。这个快捷键仅在列表视图中有效。 左箭头 关闭所选文件夹。这个快捷键仅在列表视图中有效。...按住 Command 键移 将移的项目移到其他宗卷或位置。项目指针会随之变化。 按住 Option 键移 拷贝移的项目项目指针会随之变化。...按住 Option-Command 键移 为移的项目制作替身。项目指针会随之变化。 按住 Option 键点按开合三角 打开所选文件夹内的所有文件夹。这个快捷键仅在列表视图中有效。

6.3K40
  • mac全选文字的快捷键_MACBOOK最全快捷键指南

    Mac处于唤醒状态,按住这个按钮1.5秒钟会显示一个对话框,询问您是要睡眠、重新启动还是关机。如果您不想等待1.5秒钟,请按下 Contro-电源按钮或Contro_介质推出键。...Fn-左箭头Home:滚动到文稿开头 Fn-右箭头End:滚动到文稿末尾 Command-箭头将插入点移至文稿开头。...Command-调低亮度Mac连接到多个显示器打开或关闭显示器镜像功能。 右箭头打开所选文件夹。这个快捷键仅在列表视图中有效 左箭头关闭所选文件夹。...按住 Command键移将移的项目移到其他宗卷或位置。项目指针会随之变化。 按住 Option键移拷贝移的项目项目指针会随之变化。...按住 Option- Command键移为移的项目制作替身。项目指针会随之变化。 按住 Option键点按开合三角打开所选文件夹内的所有文 件夹。这个快捷键仅在列表视图中有效。

    2.3K10

    Mac下键盘使用

    Mac 处于唤醒状态,按住这个按钮 1.5 秒钟会显示一个对话框,询问您是要睡眠、重新启动还是关机。...Fn–箭头 向上翻页:向上滚动一页。 Fn–下箭头 向下翻页:向下滚动一页。 Fn–左箭头 开头:滚动到文稿开头。 Fn–右箭头 结尾:滚动到文稿末尾。...Command–调低亮度 Mac 连接到多个显示器打开或关闭显示器镜像功能。 右箭头 打开所选文件夹。这个快捷键仅在列表视图中有效。 左箭头 关闭所选文件夹。...移时按 Command 键 将移的项目移到其他宗卷或位置。项目指针会随之变化。 移时按住 Option 键 拷贝移的项目项目指针会随之变化。...移时按住 Option-Command 为移的项目制作替身。项目指针会随之变化。 Option-点按开合三角形 打开所选文件夹内的所有文件夹。这个快捷键仅在列表视图中有效。

    2.8K130

    Mac快捷键

    Mac 处于唤醒状态按住 1.5 秒钟会显示一个对话框,询问您是要重新启动、睡眠还是关机。按住 5 秒钟会强制 Mac 关机。Command–Control–电源按钮强制 Mac 重新启动。...Fn–箭头向上翻页:向上滚动一页。 Fn–下箭头向下翻页:向下滚动一页。Fn–左箭头开头:滚动到文稿开头。Fn–右箭头结尾:滚动到文稿末尾。Command–箭头将插入点移至文稿开头。...Command–调低亮度 Mac 连接到多个显示器打开或关闭显示器镜像功能。右箭头打开所选文件夹。此快捷键仅在列表视图中有效。左箭头关闭所选文件夹。此快捷键仅在列表视图中有效。...移时按 Command 键将移的项目移到其他宗卷或位置。项目指针会随之变化。移时按 Option 键拷贝移的项目项目指针会随之变化。...移时按 Command-Option为移的项目制作替身。项目指针会随之变化。Option-点按伸缩三角形打开所选文件夹内的所有文件夹。此快捷键仅在列表视图中有效。

    1.7K20

    Visual Studio 调试系列4 单步后退来检查旧应用状态(使用使用 IntelliTrace 窗口)

    启用事件和快照,也默认启用异常发生拍摄快照。 可以取消选中“在异常事件发生收集快照”来禁用异常发生拍摄快照 。 启用此功能后,可拍摄未处理异常的快照。...“IntelliTrace”选项页的所有设置都针对 Visual Studio 这个整体,而不针对单个项目或解决方案。...IntelliTrace 在每个调试器步骤、断点事件和未处理异常事件发生拍摄应用程序进程的快照。 这些事件和其他 IntelliTrace 事件一起记录在“诊断工具”窗口中的“事件”选项卡 。...Visual Studio 还将指针动到源窗口中的相应代码行。 在此视图中,可以检查“调用堆栈”、“局部变量”、“自动”以及“监视”窗口中的值 。...03 IntelliTrace 后退功能与 IntelliTrace 事件模式有何不同 事件模式下的 IntelliTrace 允许在调试器步骤发生和断点处激活历史调试。

    3K40

    移动端点击事件延迟的诞生消亡史

    这项技术的另一个关键在于,它消除了双击缩放的功能,用户依然可以使用双指缩放功能。因此,不存在与禁用缩放相关的可用性和可访问性问题。...指针事件 指针事件是 Microsoft 提出的一系列针对 Web 的新事件,现已成为 W3C 规范。指针事件规范是尝试使用单个事件模型统一我们对所有输入类型(鼠标,触摸,手写笔等)的处理。...event​Target​.dispatch​Event 触发对应目标元素绑定的 click 事件。...现代浏览器 得益于现代浏览器对 W3C 规范 touch-action: manipulation 的支持性,真正彻底解决了点击事件延迟的问题。...启用平移和双指缩放手势,但禁用其他非标准手势,例如双击缩放。 禁用双击缩放功能可减少浏览器在用户点击屏幕延迟生成点击事件的需要。

    2.9K20

    答案:Excel VBA编程问答33题,继续……

    4.KeyDown事件过程中的代码如何取消按键? 通过将KeyCode参数设置为0。 5.在用户窗体对齐控件的最快方法是什么? 通过使用“格式”菜单的“对齐”命令。...9.通过将Application.EnableEvents属性设置为False不会禁用哪些事件? 用户窗体事件。 10.当用户在任何工作表中进行修改操作,将触发哪个事件?...断点导致程序执行在指定的代码行暂停。 20.调试命令“逐过程”和“逐语句”之间有什么区别? “逐过程”执行过程中的所有代码,并在执行退出过程暂停。...21.程序在断点处暂停,确定程序变量当前值的最快方法是什么? 将鼠标指针悬停在变量名称。 22.是非题:监视窗口中的值在程序运行时会不断更新。 错误。监视值仅在程序进入中断模式更新。...应从类内部而不是类外部的代码调用的方法。 33.在销毁对象之前触发了什么事件? Terminate事件。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

    4.2K20

    QThread类

    子类化QThread,请记住构造函数在旧线程中执行,而run()在新线程中执行。如果从两个函数访问一个成员变量,则从两个不同的线程访问该变量。需要检查这样做是否安全。...---- int QThread::loopLevel() const   返回线程的当前事件循环级别。   注意:这只能在线程本身内调用,即它是当前线程。       ...只有当没有为该线程安装事件调度器可以执行此操作。 也就是说,在使用start()启动线程之前,或者在主线程的情况下,在实例化QCoreApplication之前。 此方法获取对象的所有权。   ...线程终止,所有等待线程都将被唤醒。 警告:此功能很危险,不鼓励使用。线程可以在其代码路径中的任何位置终止。修改数据可以终止线程。会导致线程无法自行清理,解锁任何保持的互斥锁等。...简而言之,只有在绝对必要的情况下使用此功能。   可以通过调用QThread::setTerminationEnabled()显式启用或禁用terminate()的生效。

    2.6K20

    阻止mouseover冒泡行为_onmousedown是什么意思

    一. onmouseenter、onmouseover onmouseenter 事件在鼠标指针进入到绑定事件的那个元素触发。...该事件通常与 onmouseleave(在鼠标指针离开绑定事件的那个元素触发) 事件一同使用。 onmouseenter 事件类似于 onmouseover 事件。... onmousemove 事件在鼠标移动到 div 元素就开始触发,在这个div移动一直触发(冒泡)。... onmouseover 事件在鼠标指针进入 div 元素触发,在子元素也会触发(p 和 span)(冒泡)。...事件中有在鼠标指针进入 div 元素触发,鼠标进入p、span元素内不会触发,因为不支持事件冒泡; 3. onmouseover 事件在鼠标指针进入 div 元素触发,在子元素也会触发(p 和

    1.6K20

    QThread类

    子类化QThread,请记住构造函数在旧线程中执行,而run()在新线程中执行。如果从两个函数访问一个成员变量,则从两个不同的线程访问该变量。需要检查这样做是否安全。...---- int QThread::loopLevel() const   返回线程的当前事件循环级别。 注意:这只能在线程本身内调用,即它是当前线程。   该函数从Qt 5.5引入。...只有当没有为该线程安装事件调度器可以执行此操作。 也就是说,在使用start()启动线程之前,或者在主线程的情况下,在实例化QCoreApplication之前。 此方法获取对象的所有权。   ...线程终止,所有等待线程都将被唤醒。 警告:此功能很危险,不鼓励使用。线程可以在其代码路径中的任何位置终止。修改数据可以终止线程。会导致线程无法自行清理,解锁任何保持的互斥锁等。...简而言之,只有在绝对必要的情况下使用此功能。   可以通过调用QThread::setTerminationEnabled()显式启用或禁用terminate()的生效。

    1.3K20

    1-html标签介绍

    window窗口事件 onload在页面加载结束之后触发 onunload在用户从页面离开发生 form表单事件 onblur元素失去焦点触发 onchange在元素的元素值被改变触发 onfocus...元素获得焦点触发 onreset表单中的重置按钮被点击触发 onselect在元素中文本被选中后触发 onsubmit在提交表单触发 keyboard键盘事件 onkeydown在用户按下按键触发...该属性不会对所有按键生效,不生效的有,alt,ctrl,shift,esc onkeyup当用户释放按键触发 mouse鼠标事件 onclick元素发生鼠标点击触发 onblclick元素发生鼠标双击触发...onmousedown元素按下鼠标按钮触发 onmousemove当鼠标指针动到元素触发 onmouseout当鼠标指针移出元素触发 onmouseover当鼠标指针动到元素触发...onmouseup当在元素释放鼠标按钮触发 media媒体事件 onabort退出触发 onwaiting媒体已停止播放但打算继续播放触发。

    92710

    HTML标签介绍「程序员培养之路第一天」

    onunload:在用户从页面离开发生,例如点击跳转,页面重载,关闭浏览器窗口等。 2、Form表单事件     onblur:元素失去焦点触发。    ...onchange:在元素的元素值被改变触发。     onfocus:元素获得焦点触发。     onreset:表单中的重置按钮被点击触发。    ...4、Mouse鼠标事件     onclick:当在元素发生鼠标点击触发。     onblclick:当在元素发生鼠标双击触发。    ...onmousedown:当在元素按下鼠标按钮触发。     onmousemove:当鼠标指针动到元素触发。     onmouseout:当鼠标指针移出元素触发。    ...onmouseover:当鼠标指针动到元素触发。     onmouseup:当在元素释放鼠标按钮触发。 5、Media媒体事件     onabort:退出触发。

    88810

    (长文预警) 你还在烦工作中碰到的拖拽问题?一个框架jiejue

    delayOnTouchOnly 选项 是否仅在用户使用触摸(例如,在移动设备应用延迟。在任何其他情况下,都不会延迟。...如果项目也可以单击,例如在链接列表中,则很有用。 当用户在可排序元素内单击,在按下和松开之间,您的手通常会略微移动。您将指针移过一定的公差开始拖动,这样您就不会在每次单击意外开始拖动。...默认情况下为false,但是Sortable仅在将元素插入父Sortable或可以插入父Sortable停止冒泡事件,但不在特定时间(由于动画等) 。...您具有带有专用滚动功能的自定义滚动条很有用。'...交换插件 该插件修改了Sortable的行为,以允许项目彼此交换而不是进行排序。一旦开始拖动,用户就可以将其拖动到其他项目,并且元素不会发生任何变化。但是,用户放置的项目将与原始拖动的项目交换 ?

    7.1K10

    【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

    设置按钮及添加事件 ( 1 ) 添加按钮事件 ( Control + 左键 拖动到 代码中 生成按钮方法 ) ( 2 ) 修改按钮文字 ( ① 双击控件 | ② 修改 Tittle 属性 ) 3....设置按钮及添加事件 ( 1 ) 添加按钮事件 ( Control + 左键 拖动到 代码中 生成按钮方法 ) 添加按钮事件 : 1.添加按钮 : 向 Main.storyboard 中拖入按钮控件 ;...索引自减 , 小于等于 1 , 索引值 仍为 1 ; 点击向右切换 , 索引 自增 , 大于等于 5 , 索引值 仍为 5 ; // 设置图片索引 , 注意不能 小于 1 ,...加载 ) 懒加载优化 : 1.懒加载原则 : ① 用到 某 属性的时候去 加载 ; ② 没有值 进行初始化 ; 2.点语法说明 : 以 @property (strong, nonatomic...初始化 原则 , 只有当属性为 空 , 执行初始化操作 ; 4.代码 : //懒加载优化 , 原则 1 : 只有使用 pics 属性 开始优化 , 因此 代码 放在 get 方法中 - (NSArray

    3.9K40

    JQuery之内置函数响应事件

    2.keypress  键盘或按钮被按下,发生 keypress 事件。keypress 事件与 keydown 事件类似。按钮被按下,会发生该事件。它发生在当前获得焦点的元素。...3.keyup  按钮被松开,发生 keyup 事件。它发生在当前获得焦点的元素。注释:如果在文档元素上进行设置,则无论元素是否获得焦点,该事件都会发生。...二:鼠标事件: 1.mousedown  当鼠标指针动到元素上方,并按下鼠标按键,会发生 mousedown 事件。...mousedown 与 click 事件不同,mousedown 事件需要按键被按下,而不需要松开即可发生。 2.mouseenter  当鼠标指针穿过元素,会发生 mouseenter 事件。...只有在鼠标指针穿过被选元素,才会触发 mouseenter 事件。请看下面例子的演示。 7.mouseup  当在元素放松鼠标按钮,会发生 mouseup 事件

    2.1K60

    最新iOS设计规范六|10大交互规范(User Interaction)

    只有在必要需要必填字段值。只有系统运行真正必需的信息需要使用必填字段。 通过字段值列表实现轻松导航。尤其是在列表和选择器中,必需能很简单地选择一个值。...在iOS 13及更高版本中提供两个生成自定义触觉模式的基本构建: 瞬态事件:短暂、紧凑的体验,感觉像点击或脉冲,例如:在主屏幕轻点手电筒按钮的体验 连续事件:感觉像是持续的振动,比如信息中的激光效果。...如果适用,提取被放置内容的相关部分。 内容被放置后,在表视图和集合视图中显示占位符。 被放置的内容需要时间传输显示进度。 被放置的内容会启动一个进程,要提供反馈。 被放置失败通知用户。...当用户无法立即撤消拖放操作,请考虑提供一种微妙和直观的退出方式。 十三、指针(Pointers) iPadOS 13.4引入了动态指针效果和行为,可增强在iPad使用定点设备的体验。...人们使用定点设备,iPad OS会自动使指针适应当前环境,从而提供丰富的视觉反馈,并提供提高生产率和简化常见任务所需的正确精度。

    4.2K30

    Unity-Optimizing Unity UI(UGUI优化)03 Fill-rate,Canvas and Input

    但是这种操作将增大项目图集的大小。 一个实例情况:在我们创建一个商店的UI的时候,一个物品可能有比边框、背景和一些小图片来定义价格,名称和一些其他信息。...Splitting Canvases(分割Canvas) 在一些不重要的情况下,将Canvas进行分割是一个不错的主意,将Canvas的元素移动到子Canvas。...Unity UI中的Input和raycasting 默认情况下,Unity UI使用Graphic Raycaster组件处理输入事件,像点击事件指针悬停事件。这通常是独立的输入管理组件进行处理。...对于具有必须响应指针事件的多个可绘制UI对象的复合UI控件,例如希望其背景和文本都改变颜色的按钮,通常最好将单个Raycast目标放在复合UI的根部 控制。...该单个Raycast目标接收到指针事件,它可以将事件转发到复合控件内的每个感兴趣的组件。

    2.5K30

    UIControl-IOS开发

    禁用控件,能够将enabled属性设置为NO,这将导致控件忽略不论什么触摸事件。被禁用后,控件还能够用不同的方式显示自己,比方变成灰色不可用。...UIControlEventTouchDragEnter 一次触摸从控件窗体之外拖动到内部。...UIControlEventTouchDragExit 一次触摸从控件窗体内部拖动到外部。 UIControlEventTouchUpInside 全部在控件之内触摸抬起事件。...你能够配置滑块控件何时发送通知,在滑块被放下发送,或者在被拖动发送。 UIControlEventEditingDidBegin 文本控件中開始编辑发送通知。...例: [ self sendActionsForControlEvents:UIControlEventValueChanged ]; 托付类得到事件通知,他将收到一个指向事件发送者的指针

    58720

    Qt Designer中的QWidget属性表介绍

    界面响应事件控制属性是指针对组件对键盘、鼠标事件以及平板触控笔的事件响应的控制 ①windowModality windowModality属性只对窗口对象有效,保存的是哪些类型的窗口被模式窗口阻塞。...如果部件需要知道它何时被启用或禁用,则可以使用changeEvent()方法来捕获事件事件类型设置为QEvent.EnabledChange ---- 禁用一个部件,会隐式的禁用其所有子部件; 启用部件...父部件保持禁用状态,不可能显式启用不是窗口的子部件。...没有启用平板跟踪的情况下,部件接收触控笔与平板接触或至少一个触控笔按键按下的触控笔移动事件。...警告:在使用Qt Style Sheets请小心使用此属性。部件具有具有有效背景或边框图像的样式表,此属性将自动禁用。 默认情况下,此属性为False。

    11K20
    领券