React Draggable插件实现拖拽功能

简介: 1.下载Draggable插件

1.下载Draggable插件

npm install react-draggable

07272c982bc0467992fbbd4f9d461917.png

2.引入Draggable插件

// 引入拖拽插件
import Draggable from 'react-draggable';

3.设置一个div,并设置样式,并用Draggable包裹起来

import "./index.css"
// 引入拖拽插件
import Draggable from 'react-draggable';
export default function IndexPage() {
  return (
    <div>
      {/* 给他设置一个父级 */}
      <div className="fu">
        <Draggable >
          <div className="top">
            这是上面的页面
          </div>
        </Draggable>
      </div>
    </div>
  );
}
.top {
  background-color: green;
  width: 300px;
  height: 300px;
}
.fu{
  background-color: red;
  width: 800px;
  height: 500px;
  border-end-end-radius: 0;
}

这样就可以进行全局的拖拽,(他是可以拖拽出到屏幕外面的)


4.设置拖拽的范围

import "./index.css"
// 引入拖拽插件
import Draggable from 'react-draggable';
export default function IndexPage() {
  return (
    <div>
      <div className="fu">
        <Draggable bounds={{right: 500, left: 0,top:0,bottom:200} }  >
          <div className="top">
            这是上面的页面
          </div>
        </Draggable>
      </div>
    </div>
  );
}

这样就是只能在父级div中进行拖拽

或者可以写成

import "./index.css"
// 引入拖拽插件
import Draggable from 'react-draggable';
export default function IndexPage() {
  return (
    <div>
      <div className="fu">
        <Draggable bounds={".fu"}  >
          <div className="top">
            这是上面的页面
          </div>
        </Draggable>
      </div>
    </div>
  );
}

5.Draggable常用props

allowAnyClick: boolean // 默认false,设为true非左键可实现点击拖拽
axis: string // 'x':x轴方向拖拽、'y':y轴方向拖拽、'none':禁止拖拽
bounds: { left: number, top: number, right: number, bottom: number } | string 
    // 限定移动的边界,接受值:
    //(1)'parent':在移动元素的offsetParent范围内
    //(2)一个选择器,在指定的Dom节点内
    //(3){ left: number, top: number, right: number, bottom: number }对象,限定每个方向可以移动的距离
cancel:制定给一个选择器组织drag初始化,例如'.body'
defaultClassName:string // 拖拽ui类名,默认'react-draggable'
drfaultClassNameDragging:string // 正在拖拽ui类名,默认'eact-draggable-dragging'
defaultClassNameDragged:string //拖拽后的类名,默认'react-draggable-dragged'
defaultPosition:{ x: number, y: number } // 起始x和y的位置
disabled:boolean // true禁止拖拽任何元素
grid:[number, number] // 正在拖拽的网格范围
handle:string // 初始拖拽的的选择器'.handle'
offsetParent:HTMLElement // 拖拽的offsetParent
onMouseDown: (e: MouseEvent) => void // 鼠标按下的回调
onStart: DraggableEventHandler // 开始拖拽的回调
onDrag:DraggableEventHandler // 拖拽时的回调
onStop:DraggableEventHandler // 拖拽结束的回调
position: {x: number, y: number} // 控制元素的位置
positionOffset: {x: number | string, y: number | string} // 相对于起始位置的偏移
scale:number // 定义拖拽元素的缩放


相关文章
|
2月前
|
移动开发 前端开发 JavaScript
React DnD:实现拖拽功能的终极方案?
本文首发于微信公众号“前端徐徐”,介绍了一个强大的 React 拖拽库——React DnD。React DnD 帮助开发者轻松创建复杂的拖拽界面,适用于 Trello 风格的应用、列表重排序、可拖拽的 UI 组件等场景。文章详细介绍了 React DnD 的基本信息、主要特点、使用场景及快速上手指南。
133 3
React DnD:实现拖拽功能的终极方案?
|
1月前
|
移动开发 前端开发 API
React 拖拽组件 Drag & Drop
本文介绍了在 React 中实现拖拽功能的方法,包括使用原生 HTML5 Drag and Drop API 和第三方库 `react-dnd`。通过代码示例详细讲解了基本的拖拽实现、常见问题及易错点,帮助开发者更好地理解和应用拖拽功能。
96 9
|
3月前
|
移动开发 前端开发
react项目配合diff实现文件对比差异功能
在React项目中,可以使用`diff`库实现文件内容对比差异功能。首先安装`diff`库,然后在组件中引入并使用`Diff.diffChars`或`Diff.diffLines`方法比较文本差异。通过循环遍历`diff`结果,可以生成不同样式的HTML元素来高亮显示文本差异。
147 1
react项目配合diff实现文件对比差异功能
|
3月前
针对react-captcha-code第三方插件不能每次触发深颜色的处理
针对`react-captcha-code`插件生成浅色验证码的问题,通过改造成class组件`MyCaptcha.js`,自定义颜色和验证码生成逻辑,解决了颜色问题。
35 1
针对react-captcha-code第三方插件不能每次触发深颜色的处理
|
3月前
|
前端开发 Python
React技术栈-React路由插件之自定义组件标签
关于React技术栈中React路由插件自定义组件标签的教程。
62 4
React技术栈-React路由插件之自定义组件标签
|
3月前
|
前端开发
React 中购物车功能实现(全选多选功能实现)
React 中购物车功能实现(全选多选功能实现)
42 2
|
3月前
|
前端开发 程序员 API
React技术栈-React路由插件之react-router的基本使用
这篇博客介绍了React路由插件react-router的基本使用,包括其概念、API、以及如何通过实战案例在React应用中实现SPA(单页Web应用)的路由管理。
81 9
|
3月前
|
存储 移动开发 前端开发
初探react,用react实现一个todoList功能
该文章通过创建一个TodoList应用来介绍React的基础知识,包括环境搭建、组件创建、状态管理和事件处理,并演示了如何使用React Hooks来优化组件逻辑。
|
4月前
|
前端开发
|
4月前
|
存储 JavaScript 前端开发
探索React状态管理:Redux的严格与功能、MobX的简洁与直观、Context API的原生与易用——详细对比及应用案例分析
【8月更文挑战第31天】在React开发中,状态管理对于构建大型应用至关重要。本文将探讨三种主流状态管理方案:Redux、MobX和Context API。Redux采用单一存储模型,提供预测性状态更新;MobX利用装饰器语法,使状态修改更直观;Context API则允许跨组件状态共享,无需第三方库。每种方案各具特色,适用于不同场景,选择合适的工具能让React应用更加高效有序。
91 0