最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript前端拖拽插件interact.js交互式操作方法

 更新時(shí)間:2025年12月25日 08:48:25   作者:@菜菜_達(dá)  
interact.js是一個(gè)強(qiáng)大的JavaScript庫(kù),它提供了豐富的交互功能,其中元素縮放(Resizable)是其核心功能之一,這篇文章主要介紹了JavaScript前端拖拽插件interact.js交互式操作方法的相關(guān)資料,需要的朋友可以參考下

interact.js 是一款輕量且功能強(qiáng)大的 JavaScript 拖拽交互庫(kù),核心用于實(shí)現(xiàn)元素的拖拽、縮放、旋轉(zhuǎn)等交互式操作。

官網(wǎng)

一、核心特點(diǎn)

  • 輕量無依賴,體積僅約 10KB(壓縮后),不依賴 jQuery 等框架。
  • 支持多端適配,兼容桌面端(鼠標(biāo))和移動(dòng)端(觸摸),適配主流瀏覽器。
  • 功能豐富,除基礎(chǔ)拖拽外,還支持元素縮放、旋轉(zhuǎn)、拖拽對(duì)齊、碰撞檢測(cè)等進(jìn)階功能。
  • 高度可定制,可通過配置限制拖拽范圍、設(shè)置縮放比例、自定義交互回調(diào)等。

二、核心功能

  1. 拖拽(Draggable):支持元素自由拖拽、限制拖拽方向(水平 / 垂直)、設(shè)置拖拽邊界。
  2. 縮放(Resizable):允許通過拖拽元素邊緣 / 角落調(diào)整尺寸,可限制縮放比例和方向。
  3. 旋轉(zhuǎn)(Rotatable):支持鼠標(biāo) / 觸摸控制元素旋轉(zhuǎn),可設(shè)置旋轉(zhuǎn)中心和角度范圍。
  4. 交互輔助:提供拖拽對(duì)齊(吸附到網(wǎng)格 / 其他元素)、碰撞檢測(cè)、拖拽排序等實(shí)用功能。

三、適用場(chǎng)景

  • 頁(yè)面組件拖拽排序(如儀表盤、表單元素配置)。
  • 可視化工具(如圖表編輯器、流程圖制作工具)。
  • 響應(yīng)式界面調(diào)整(如可縮放的面板、彈窗)。
  • 移動(dòng)端交互組件(如拖拽式菜單、滑動(dòng)卡片)。

四、安裝使用

首先需要引入 interact.js 庫(kù),有兩種方式:

  1. CDN 引入(推薦快速測(cè)試):

    <script src="https://cdn.jsdelivr.net/npm/interactjs/dist/interact.min.js"></script>
    
  2. npm 安裝(適合項(xiàng)目開發(fā)):

    npm install interactjs
    

五、相關(guān)屬性

1、拖拽(draggable)核心屬性

通過 interact(selector).draggable({ /* 配置 */ }) 定義,主要屬性包括:

屬性名類型 / 值說明
enabledboolean是否啟用拖拽(默認(rèn) true,設(shè)為 false 可動(dòng)態(tài)禁用)。
inertiaboolean / 對(duì)象啟用慣性拖拽(拖拽結(jié)束后繼續(xù)滑動(dòng))。- 為對(duì)象時(shí)可配置:- resistance:阻力(0~1,值越小慣性越強(qiáng),默認(rèn) 0.1);- minSpeed:觸發(fā)慣性的最小速度(默認(rèn) 100px/s);- endSpeed:慣性結(jié)束時(shí)的速度閾值(默認(rèn) 10px/s)。
autoScrollboolean / 對(duì)象拖拽到容器邊緣時(shí)自動(dòng)滾動(dòng)容器(如頁(yè)面、滾動(dòng)框)。- 為對(duì)象時(shí)可配置:- speed:滾動(dòng)速度(默認(rèn) 50px/s);- margin:觸發(fā)滾動(dòng)的邊緣距離(默認(rèn) 60px);- container:指定滾動(dòng)容器(默認(rèn) window)。
restrict對(duì)象限制拖拽范圍,支持:- restriction:限制區(qū)域(parent/ 選擇器 / 坐標(biāo)對(duì)象 {left, top, right, bottom});- endOnlytrue 時(shí)僅在拖拽結(jié)束后校正位置(默認(rèn)實(shí)時(shí)限制);- elementRect:元素參與限制的區(qū)域(如 {left:0, right:1, top:0, bottom:1} 代表整個(gè)元素)。
axis'x' / 'y' / null限制拖拽方向(x 水平,y 垂直,null 自由拖拽,默認(rèn) null)。
snap對(duì)象拖拽時(shí)吸附到網(wǎng)格或元素,支持:- targets:吸附目標(biāo)(如 interact.snappers.grid({x:20, y:20}) 表示 20px 網(wǎng)格);- offset:吸附偏移量(如 {x:10, y:10});- relativePoints:元素上的吸附參考點(diǎn)(如 [{x:0.5, y:0.5}] 為中心點(diǎn))。
allowFrom選擇器僅允許通過元素內(nèi)的指定子元素觸發(fā)拖拽(如 .handle 表示僅通過手柄拖拽)。
ignoreFrom選擇器忽略元素內(nèi)的指定子元素(不觸發(fā)拖拽,如 .no-drag)。

2、縮放(resizable)核心屬性

通過 interact(selector).resizable({ /* 配置 */ }) 定義,主要屬性包括:

屬性名類型 / 值說明
enabledboolean是否啟用縮放(默認(rèn) true)。
edges對(duì)象允許縮放的邊緣({left, right, top, bottom},設(shè)為 true 啟用對(duì)應(yīng)邊緣)。例:{left: true, right: true, bottom: true} 允許左、右、下邊緣縮放。
inertiaboolean / 對(duì)象縮放慣性(類似拖拽,結(jié)束后繼續(xù)微小縮放),配置同拖拽的 inertia。
restrict對(duì)象限制縮放范圍,支持:- min:最小尺寸({width, height});- max:最大尺寸({width, height});- ratio:寬高比(如 16/9 鎖定比例)。
snap對(duì)象縮放到指定網(wǎng)格尺寸,如 {targets: [interact.snappers.grid({width:50, height:50})]} 表示寬高按 50px 遞增。
allowFrom / ignoreFrom選擇器同拖拽,控制觸發(fā)縮放的子元素。

3、通用事件屬性

所有交互(拖拽、縮放、旋轉(zhuǎn))都支持通過 .on(eventName, callback) 監(jiān)聽事件,常用事件:

事件名觸發(fā)時(shí)機(jī)回調(diào)參數(shù)(event)關(guān)鍵信息
[type]start交互開始時(shí)(如 dragstartevent.target(目標(biāo)元素)、初始坐標(biāo) / 角度。
[type]move交互過程中(如 dragmoveevent.dx/dy(位移變化)、event.angle(角度變化)等。
[type]end交互結(jié)束時(shí)(如 dragendevent.velocity(結(jié)束時(shí)速度)、最終狀態(tài)信息。

4、注意事項(xiàng)(1.10.7 版本)

  1. 該版本依賴元素的 transform 屬性計(jì)算位置,需確保元素未被其他 transform 樣式(如 scale)干擾,否則可能導(dǎo)致位置偏移。
  2. autoScroll 對(duì)嵌套滾動(dòng)容器的支持有限,復(fù)雜場(chǎng)景可能需要手動(dòng)處理滾動(dòng)邏輯。

六、拖拽示例

// html
<div id="content"></div>
// js
let position = { x: 0, y: 0 };
    interact('#content').draggable({
        ignoreFrom: ".restore-drag,.tc-fz-input",// 忽略的類
        listeners: {
            start:(event) {},
            move (event) {
                position.x += event.dx;
                position.y += event.dy;
                event.target.style.transform = `translate(${position.x}px, ${position.y}px)`;            },
            end(event) {}   
        },
    });

總結(jié) 

到此這篇關(guān)于JavaScript前端拖拽插件interact.js交互式操作方法的文章就介紹到這了,更多相關(guān)interact.js前端拖拽插件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js創(chuàng)建對(duì)象的方法匯總

    js創(chuàng)建對(duì)象的方法匯總

    這篇文章主要介紹了js創(chuàng)建對(duì)象的方法,js一個(gè)有三種方法創(chuàng)建對(duì)象,這里為大家做一個(gè)總結(jié),感興趣的小伙伴們可以參考一下
    2016-01-01
  • JavaScript仿微信打飛機(jī)游戲

    JavaScript仿微信打飛機(jī)游戲

    這篇文章主要為大家詳細(xì)介紹了JavaScript仿微信打飛機(jī)游戲的相關(guān)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • JavaScript日期和時(shí)間的格式化及其它常用處理方法

    JavaScript日期和時(shí)間的格式化及其它常用處理方法

    這篇文章主要給大家介紹了關(guān)于JavaScript日期和時(shí)間的格式化及其它常用處理方法,JavaScript中可以使用Date對(duì)象來表示日期和時(shí)間,如果需要格式化日期和時(shí)間,可以使用Date對(duì)象的幾個(gè)方法和一些字符串操作方法來實(shí)現(xiàn),需要的朋友可以參考下
    2023-09-09
  • ES6新特性八:async函數(shù)用法實(shí)例詳解

    ES6新特性八:async函數(shù)用法實(shí)例詳解

    這篇文章主要介紹了ES6新特性八:async函數(shù)用法,結(jié)合實(shí)例形式分析了async函數(shù)的功能、原理、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-04-04
  • js jquery 獲取某一元素到瀏覽器頂端的距離實(shí)現(xiàn)方法

    js jquery 獲取某一元素到瀏覽器頂端的距離實(shí)現(xiàn)方法

    今天小編就為大家分享一篇js jquery 獲取某一元素到瀏覽器頂端的距離實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • JavaScript中的稀疏數(shù)組與密集數(shù)組[譯]

    JavaScript中的稀疏數(shù)組與密集數(shù)組[譯]

    一般來說,JavaScript中的數(shù)組是稀疏的,也就是說,數(shù)組中的元素之間可以有空隙,因?yàn)橐粋€(gè)數(shù)組其實(shí)就是一個(gè)鍵值映射.本文解釋了如何創(chuàng)建稀疏數(shù)組和不稀疏的數(shù)組
    2012-09-09
  • js實(shí)現(xiàn)文本框?qū)挾茸赃m應(yīng)文本寬度的方法

    js實(shí)現(xiàn)文本框?qū)挾茸赃m應(yīng)文本寬度的方法

    這篇文章主要介紹了js實(shí)現(xiàn)文本框?qū)挾茸赃m應(yīng)文本寬度的方法,可實(shí)現(xiàn)根據(jù)文本框內(nèi)容動(dòng)態(tài)改變寬度的功能,涉及javascript動(dòng)態(tài)操作頁(yè)面元素屬性的技巧,需要的朋友可以參考下
    2015-08-08
  • 實(shí)現(xiàn)連綴調(diào)用的map方法(prototype)

    實(shí)現(xiàn)連綴調(diào)用的map方法(prototype)

    實(shí)現(xiàn)連綴調(diào)用的map方法(prototype),需要學(xué)習(xí)的朋友可以參考下。
    2009-08-08
  • JavaScript?中的運(yùn)算符和表達(dá)式介紹(二)

    JavaScript?中的運(yùn)算符和表達(dá)式介紹(二)

    這篇文章主要介紹了JavaScript?中的運(yùn)算符和表達(dá)式介紹,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • 一文詳解JavaScript中的URL編碼和解碼

    一文詳解JavaScript中的URL編碼和解碼

    在本文中,我們將探討在 JavaScript 中處理 URL 的現(xiàn)代技術(shù),并回答與在 JavaScript 中編碼和解碼 URL 相關(guān)的問題,文中通過代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-03-03

最新評(píng)論

惠东县| 滨州市| 濉溪县| 保山市| 贵溪市| 景东| 吕梁市| 扎囊县| 长岛县| 葵青区| 徐闻县| 海淀区| 隆昌县| 冷水江市| 堆龙德庆县| 斗六市| 淅川县| 凤庆县| 娄底市| 鄂托克前旗| 嘉荫县| 闽清县| 平南县| 巴林左旗| 临湘市| 吴堡县| 金溪县| 梓潼县| 哈密市| 千阳县| 青海省| 龙胜| 洞头县| 建水县| 巴中市| 宜兰县| 东乌珠穆沁旗| 利津县| 杨浦区| 沾化县| 桦川县|