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

在容器div的整个空间中拖动2个div

,可以通过使用HTML5的拖放API来实现。以下是一个完善且全面的答案:

拖放是指在网页中将一个元素从一个位置拖动到另一个位置的操作。在这个场景中,我们需要在一个容器div中拖动两个div元素。

首先,我们需要在HTML中创建一个容器div和两个待拖动的div元素。可以使用以下代码:

代码语言:txt
复制
<div id="container">
  <div id="div1" draggable="true">Div 1</div>
  <div id="div2" draggable="true">Div 2</div>
</div>

在上面的代码中,我们给两个div元素添加了draggable="true"属性,表示它们可以被拖动。

接下来,我们需要使用JavaScript来实现拖放的逻辑。可以使用以下代码:

代码语言:txt
复制
// 获取容器和待拖动的div元素
var container = document.getElementById("container");
var div1 = document.getElementById("div1");
var div2 = document.getElementById("div2");

// 定义拖动开始时的处理函数
function dragStart(event) {
  // 设置被拖动元素的数据
  event.dataTransfer.setData("text/plain", event.target.id);
}

// 定义拖动进入容器时的处理函数
function dragEnter(event) {
  // 阻止默认的拖放行为
  event.preventDefault();
  // 添加一个类名来显示拖放目标区域
  container.classList.add("drag-over");
}

// 定义拖动离开容器时的处理函数
function dragLeave(event) {
  // 移除拖放目标区域的类名
  container.classList.remove("drag-over");
}

// 定义拖动在容器中移动时的处理函数
function dragOver(event) {
  // 阻止默认的拖放行为
  event.preventDefault();
}

// 定义拖动放下时的处理函数
function drop(event) {
  // 阻止默认的拖放行为
  event.preventDefault();
  // 获取被拖动元素的数据
  var id = event.dataTransfer.getData("text/plain");
  // 将被拖动的元素添加到容器中
  container.appendChild(document.getElementById(id));
  // 移除拖放目标区域的类名
  container.classList.remove("drag-over");
}

// 添加拖放事件监听器
div1.addEventListener("dragstart", dragStart);
div2.addEventListener("dragstart", dragStart);
container.addEventListener("dragenter", dragEnter);
container.addEventListener("dragleave", dragLeave);
container.addEventListener("dragover", dragOver);
container.addEventListener("drop", drop);

在上面的代码中,我们定义了几个处理函数来处理拖放的不同阶段。dragStart函数在拖动开始时设置被拖动元素的数据。dragEnter函数在拖动进入容器时添加一个类名来显示拖放目标区域。dragLeave函数在拖动离开容器时移除该类名。dragOver函数在拖动在容器中移动时阻止默认的拖放行为。drop函数在拖动放下时获取被拖动元素的数据,并将其添加到容器中。

最后,我们可以通过CSS来美化容器和待拖动的div元素的样式。可以使用以下代码:

代码语言:txt
复制
#container {
  width: 400px;
  height: 300px;
  border: 1px solid #ccc;
  padding: 10px;
}

#div1, #div2 {
  width: 100px;
  height: 100px;
  background-color: #f0f0f0;
  border: 1px solid #999;
  margin-bottom: 10px;
}

#container.drag-over {
  border-color: #ff0000;
}

在上面的代码中,我们设置了容器的宽度、高度、边框和内边距。待拖动的div元素的样式包括宽度、高度、背景颜色和边框。当拖动进入容器时,容器的边框颜色会变为红色。

这样,当你在浏览器中打开这个页面时,你就可以在容器div的整个空间中拖动两个div元素了。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云容器服务:https://cloud.tencent.com/product/tke
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

原生JS快速实现拖放(drag and drop)效果

接下来我们就用原生js和css快速实现这样拖放效果: HTML HTML内容很简单,就是五个容器和一个可以被拖拽元素: html: <div class="droppable...元素被拖动过程中增加边框等效果;2. 当元素被拖动容器上方时,容器也应增加样式表明容器可以接收一个被拖拽元素。...元素被拖动容器上方时容器状态,增加灰色虚线border。...当draggable元素被拖动时,原来容器draggable元素并不会消失,需要我们手动将其隐藏(class设置为invisible),如果同步操作会立马触发dragend事件导致拖动效果消失,所以...dragEnter和dragOver方法中我们需要通过preventDefault来取消事件以表明容器是一个合法droppable元素,不然容器drop事件将无法触发,接下来操作也将无法进行,详细解释请参考

3.5K51

draggable用法_draggable

大家好,又见面了,我是你们朋友全栈君。 一、概述 通过前面几节学习,大家应该都知道了,一个div对象是可以通过拖拉来改变大小,也可以通过拖动来改变其位置。...//定义一个容器,div就只能在容器范围内活动了 7: cursor: "move", //定义拖动时鼠标指针状态 ,参数类型详见css中cursor...: 0.40, //设置对象被拖动透明度 10: handle: "div", //设置拖动控制器,也就是说当鼠标按住控制器时候...,才能拖动对象 11: scroll:false, //设置当拖动超出整个浏览器窗口,是否滚动浏览器 12: distance: 20,...', 'select', 'option'],//设置被拖动div碰到那些dom元素时停止 16: start:function(e,ui){}, //开始拖动执行函数

1K20

超强纯 CSS 鼠标点击拖拽效果

我们先来看一个最最简单效果示意图,实现点击一个元素,能够拖动元素进行移动效果: 好,到这里,继续往下阅读之前,你可以停一停。...resize: both; overflow: scroll; } 这样,我们就得到了一个灵活可以拖动元素: 是的,我们整个效果,就需要借助这个特性进行实现。...,放置容器右下角看看效果: 如果我们再把整个设置了 resize: both 边框隐藏呢?...设置为 position: relative 并且设置 resize,负责提供一个可拖动大小元素,在这个元素变化过程中,就能动态改变父容器高宽 g-content 实际内容盒子,通过 position... 此时,元素不仅可以被拖动,甚至可以被重写,感受一下: 纯 CSS 实现效果,非常有意思,完整代码,你可以戳这里:Pure CSS Auto Drag Demo 最后

2.1K10

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

具体实现效果也很简单:元素可以容器中任意拖动,元素被移入容器时候,还会有相关样式改变已达到更好展示效果。 例子基本运用了拖放事件全部事件,并且尽量简洁展示了出来。特此记录。...而拖动又由 2 部分组成,分别是被拖动元素相关事件和元素容器相关事件。...1、被拖动元素相关事件 : 事件名称 说明 dragstart 元素开始被拖动时候触发 drag 元素被拖动时反复触发 dragend 拖动操作完成时触发 2、容器相关事件 : 事件名称 说明...dragover 当被拖动元素目的地元素内时触发,一般需要取消浏览器默认行为。...将图中可拖拽元素,拖放到下面的容器中,这个过程效果如下所示。箭头表示拖拽方向,方框代表动态改变容器样式。 ? 最后,松开鼠标,将元素放入到下面的容器中,整个过程完成。 ?

1.1K20

HTML5 拖放

WEB应用开发中,可能需要针对页面中某个对象:图片、文字、容器等,进行位置移动来实现自定义布局 常见拖放应用一:电商平台中商家 店铺装修,这个时候电商平台会提供多个可以拖动模块,商家可以根据...如下代码我们如果要将图片放置到另一个div容器中,需要设置这个div容器可以放置其他元素(给他添加ondragover 事件,ondragover 规定当我们拖动元素经过它时候,可以将拖动元素放置到此处...我们要规定被拖动元素需要放置新位置,这里给div容器添加 ondrop 事件,如下代码: <div id="div1" ondrop="drop(event)" ondragover="allowDrop...该方法将返回 setData() 方法中设置为相同类型数据 被拖元素数据 是被拖元素 id ("drag1") 把被拖动图片元素 追加 到放置元素(目标元素)中 二、拖动一个图片到一个div容器中...id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">我是一个容器,请用鼠标拖动下面的图片移动到我上面 <img id=

1.5K20

底部悬浮框 上拉和下拉功能

实现一个通过触摸拖动操作来展开和收起底部悬浮框,并根据拖动过程中位置和状态来调整底部容器高度和展开状态功能 <!...同时,通过e.preventDefault()阻止默认拖动行为。 4:添加touchmove事件监听器,当触摸移动时,根据手指移动距离计算新高度,并将底部容器高度设置为新高度。...如果底部容器高度小于初始高度且悬浮框已展开,则将底部容器高度设置为初始高度,同时将isExpanded标志设置为false。...如果悬浮框与页面顶部距离小于等于0,则将底部容器高度设置为窗口高度减去悬浮框与顶部容器之间距离,并将isExpanded和isDragging标志设置为false。...根据底部容器高度和展开状态,添加或移除.open类,以控制底部容器展开和收起。

18240

ExtJs学习笔记(24)-DragDrop拖动功能

直接给代码吧,主要重点已经代码里注释了 Code <!...,神奇吧 //(ExtJs拖动组件分二大类,DDProxy就是要拖动东西,而DDTarget就是拖动后可以扔进去目标容器区) //以下建立了三个拖动源DropSource...我可以随便拖"拖动完成后效果  转载请注明来自菩提树下杨过 简单说明几点: 1.ExtJs中拖动功能,只要记住DDProxy是用来拖动组件,而DDTarget就是用来放拖动容器就可以了,其它东西比如...,神奇吧 //(ExtJs拖动组件分二大类,DDProxy就是要拖动东西,而DDTarget就是拖动后可以扔进去目标容器区) //以下建立了三个拖动源DropSource...html> 这一次我们建立了二个目标容器 并且第二个容器仅接受红色色块

88390

Todo List: 新增编辑任务,localStorage + Vuex实现本地存储 – 第二章

前言 第一章中,我们Todo List已经初现锥形,本章节我们对页面优化,同时让数据实现本地存储。主要用到localStorage + Vuex来实现页面交互和存储功能。 ?...里面涉及到更新整个任务list,更新单个任务,新增任务。...1、如果传入data是,那就是更新整个任务list,用于任务拖动 2、如果传入data有值,并且data.item.id有值,表示修改单个任务,从整个任务list中找出要更新任务,更新掉。...> js部分 methods: { // 停止拖动,更新整个list endDrag () { this.current...$refs.itemDetail.show() }, // 拖动任务事件,使其经过分组高亮 onMoveCallback (evt, originalEvent) { this.current

66650

手写实战应用:Vue拖拽插件应用与选择

,需要注意是要有一个父容器来盛放拖动元素,并且要给父容器设置相对定位,否则拖动元素将会自动相对于视图窗口定位拖动元素默认宽高是200pxw可以设置元素宽,设置时不需要带单位,如果设置auto则为组件内部内容宽度...限制拖拽范围如果不设置拖拽范围,可以整个页面进行拖拽 图片可以使用parent-limitation限制只父元素内拖动也可以手动设置拖拽范围宽高parentW,parentH//指定只父元素内拖动...:parentH="2000"  > 修改组件默认样式拖拽组件点击拖拽时,会有一个默认虚线边框 图片可以style里设置取消默认虚线// 取消默认外边框虚线 .vdr.active:before... {   display:none; } 拖拽层级vue-drag-resize层级默认是第一个元素最小,然后依次递增 图片项目有个要求:当拖动元素时,始终保持拖动元素最上层,此时就需要监听拖动元素...,把当前元素设置为最高级使用@clicked事件监听,当点击拖动元素时,可以传如此元素索引,把此元素层级设置为最高,其他设置为最低   <div class="father"

35930

基于Vue拖拽插件实战应用,但最后我还是选择了手写

export default { name: 'Drag', components: { VueDragResize }, } 和普通组件引入没有什么区别,需要注意是要有一个父容器来盛放拖动元素...,并且要给父容器设置相对定位,否则拖动元素将会自动相对于视图窗口定位 拖动元素默认宽高是200px w可以设置元素宽,设置时不需要带单位,如果设置auto则为组件内部内容宽度 h是高 x表示相对于父元素...限制拖拽范围 如果不设置拖拽范围,可以整个页面进行拖拽 可以使用parent-limitation限制只父元素内拖动 也可以手动设置拖拽范围宽高parentW,parentH //指定只父元素内拖动...:none; } 拖拽层级 vue-drag-resize层级默认是第一个元素最小,然后依次递增 项目有个要求:当拖动元素时,始终保持拖动元素最上层,此时就需要监听拖动元素,把当前元素设置为最高级...使用@clicked事件监听,当点击拖动元素时,可以传如此元素索引,把此元素层级设置为最高,其他设置为最低 <VueDragResize

1.5K60

HTML5 拖放API与Vue.js实战

拖放 API 将可拖动元素添加到 HTML,使我们可以构建包含可以拖动具有丰富 UI 元素 Web 应用。 本文中我们将用 Vue.js 构建一个简单看板应用。...完成后,删除默认组件 HelloWorld ,将 App 组件修改为,仅包含裸组件模板: export default...可以通过 DataTransfer API 把通过拖动操作传输数据保存在拖动数据存储区中,这个 API 提供了拖放操作期间存储和访问数据方式。...从拖动到释放元素这段时间中,元素被拖放后,将会在被拖动元素上触发两个事件:dragstart 和 dragend。 现在还不能把可拖动元素拖放到任何地方。...,将会在启用拖放元素上触发以下事件: Dragenter:当一个元素被拖动到启用拖放元素上时触发一次Dragover:只要元素仍然位于启用了 drop 元素上,就会连续触发Drop:拖动元素拖放到启用了拖放元素上之后触发

4.3K10

快速搭建一个代码在线编辑预览工具(实战)

实现上,水平调节宽度和垂直调节高度原理是一样,以调节宽度为例,三个编辑器宽度使用一个数组来维护,用百分比来表示,那么初始就是100/3%,然后每个编辑器都有一个拖动条,位于内部左侧,那么当按住拖动某个拖动拖动逻辑如下...: 1.把本次拖动瞬间偏移量由像素转换为百分比; 2.如果是向左拖动的话,检测本次拖动编辑器左侧是否存在还有空间可以压缩编辑器,没有的话代表不能进行拖动;如果有的话,那么拖动时增加本次拖动编辑器宽度...2021-04-29-19-15-42.gif 为了能提供多种布局随意切换,我们有必要把上述逻辑封装一下,封装成两个组件,一个容器组件Drag.vue,一个容器子组件DragItem.vue,DragItem...具体到对象或数组某项时也使用div来实现换行,需要注意是如果是作为对象某个属性值的话,需要使用span来和属性及冒号显示同一行,此外,也要考虑到循环引用情况。...展开收缩时针对非对象和数组,所以可以遍历下级属性之前添加一个按钮元素,按钮相对于最外层元素使用绝对定位。

4.4K30

追求完美代码之——实现元素拖拽修改宽高和位移插件

,即可获得拖动新位置 // html只有一个div,并且有设置position const ele = document.querySelector("div"); ele.addEventListener...如果你div很大,跟丢概率会小很多 ?...计算初始位置,后面使用fixed定位来维护 控件容器内小控件使用绝对定位,保证控件是控件容器固定位置 鼠标指针修改:不同位置有相应方向cursor,追求更好用户体验 目标元素最好是fixed定位.../ 控件容器 const controlWrapper = document.createElement("div"); // 挂一个数据代理,设置代理对象时候同时设置目标元素和控件容器样式..._style_.height) + directionTop * detaY; // 区分拖动非4个角控件情况,此时是拖动整个元素本身 if (isMoveTargetElement

2.1K41

快速搭建一个代码在线编辑预览工具

实现上,水平调节宽度和垂直调节高度原理是一样,以调节宽度为例,三个编辑器宽度使用一个数组来维护,用百分比来表示,那么初始就是100/3%,然后每个编辑器都有一个拖动条,位于内部左侧,那么当按住拖动某个拖动拖动逻辑如下...: 1.把本次拖动瞬间偏移量由像素转换为百分比; 2.如果是向左拖动的话,检测本次拖动编辑器左侧是否存在还有空间可以压缩编辑器,没有的话代表不能进行拖动;如果有的话,那么拖动时增加本次拖动编辑器宽度...,我们有必要把上述逻辑封装一下,封装成两个组件,一个容器组件Drag.vue,一个容器子组件DragItem.vue,DragItem通过slot来显示其他内容,DragItem主要提供拖动条及绑定相关鼠标事件...具体到对象或数组某项时也使用div来实现换行,需要注意是如果是作为对象某个属性值的话,需要使用span来和属性及冒号显示同一行,此外,也要考虑到循环引用情况。...展开收缩时针对非对象和数组,所以可以遍历下级属性之前添加一个按钮元素,按钮相对于最外层元素使用绝对定位。

4K20

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

实际应用 拖放 API 实际应用中有许多用途。下面是一些常见实际应用场景: 3.1 图片库应用程序 相册应用中,用户可以拖动图片到不同分组或标签中进行分类和管理。...(「album-1」和「album-2」),每个相册容器中包含了一些可拖动图片元素。...当拖动图片时,我们使用 dragstart 事件将图片 ID 存储 dataTransfer 对象中。...放置目标容器上,我们使用 dragover 事件阻止默认行为并添加一些过渡样式,使用 dragleave 事件移除过渡样式,使用 drop 事件放置目标容器中追加拖动图片元素。...通过这样实现,用户可以轻松地将图片拖动到不同相册中进行分类和管理。 3.2 项目任务管理应用 项目任务管理应用中,用户可以通过拖动任务卡片进行排序、分组或更改任务状态。

21920

vue3打造接近原生体验抽屉指令

所以大家还是要辩证看问题,只是对于整个职业生涯来说,经历很重要, 因为你会老啊,你终究干不过年轻人啊,你加班到底还是加不过他啊,属于你时代最终会结束啊,但是洗尽铅华之后,能够留下来,或者说能够在这个行当...无法替代原生除了审核因素之外,原因很简单,它不能编译成native,只能通过容器这个介质,也就是webview,去运行h5页面,但是这样的话性能就会大大折扣 你想啊,我去打开一个页面,还需要先初始化容器..." v-swipe-action="action"> 拖动区域 <div...其实,细想一下,我们就可以发现,我们可以判定滚动条是否已经到顶部,当滚动条不在顶部时候,我们就关闭拖动事件,当他顶部时候,我们就开启 这样一来,就可以将滚动和拖动事件,变成相当于单线程事件,判断代码如下...,拖动抽屉时候,粗鲁之辈暴力测试中,由于节流函数限制,他却不跟手,性能是好了,体验却极差 这是两瓶毒药啊?

40630
领券