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 // 定义拖拽元素的缩放


相关文章
|
1月前
|
前端开发 测试技术 容器
React 快速实现拖拽改变容器宽高度
React 快速实现拖拽改变容器宽高度
73 0
|
1月前
|
前端开发
React查询、搜索类功能的实现
React查询、搜索类功能的实现
35 0
|
1月前
|
前端开发
React 仿淘宝图片放大镜功能
React 仿淘宝图片放大镜功能
|
1月前
|
前端开发 数据可视化 API
前端react 18.2整合ckeditor富文本编辑器——配置插件、自定义toolbar工具栏(二)
前端react 18.2整合ckeditor富文本编辑器——配置插件、自定义toolbar工具栏
94 0
前端react 18.2整合ckeditor富文本编辑器——配置插件、自定义toolbar工具栏(二)
|
1月前
|
存储 前端开发 JavaScript
【亮剑】在React中,处理`onScroll`事件可实现复杂功能如无限滚动和视差效果
【4月更文挑战第30天】在React中,处理`onScroll`事件可实现复杂功能如无限滚动和视差效果。类组件和函数组件都能使用`onScroll`,通过`componentDidMount`和`componentWillUnmount`或`useEffect`添加和移除事件监听器。性能优化需注意节流、防抖、虚拟滚动、避免同步计算和及时移除监听器。实战案例展示了如何用Intersection Observer和`onScroll`实现无限滚动列表,当最后一项进入视口时加载更多内容。合理利用滚动事件能提升用户体验,同时要注意性能优化。
|
1月前
|
前端开发 JavaScript CDN
前端react 18.2整合ckeditor富文本编辑器——配置插件、自定义toolbar工具栏(一)
前端react 18.2整合ckeditor富文本编辑器——配置插件、自定义toolbar工具栏
73 0
|
1月前
|
JavaScript 前端开发
在React和Vue中实现锚点定位功能
在React和Vue中实现锚点定位功能
49 1
|
1月前
|
前端开发 JavaScript API
React拖拽实践
React拖拽实践
33 0
|
1月前
|
前端开发 JavaScript API
React拖拽实践
React拖拽实践
|
1月前
|
前端开发 JavaScript
React vscode 开发插件与代码补全提示
React vscode 开发插件与代码补全提示
126 0