moveable組件學(xué)習(xí)筆記三: resize更改大小

resize 更改元素大小

https://daybrush.com/moveable/release/latest/doc/Moveable.Resizable.html

1 屬性

this.moveable = new Moveable(
  this.$refs.container, // moveable元素的父元素
  {
      className: 'draggable', // 可交互組件的class名稱
      target: this.$refs.example, // 響應(yīng)moveable操作的元素
      origin: false, // moveable元素的中心點(diǎn)是否可見,default: true
      /**更改大小屬性 */
      resizable: true, // 是否支持更改大小
      keepRatio: false, // 是否等比例更改大小, default: false
      renderDirections:  ["nw", "ne", "sw", "se"], // resize的句柄顯示, default: ["n", "nw", "ne", "s", "se", "sw", "e", "w"]
      throttleResize: 100, // resize時(shí)節(jié)流的單位(px),即每次resize的最小變動(dòng)為100px, 默認(rèn)不節(jié)流
  }
);

2 事件

resize事件有resizeStart,resize,resizeEnd三種,通過moveable實(shí)例的on方法添加監(jiān)聽事件,返回值event

  • resize
this.moveable
  .on(
    "resize",
    ({
      currentTarget, // moveable實(shí)例,即this.moveable
      moveable, // moveable的manager對(duì)象, const manager = this.moveable.getManager();
      target, // DOM 初始化moveable的target元素
      clientX, // number 鼠標(biāo)所在屏幕的橫坐標(biāo)
      clientY, // number 鼠標(biāo)實(shí)例所在屏幕的縱坐標(biāo)
      datas,
      inputEvent, // Event 鼠標(biāo)事件mousemove
      direction, // // [numberX, numberY] 用來判斷所操作的句柄: [1,1]表示操作的句柄為右下,[-1,-1]表示操作的句柄是左上, [1,0]表示操作的句柄為右側(cè)邊的中點(diǎn)
      width, // number 元素(target)的css寬度
      height, // number 元素(target)的css高度
      offsetWidth, // number 元素(target)的offsetWidth(padding + width + border)
      offsetHeight, // number 元素(target)的offsetHeight(padding + height + border)
      dist, // number[] 元素的[width,height]相對(duì)于原始數(shù)據(jù)的變化數(shù)據(jù)[x,y]
      delta, // number[] 元素的[width,height]的相對(duì)上一次數(shù)據(jù)的數(shù)據(jù)[deltaX,deltaY]
      isPinch, // 元素是否被壓縮,不包括resize,scale所引起的形變[**暫未證實(shí)具體作用**]
      drag, // 元素的拖拽事件,同onDrag的參數(shù)
    }) => {
      target.style.width = `${width}px`;
      target.style.height = `${height}px`;
      target.style.transform = `translate(${drag.beforeTranslate[0]}px, ${drag.beforeTranslate[1]}px)`;
    }
  )
  • resizeStart
this.moveable
  .on(
    "resizeStart",
    ({
      dragStart, // 同dragStart事件
      set, // (size: number[width, height]) => any, 設(shè)置元素的style寬高
      setMin, // (minSize: number[minWidth, minHeight]) => any, 設(shè)置元素的style最小寬高
      setMax, // (minSize: number[maxWidth, maxHeight]) => any, 設(shè)置元素的style最大寬高
      setOrigin, // (origin: Array<string | number>) => any, 設(shè)置css起點(diǎn), (default: % %)[**暫未發(fā)現(xiàn)實(shí)際作用**]
      setFixedDirection, // (startDirecition: number[]) => any, 設(shè)置resize的固定方向; 默認(rèn)為反方向:即往左或往上修改元素大小為負(fù)值,預(yù)期結(jié)果為往左或往上更改元素寬高;如果設(shè)置為正值,則元素寬高只能往右或往下延展,即使操作是往左或往上修改元素大小
      setRatio, // (ratio: number) => any, 設(shè)置resize的比例,僅在keepRatio屬性為true時(shí)生效, 默認(rèn)為offsetWidth / offsetHeight
      currentTarget, 
      moveable, 
      target, 
      clientX, 
      clientY, 
      datas,
      inputEvent, 
      direction, 
    }) => {
      console.log('resizeStart')
    }
  )
  • resizeEnd
this.moveable
    .on(
          "resizeEnd",
          ({
            lastEvent, // 最后一個(gè)拖動(dòng)的事件,如果moveable實(shí)例未被執(zhí)行resize操作,則為undefined
            isDrag,  // boolean moveable實(shí)例是否被拖動(dòng)了
            isDouble,  // boolean moveable實(shí)例是否被雙擊
            currentTarget, 
            moveable, 
            target, 
            clientX, 
            clientY, 
            datas,
            inputEvent,
          }) => {
            
          }
        )

3 方法

  • request({direction, deltaWidth, deltaHeight, offsetWidth, offsetHeight, isInstant})
    direction // number[], default:[1, 1] resize的方向[暫時(shí)未發(fā)現(xiàn)實(shí)際作用]
    deltaWidth,deltaHeight // number, resize后的元素相對(duì)于resize前的元素的寬高變化的數(shù)據(jù)(單位:px)
    offsetWidth, offsetHeight// number, 元素resize后的絕對(duì)(實(shí)際)寬高(單位:px)
    isInstant, // boolean, 是否立即執(zhí)行request和requestEnd
dragRequest() {
      const requester = this.moveable.request("draggable");
      requester.request({ deltaX: 10, deltaY: 10 });
      requester.requestEnd();
    },
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容