当前位置: 首页 > news >正文

react-draggable实现拖拽详解

react-draggable

  • 属性
    • 常用属性
    • 属性列表
  • 事件列表
  • 举例
    • 首先安装 react-draggable
    • 实现移动
  • 希望小编写的能够帮助到你😘

属性

常用属性

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

属性列表

属性名称说明
bounds指定移动的边界值;可以设置的值 left:number,top:number,right:number,bottom:number
groupgroup= “name”,相同的组之间可以相互拖拽
sortsort= “true”,是否开启内部排序,如果设置为false,它所在组无法排序,在其他组可以拖动排序
delaydelay= “0”, 鼠标按下后多久可以拖拽
touchStartThreshold鼠标移动多少px才能拖动元素
disableddisabled= “true”,是否启用拖拽组件
animation拖动时的动画效果,还是很酷的,数字类型。如设置animation=1000表示1秒过渡动画效果
handlehandle=“.mover” 只有当鼠标移动到css为mover类的元素上才能拖动
filterfilter=“.unmover” 设置了unmover样式的元素不允许拖动
draggabledraggable=“.item” 那些元素是可以被拖动的
ghostClassghostClass=“ghostClass” 设置拖动元素的占位符类名,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
chosenClassghostClass=“hostClass” 被选中目标的样式,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
dragClassdragClass="dragClass"拖动元素的样式,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
dataIdAttrdataIdAttr: ‘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>

效果
请添加图片描述

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

http://www.lryc.cn/news/29091.html

相关文章:

  • 01.进程和线程的区别
  • 逻辑优化-rewrite
  • 文件传输与聊天系统设计
  • 蓝桥杯第十四届校内赛(第三期) C/C++ B组
  • 有关平方或高次方的公式整理一元高次方程的求解
  • Java笔记3
  • Leetcode.2202 K 次操作后最大化顶端元素
  • JAVA知识点全面总结3:String类的学习
  • Eureka注册中心和Nacos注册中心详解以及Nacos与Eureka有什么区别?
  • Web3D发展趋势以及Web3D应用场景
  • 2023-3-4 刷题情况
  • 前端面试总结
  • Geospatial Data Science (6): Spatial clustering
  • 蚁群算法优化问题
  • 为啥一个 main 方法就能启动项目
  • 洛谷:P1554 梦中的统计 JAVA
  • C++初学笔记整理
  • 记录--在Vue3这样子写页面更快更高效
  • 【程序设计与算法(三)】测验和作业题部分答案汇总(面向对象篇)
  • LeetCode 349. 两个数组的交集和 692. 前K个高频单词
  • SpringCloud的五大组件功能
  • 剑指 Offer II 016. 不含重复字符的最长子字符串
  • HBase读取流程详解
  • Redis学习(一):NoSQL概述
  • ESP32设备驱动-MCP23017并行IO扩展驱动
  • RabbitMQ简介
  • 【项目设计】高并发内存池(五)[释放内存流程及调通]
  • Git标签与版本发布
  • Python面向对象编程
  • 【什么情况会导致 MySQL 索引失效?】