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

JS拖放:使带有特定类名的div不可拖放

JS拖放(Drag and Drop)是一种在前端开发中常用的技术,用于实现拖拽和放置操作。它可以使用户通过鼠标或触摸屏将元素拖拽到指定位置,并在放置时触发相应的事件处理。

在实现JS拖放功能时,可以通过设置HTML元素的draggable属性为true来使元素可拖拽。同时,可以通过添加相应的事件监听器来处理拖拽和放置的各个阶段,包括拖拽开始(dragstart)、拖拽过程(drag)、拖拽结束(dragend)、进入可放置区域(dragenter)、在可放置区域内移动(dragover)、离开可放置区域(dragleave)以及放置(drop)等。

对于要使带有特定类名的div不可拖放,可以在dragover事件中取消默认的放置行为。具体的实现代码如下:

HTML:

代码语言:txt
复制
<div class="drag-item" draggable="true">可拖拽的元素</div>
<div class="no-drag-item">不可拖拽的元素</div>

JS:

代码语言:txt
复制
const dragItems = document.querySelectorAll('.drag-item');

dragItems.forEach(item => {
  item.addEventListener('dragstart', e => {
    e.dataTransfer.setData('text/plain', e.target.id);
  });
});

document.addEventListener('dragover', e => {
  const draggedItem = document.getElementById(e.dataTransfer.getData('text/plain'));
  if (draggedItem.classList.contains('no-drag-item')) {
    e.preventDefault();
  }
});

在这段代码中,通过querySelectorAll选择所有带有.drag-item类名的元素,并给它们添加dragstart事件监听器,使其可拖拽。然后,在dragover事件中判断被拖拽的元素是否具有.no-drag-item类名,如果是,则通过调用preventDefault()方法取消默认的放置行为,从而实现不可拖放的效果。

JS拖放在实际应用中有很多场景,比如可以用于实现网页中的拖拽排序、拖拽上传文件、拖拽创建任务、拖拽修改布局等。如果在腾讯云的云计算环境中使用JS拖放,可以结合腾讯云的服务器less服务云函数SCF(Serverless Cloud Function)来实现拖拽上传文件到云存储COS(Cloud Object Storage)或者实现其他自定义的拖拽功能。

参考链接:

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

相关·内容

dragula插件web端和移动端的拖拽排序

Dragula简介 Dragula是一款支持移动触摸屏设备的纯js元素拖放插件。这个元素拖放插件使用简单,浏览器兼容性好,能够实现通过鼠标或在移动设备中通过手指来拖动DOM元素的位置。...class='shuffle-item'>test 3div> div class='shuffle-item'>test 4div> div> dragula.js 和 dragula.css...下载地址: dragula.js下载 dragula.css下载 dragula的特点有: 设置非常简单 没有外部依赖 可以自动对数据进行排序 被移动项带有半透明的视觉效果 支持移动触摸设备 兼容性好,...npm install dragula –save bower install dragula.js –save 使用方法 该元素拖动插件提供了一个最简单的API来让你可以在页面中拖放元素。...事件 8. drake.end( ):使用最后位置的预览阴影标记最为拖放的目的地拖放元素。相应的cancel或drop事件将被触发。

2.4K10
  • 【JS】1724- 重学 JavaScript API - Drag and Drop API

    这个 API 提供了一系列的事件和方法,使我们能够轻松地处理拖放操作。 1.2 作用和使用场景 拖放 API 作用在于使网页具备拖放功能,为用户提供更直观、灵活的交互体验。...下面是一个简单的示例代码,演示了如何使用拖放 API 实现项目任务管理应用中的拖放功能: div id="task-list"> div class="task" draggable="true...提供了丰富的事件和方法,使开发者可以自定义拖放行为。 缺点: 在某些较旧的浏览器中可能存在兼容性问题。 拖放操作可能受到设备的限制,如移动设备上的触摸操作。...Vue.Draggable[10]: 18.9k⭐, Vue.js 的拖放组件,提供了易用的拖放功能。...# 11 个需要避免的 React 错误用法 # 6 个 Vue3 开发必备的 VSCode 插件 # 3 款非常实用的 Node.js 版本管理工具 # 6 个你必须明白 Vue3 的 ref 和 reactive

    29820

    HTML5 拖放API与Vue.js实战

    拖放 API 将可拖动元素添加到 HTML,使我们可以构建包含可以拖动的具有丰富 UI 元素的 Web 应用。 在本文中我们将用 Vue.js 构建一个简单的看板应用。...卡片是要执行的单个项目或任务,列用来显示特定卡片的状态。 所以需要创建三个 Vue 组件:一个用于列,一个用于卡片,最后一个用于创建新卡片。 创建 card 组件 先来创建 card 组件。...对于图像,要传输的数据是图像 URL 或它的 base 64 表示形式。如果是链接,传输的数据是 URL。可以将链接移动到浏览器的 URL 栏中,这样使浏览器跳转到该 URL。...与需要显式的使元素可拖动一样,它也需要启用放置。 要启用元素拖放功能需要侦听 dragover 事件并阻止默认的浏览器操作。 <!...总结 在本文中,我们介绍了什么是 HTML 5 拖放 API ,如何使用,以及如何在 Vue.js 中实现。 拖放功能也可以在其他前端框架和原生 JavaScript 中使用。

    4.3K10

    【HTML5】逐步分析如何实现拖放功能

    那么,就让我们来看看如何实现的吧 二、拖放事件 在IE4的时候,Js就可以实现拖放功能了,当时只支持拖放图像和一些文本。...(2)目标元素的事件 在实现拖放功能的过程中,目标元素上的事件有如下三个 事件 含义 dragenter 被拖放元素进入目标元素时触发 dragover 被拖放元素在目标元素内时触发(频繁触发) dragleave...,除非拖放事件结束或者被拖放元素离开目标元素 dragleave事件 的其触发条件正好与 dragenter 事件相反,它是当被拖放元素离开目标元素时触发,经过测试,离开目标元素的条件是:被拖放元素一半以上的面积离开目标元素...dragstart事件 中设置,否则无效 ---- 上面也说了,这两个属性基本上只是用来改变鼠标样式的,所以如果想实现特定的功能还得我们自己来重写事件的处理函数。...下面来看一个拖放实例: 需求: 将一段文本拖放到一个元素中 因为文本是默认支持的拖放元素,所以我们可以不对其做任何的事件绑定。 <!

    1.5K10

    移动端轮播图效果实现

    每次移动的距离等于当前索引*宽度 js代码 window.addEventListener('load',function(){ //1....小圆点高亮实现 这里我们要用到一个新的属性---classList classList属性是HTML5新添加的一个属性,可以返回元素的类名,不过ie10以上才支持 但是我们是做移动端所以不用考虑ie的问题...该属性还可用于在元素添加,移除,切换 CSS类,有如下方法 element.classList.add('类名') 追加类名(不用加点) element.classList.remove(’类名‘) 移除类名...element.classList.toggle('类名') 切换类名(原来有这个类名则取消否则添加) 代码如下 ... // 小圆点跟随变化 //将ol里面的li带有current的类名元素选择出来去掉类名...+'px)' }) }) 实现轮播图上一张、下一张、回弹 上面代码只实现了拖放元素,并没有实现轮播图上一张、下一张、回弹的功能,我们要根据用户滑动的距离来实现上一张下一张或者回弹的功能

    1.6K10

    HTML5 进阶系列:拖放 API 实现拖放排序

    前言 HTML5 中提供了直接拖放的 API,极大的方便我们实现拖放效果,不需要去写一大堆的 js,只需要通过监听元素的拖放事件就能实现各种拖放功能。...一个元素被拖放,他可能会经过很多个元素上,最终到达想要放置的元素内。这里,我暂时把被拖放的元素称为源对象,被经过的元素称为过程对象,到达的元素我称为目标对象。不同的对象产生不同的拖放事件。...div id="source" draggable="true">a元素div> div id="process">b元素div> div id="target">c元素div> 的是:IE 不支持 dataTransfer 对象。对,不管哪个 IE 版本都不支持。 实现拖放排序 上面已经熟悉了拖放 API 的使用,我们来实现个简单的拖放排序,这也是在项目中比较常见的。...script> var iosDragDropShim = { enableEnterLeave: true } js

    1.9K70

    【实战技巧】VUE3.0实现简易的可拖放列表排序

    HTML拖放接口 首先还是先学习一下API 官方介绍 HTML 拖放(Drag and Drop)接口使应用程序能够在浏览器中使用拖放功能。...首先给被拖放的元素添加 draggable 属性并添加 dragstart 事件处理函数 定义拖放数据,本例定义的是拖拽元素的id 定义一个释放区域,添加 drop 和 dragover 事件处理函数...,并阻止默认事件 处理拖放数据 拖放结束,添加 dragend 事件处理函数例子 代码 div class="box" id='box1'> div id="child...原生js实现拖拽排序我还没有弄,但是在vue中就非常的简单,因为我们在触发任何事件的时候,都可以拿到元素的index,我们可以靠index轻易实现。...> //js const state = reactive({ // 当前正在拖拽的元素索引 oldItemIndex: -1, // 将插入的目标位置索引 newItemIndex

    2.1K40

    HTML5原生拖放事件的学习与实践

    前言 之前学习了 HTML5 的拖放事件,开发中也用到了拖拽组件。为了厘清整体的逻辑,专门做了一个小例子。...具体实现的效果也很简单:元素可以在容器中任意拖动,元素被移入容器的时候,还会有相关样式的改变已达到更好的展示效果。 例子基本运用了拖放事件的全部事件,并且尽量简洁的展示了出来。特此记录。...专注前端与算法的系列干货分享,转载请声明出处:原文链接: xxoo521.com 拖放事件介绍 由名字可以看出来,拖放事件由 2 部分组成:拖动和释放。.../demo.js">script> div class="container" ondragenter="onDragEnter(event)"...具体逻辑请看代码中的注释信息: let target = null, container = null; // 寻找拖拽元素的容器类 function findParentContainer(

    1.2K20

    【前端拖拽组件库】最强开源高性能组件库Pragmatic-drag-and-drop简介与分析

    Pragmatic-drag-and-drop 一种低级拖放工具链,可广泛应用于现有的任何技术堆栈上进行任何拖放体验,包括react、svelte、vue、angular 等,不受特定技术栈的限制。...flourish:使拖动操作更绚丽多彩的效果(例如,drop 时闪光)auto-scroll:拖动操作期间更绚的自动滚动效果react-accessibility:用于添加常见辅助功能控件的自定义组件Live-Region...四、实操教程下面我们将根据官网的一个实例,学习使用 Pragmatic-drag-and-drop实现一些基本功能,包括可拖放、拖放目标和监视器,我们将创建一个带有可拖动棋子的棋盘,效果图如下:1.构建可拖动棋子我们第一步是允许棋子被拖动...,Pragmatic-drag-and-drop提供了一个可拖动的函数draggable,可以将其附加到元素以启用可拖动行为,为了使作品在拖动时淡入淡出,我们可以在可拖动的设置状态中使用 onDragStart...Pragmatic-drag-and-drop以极其小的安装体积以及极快运行性能,广泛的应用技术支持快速的吸引了前端开发者的目光,如果你是一名前端开发者,正在考虑前端拖放场景的实现,Pragmatic-drag-and-drop

    3.7K22

    HTML5 进阶系列:拖放 API 实现拖放排序

    前言 HTML5 中提供了直接拖放的 API,极大的方便我们实现拖放效果,不需要去写一大堆的 js,只需要通过监听元素的拖放事件就能实现各种拖放功能。...一个元素被拖放,他可能会经过很多个元素上,最终到达想要放置的元素内。这里,我暂时把被拖放的元素称为源对象,被经过的元素称为过程对象,到达的元素我称为目标对象。不同的对象产生不同的拖放事件。...div id="source" draggable="true">a元素div> div id="process">b元素div> div id="target">c元素div> 的是:IE 不支持 dataTransfer 对象。对,不管哪个 IE 版本都不支持。 实现拖放排序 上面已经熟悉了拖放 API 的使用,我们来实现个简单的拖放排序,这也是在项目中比较常见的。...script> var iosDragDropShim = { enableEnterLeave: true } js

    1.6K10

    拖拽神器React DnD你真的了解了吗?

    简介 最近在研究用 React 绘制拓扑图的时候涉及到了 HTML5 拖放 API,了解到了 React DnD 这个拖放神器。...React DnD 帮我们封装了一系列的拖放 API,大大简化了拖放 API 的使用方式,今天就结合下面这个示例给大家介绍下 React DnD 的用法。...有时候在 isDragging、 canDrag 方法里可能获取不到 component 这个参数,因为它们被调用时实例可能不可用。...spec: 一个js对象,上面定义了一些方法,描述了拖放目标对拖放事件的反应。 方法中的参数解释: props:当前组件的 props 参数。...有时候在 isDragging、 canDrag 方法里可能获取不到 component 这个参数,因为它们被调用时实例可能不可用。

    2K20
    领券