低代码平台(三)- 画布编辑器-大屏版(触摸板画布拖拽缩放,撤销,组件拖拽,旋转,复制粘贴,成组)

464 阅读2分钟

上一篇文章低代码平台(二)-组件版本管理(腾讯云)
在线体验编辑器
模板编辑
模板预览

Snipaste_2024-01-28_11-27-07.png

前言

市面上的低代码平台很多,有操作简单,快速搭建单一页面的,有配置繁多灵活能实现各种交互逻辑的,低代码平台的目的是提高工作效率和降低成本,我一直认为没有一个完美的低代码平台,只有最适合的低代码平台,根据当前业务量身定制才能把低代码的作用最大化。

下面介绍的是一种适合用在像大屏这样屏幕尺寸相对固定,数据展示型的场景。

画布触摸板拖拽缩放&长按space鼠标拖拽&长按ctrl鼠标缩放

1.触摸板&长按ctrl鼠标缩放

触摸板的事件和鼠标滚轮是一样的,所以我们监听wheel事件做处理。 e.deltaY和e.deltaX是手指移动的距离增值,所以只要每次事件触发的时候修改画布的translate属性即可改变画布位置。
我们可以通过事件属性e.ctrlKey判断当前手指是双指移动还是缩放,true的时候e.deltaY为双指张开的增值,进而修改scale值缩放画布。注:触发的事件等同于长按ctrl鼠标缩放

ele.addEventListener('wheel', e => {
    e.preventDefault()
    if (e.ctrlKey) {
      // 缩放
      const deltaY = Math.abs(e.deltaY) > 10 ? e.deltaY / 70 : e.deltaY // deltaY大于10默认为鼠标缩放,除以70避免缩放过快
      editor..scale-=(deltaY/50)
    } else {
      // 拖拽
      editor.left-=e.deltaX
      edito.top-=e.deltaY    
    }
  })

2.长按space鼠标拖拽

这个就是普通的mousedown,mousemove,mouseup三件套了,只是只有当space长按时才触发mousemove事件,计算translate值。
通过监听keydown和keyup判断当前space键是否长按,只触发keydown没触发keyup为长按。

示例代码如下

组件拖入画布

待续。。。

组件拖拽旋转

待续。。。

右键菜单(包含快捷键)

待续。。。

1.复制粘贴

2.删除

3.移动层级

4.撤销

5.成组