react-draggable实现拖拽详解

简介: react-draggable实现拖拽详解

属性

常用属性

属性 默认值 介绍
axis x handle拖动的方向,可选值 x ,y,both
handle 指定拖动handle的class
position handle的位置,需要实时改变,否则handle无法拖动,类似于react的受控组件
onStrat 方法 拖动开始
onDrag 方法 拖动中
onStop 方法 结束拖动
onMouseDown 方法 触发点击

属性列表

属性名称 说明
bounds 指定移动的边界值;可以设置的值 left:number,top:number,right:number,bottom:number
group group= “name”,相同的组之间可以相互拖拽
sort sort= “true”,是否开启内部排序,如果设置为false,它所在组无法排序,在其他组可以拖动排序
delay delay= “0”, 鼠标按下后多久可以拖拽
touchStartThreshold 鼠标移动多少px才能拖动元素
disabled disabled= “true”,是否启用拖拽组件
animation 拖动时的动画效果,还是很酷的,数字类型。如设置animation=1000表示1秒过渡动画效果
handle handle=“.mover” 只有当鼠标移动到css为mover类的元素上才能拖动
filter filter=“.unmover” 设置了unmover样式的元素不允许拖动
draggable draggable=“.item” 那些元素是可以被拖动的
ghostClass ghostClass=“ghostClass” 设置拖动元素的占位符类名,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
chosenClass ghostClass=“hostClass” 被选中目标的样式,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
dragClass dragClass="dragClass"拖动元素的样式,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
dataIdAttr dataIdAttr: ‘data-id’
forceFallback 默认false,忽略HTML5的拖拽行为,因为h5里有个属性也是可以拖动,你要自定义ghostClass chosenClass dragClass样式时,建议forceFallback设置为true
fallbackClass 默认false,克隆的DOM元素的类名
allbackOnBody 默认false,克隆的元素添加到文档的body中
fallbackTolerance 拖拽之前应该移动的px
scroll 默认true,有滚动区域是否允许拖拽
scrollFn 滚动回调函数
scrollSensitivity 距离滚动区域多远时,滚动滚动条
scrollSpeed 滚动速度

事件列表

属性名称 说明
start 开始拖动时触发的事件
add 从一个数组拖拽到另外一个数组时触发的事件
remove 移除事件
update 拖拽变换位置时触发的事件
end 拖拽完成时的事件
choose 鼠标点击选中要拖拽元素时的事件
unchoose 选中后松开鼠标的事件
sort 位置变化时的事件
clone 从一个数组拖拽到另外一个数组时触发的事件和add不同,clone是复制了数组元素
move 自定义控制那些元素可以拖拽或不允许拖拽并控制是否允许停靠

举例

首先安装 react-draggable

yarn add react-draggable / npm i react-draggable

在页面中导入react-draggable

import Draggable from 'react-draggable'

实现移动

在Draggable 中必须要用一个容器来包裹住你要拖动的东西,否则不能用

  1. 基本
 <Draggable size={200}>
   <div>
        <div className='mover' ></div>
          <div className='unmover'>
          asdasdasd
        </div>
   </div>
</Draggable>

效果


2. 初始化开始位置

 <Draggable size={200} defaultPosition={{ x: 25, y: 25 }}>
   <div>
        <div className='mover' ></div>
          <div className='unmover'>
          asdasdasd
        </div>
   </div>
</Draggable>

效果


3. 限制拖拽范围

 <Draggable size={200} defaultPosition={{ x: 25, y: 25 }} 
 bounds={{ top: 0 }}
 >
   <div>
        <div className='mover' ></div>
          <div className='unmover'>
          asdasdasd
        </div>
   </div>
</Draggable>

效果


4. 限制拖拽内容

 <Draggable size={200} defaultPosition={{ x: 25, y: 25 }} 
 bounds={{ top: 0 }}
 handle=".mover"
 filter=".unmover" 
 >
   <div>
        <div className='mover' ></div>
          <div className='unmover'>
          asdasdasd
        </div>
   </div>
</Draggable>

效果




希望小编写的能够帮助到你😘

相关文章
|
6月前
|
前端开发 测试技术 容器
React 快速实现拖拽改变容器宽高度
React 快速实现拖拽改变容器宽高度
283 0
|
13天前
|
移动开发 前端开发 JavaScript
React DnD:实现拖拽功能的终极方案?
本文首发于微信公众号“前端徐徐”,介绍了一个强大的 React 拖拽库——React DnD。React DnD 帮助开发者轻松创建复杂的拖拽界面,适用于 Trello 风格的应用、列表重排序、可拖拽的 UI 组件等场景。文章详细介绍了 React DnD 的基本信息、主要特点、使用场景及快速上手指南。
39 3
React DnD:实现拖拽功能的终极方案?
|
前端开发 容器
封装React组件DragLine,鼠标拖拽的边框改变元素宽度
封装React组件DragLine,鼠标拖拽的边框改变元素宽度
176 0
|
6月前
|
前端开发 JavaScript API
React拖拽实践
React拖拽实践
98 0
|
6月前
|
前端开发 JavaScript API
React拖拽实践
React拖拽实践
|
6月前
|
前端开发
用react实现手机端限制拖拽实现
用react实现手机端限制拖拽实现
85 0
|
存储 前端开发
react 实现低耦合 拖拽项目的思路
react 实现低耦合 拖拽项目的思路
55 0
|
前端开发
|
前端开发 API 容器
React Draggable 实现图片拖拽
React Draggable 实现图片拖拽
512 0
|
前端开发
【React工作记录九十】ant design table实现上下行拖拽功能(类组件)
【React工作记录九十】ant design table实现上下行拖拽功能(类组件)
216 0