React Draggable插件如何實(shí)現(xiàn)拖拽功能
1.下載Draggable插件
npm install react-draggable
2.引入Draggable插件
// 引入拖拽插件 import Draggable from 'react-draggable';
3.設(shè)置一個(gè)div
并設(shè)置樣式,并用Draggable包裹起來(lái)
import "./index.css" // 引入拖拽插件 import Draggable from 'react-draggable'; export default function IndexPage() { return ( <div> {/* 給他設(shè)置一個(gè)父級(jí) */} <div className="fu"> <Draggable > <div className="top"> 這是上面的頁(yè)面 </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; }
這樣就可以進(jìn)行全局的拖拽,(他是可以拖拽出到屏幕外面的)
4.設(shè)置拖拽的范圍
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"> 這是上面的頁(yè)面 </div> </Draggable> </div> </div> ); }
這樣就是只能在父級(jí)div中進(jìn)行拖拽
或者可以寫成
import "./index.css" // 引入拖拽插件 import Draggable from 'react-draggable'; export default function IndexPage() { return ( <div> <div className="fu"> <Draggable bounds={".fu"} > <div className="top"> 這是上面的頁(yè)面 </div> </Draggable> </div> </div> ); }
5.Draggable常用props
allowAnyClick: boolean // 默認(rèn)false,設(shè)為true非左鍵可實(shí)現(xiàn)點(diǎn)擊拖拽 axis: string // 'x':x軸方向拖拽、'y':y軸方向拖拽、'none':禁止拖拽 bounds: { left: number, top: number, right: number, bottom: number } | string // 限定移動(dòng)的邊界,接受值: //(1)'parent':在移動(dòng)元素的offsetParent范圍內(nèi) //(2)一個(gè)選擇器,在指定的Dom節(jié)點(diǎn)內(nèi) //(3){ left: number, top: number, right: number, bottom: number }對(duì)象,限定每個(gè)方向可以移動(dòng)的距離 cancel:制定給一個(gè)選擇器組織drag初始化,例如'.body' defaultClassName:string // 拖拽ui類名,默認(rèn)'react-draggable' drfaultClassNameDragging:string // 正在拖拽ui類名,默認(rèn)'eact-draggable-dragging' defaultClassNameDragged:string //拖拽后的類名,默認(rèn)'react-draggable-dragged' defaultPosition:{ x: number, y: number } // 起始x和y的位置 disabled:boolean // true禁止拖拽任何元素 grid:[number, number] // 正在拖拽的網(wǎng)格范圍 handle:string // 初始拖拽的的選擇器'.handle' offsetParent:HTMLElement // 拖拽的offsetParent onMouseDown: (e: MouseEvent) => void // 鼠標(biāo)按下的回調(diào) onStart: DraggableEventHandler // 開始拖拽的回調(diào) onDrag:DraggableEventHandler // 拖拽時(shí)的回調(diào) onStop:DraggableEventHandler // 拖拽結(jié)束的回調(diào) position: {x: number, y: number} // 控制元素的位置 positionOffset: {x: number | string, y: number | string} // 相對(duì)于起始位置的偏移 scale:number // 定義拖拽元素的縮放
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
React?中如何將CSS?visibility?屬性設(shè)置為?hidden
這篇文章主要介紹了React中如何將CSS?visibility屬性設(shè)置為?hidden,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05React?中hooks之?React.memo?和?useMemo用法示例總結(jié)
React.memo是一個(gè)高階組件,用于優(yōu)化函數(shù)組件的性能,通過(guò)記憶組件渲染結(jié)果來(lái)避免不必要的重新渲染,合理使用React.memo和useMemo可以顯著提升React應(yīng)用的性能,本文介紹React?中hooks之?React.memo?和?useMemo用法總結(jié),感興趣的朋友一起看看吧2025-01-01React服務(wù)端渲染和同構(gòu)的實(shí)現(xiàn)
本文主要介紹了React服務(wù)端渲染和同構(gòu)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04React從插槽、路由、redux的詳細(xì)過(guò)程
React需要自己開發(fā)支持插槽功能,原理:父組件組件中寫入的HTML,可以傳入子組件的props中,這篇文章主要介紹了React從插槽、路由、redux的詳細(xì)過(guò)程,需要的朋友可以參考下2022-10-10如何在 React 中調(diào)用多個(gè) onClick 函數(shù)
這篇文章主要介紹了如何在React中調(diào)用多個(gè)onClick函數(shù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11react-native 完整實(shí)現(xiàn)登錄功能的示例代碼
本篇文章主要介紹了react-native 完整實(shí)現(xiàn)登錄功能的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09react+zarm實(shí)現(xiàn)底部導(dǎo)航欄的示例代碼
本文主要介紹了react?+?zarm?實(shí)現(xiàn)底部導(dǎo)航欄的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05