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

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

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

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

官網(wǎng)

一、核心特點

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

二、核心功能

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

三、適用場景

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

四、安裝使用

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

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

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

    npm install interactjs
    

五、相關(guān)屬性

1、拖拽(draggable)核心屬性

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

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

2、縮放(resizable)核心屬性

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

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

3、通用事件屬性

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

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

4、注意事項(1.10.7 版本)

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

六、拖拽示例

// 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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

    JavaScript仿微信打飛機游戲

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

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

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

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

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

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

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

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

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

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

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

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

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

    JavaScript?中的運算符和表達式介紹(二)

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

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

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

最新評論

安溪县| 潜山县| 舟曲县| 洛浦县| 建宁县| 巩留县| 沁阳市| 古交市| 琼中| 景德镇市| 永州市| 桓仁| 瓦房店市| 建德市| 龙海市| 韩城市| 洮南市| 内丘县| 石台县| 夹江县| 贵阳市| 贡嘎县| 广饶县| 张掖市| 广安市| 五常市| 东乌珠穆沁旗| 乳山市| 宜兰县| 灵川县| 米易县| 富蕴县| 理塘县| 道孚县| 淅川县| 博客| 布尔津县| 淮北市| 呼伦贝尔市| 佛学| 深州市|