美文网首页
moveable组件学习笔记三: resize更改大小

moveable组件学习笔记三: resize更改大小

作者: 羊驼626 | 来源:发表于2021-10-27 15:23 被阅读0次

    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, // 响应moveable操作的元素
          origin: false, // moveable元素的中心点是否可见,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时节流的单位(px),即每次resize的最小变动为100px, 默认不节流
      }
    );
    

    2 事件

    resize事件有resizeStart,resize,resizeEnd三种,通过moveable实例的on方法添加监听事件,返回值event

    • resize
    this.moveable
      .on(
        "resize",
        ({
          currentTarget, // moveable实例,即this.moveable
          moveable, // moveable的manager对象, const manager = this.moveable.getManager();
          target, // DOM 初始化moveable的target元素
          clientX, // number 鼠标所在屏幕的横坐标
          clientY, // number 鼠标实例所在屏幕的纵坐标
          datas,
          inputEvent, // Event 鼠标事件mousemove
          direction, // // [numberX, numberY] 用来判断所操作的句柄: [1,1]表示操作的句柄为右下,[-1,-1]表示操作的句柄是左上, [1,0]表示操作的句柄为右侧边的中点
          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]相对于原始数据的变化数据[x,y]
          delta, // number[] 元素的[width,height]的相对上一次数据的数据[deltaX,deltaY]
          isPinch, // 元素是否被压缩,不包括resize,scale所引起的形变[**暂未证实具体作用**]
          drag, // 元素的拖拽事件,同onDrag的参数
        }) => {
          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, 设置元素的style宽高
          setMin, // (minSize: number[minWidth, minHeight]) => any, 设置元素的style最小宽高
          setMax, // (minSize: number[maxWidth, maxHeight]) => any, 设置元素的style最大宽高
          setOrigin, // (origin: Array<string | number>) => any, 设置css起点, (default: % %)[**暂未发现实际作用**]
          setFixedDirection, // (startDirecition: number[]) => any, 设置resize的固定方向; 默认为反方向:即往左或往上修改元素大小为负值,预期结果为往左或往上更改元素宽高;如果设置为正值,则元素宽高只能往右或往下延展,即使操作是往左或往上修改元素大小
          setRatio, // (ratio: number) => any, 设置resize的比例,仅在keepRatio属性为true时生效, 默认为offsetWidth / offsetHeight
          currentTarget, 
          moveable, 
          target, 
          clientX, 
          clientY, 
          datas,
          inputEvent, 
          direction, 
        }) => {
          console.log('resizeStart')
        }
      )
    
    • resizeEnd
    this.moveable
        .on(
              "resizeEnd",
              ({
                lastEvent, // 最后一个拖动的事件,如果moveable实例未被执行resize操作,则为undefined
                isDrag,  // boolean moveable实例是否被拖动了
                isDouble,  // boolean moveable实例是否被双击
                currentTarget, 
                moveable, 
                target, 
                clientX, 
                clientY, 
                datas,
                inputEvent,
              }) => {
                
              }
            )
    

    3 方法

    • request({direction, deltaWidth, deltaHeight, offsetWidth, offsetHeight, isInstant})
      direction // number[], default:[1, 1] resize的方向[暂时未发现实际作用]
      deltaWidth,deltaHeight // number, resize后的元素相对于resize前的元素的宽高变化的数据(单位:px)
      offsetWidth, offsetHeight// number, 元素resize后的绝对(实际)宽高(单位:px)
      isInstant, // boolean, 是否立即执行request和requestEnd
    dragRequest() {
          const requester = this.moveable.request("draggable");
          requester.request({ deltaX: 10, deltaY: 10 });
          requester.requestEnd();
        },
    

    相关文章

      网友评论

          本文标题:moveable组件学习笔记三: resize更改大小

          本文链接:https://www.haomeiwen.com/subject/nxnualtx.html