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>

效果




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

相关文章
|
3月前
|
前端开发 测试技术 容器
React 快速实现拖拽改变容器宽高度
React 快速实现拖拽改变容器宽高度
47 0
|
人工智能 JSON 前端开发
顶级好用的 React 表单设计生成器,可拖拽生成表单
React 前端开发中,表单组件是排在前三的高频使用的组件,如何快速构建表单,节省力气,避免重复造轮子呢,选择一款适合自己的前端表单设计生成器就非常重要了。本文介绍 3 款顶级好用的 React 表单设计器,其中最后一款卡拉云,是新一代低代码开发工具,不仅能自动生成各类表单,还可以拖拽生成其他常见的前端组件,一行代码连接前后端数据,可快速接入数据库/api。它是表单设计器的超集,可直接生成属于你的后台管理工具,无敌好用。
3296 0
|
前端开发 JavaScript API
React Draggable 实现拖拽 - 最详细中文教程 - 卡拉云
React Draggable 是 react 生态中,最好用的拖拽实现库之一。如果你的应用中需要实现拖拽功能,可以尝试用 react-draggable,它可以满足多数情况下的拖拽需求,比如一个弹出设置浮窗,可以相互遮挡的容器之类。在所有 react 拖拽库里(即 react dnd, drag and drop),react-draggable 算是把功能性和易用性平衡得最好的拖拽库了。
2905 0
|
3月前
|
前端开发 JavaScript API
React拖拽实践
React拖拽实践
23 0
|
5月前
|
前端开发 JavaScript API
React拖拽实践
React拖拽实践
|
10月前
|
前端开发 容器
封装React组件DragLine,鼠标拖拽的边框改变元素宽度
封装React组件DragLine,鼠标拖拽的边框改变元素宽度
121 0
|
5月前
|
前端开发
用react实现手机端限制拖拽实现
用react实现手机端限制拖拽实现
37 0
|
6月前
|
存储 前端开发
react 实现低耦合 拖拽项目的思路
react 实现低耦合 拖拽项目的思路
39 0
|
9月前
|
前端开发
|
9月前
|
前端开发 API 容器
React Draggable 实现图片拖拽
React Draggable 实现图片拖拽
307 0