Skip to content
On this page

@sepveneto/free-dom

free-dom

主要用于快速实现dom元素的拖曳和缩放功能,利用FreeScene可以额外实现边缘吸附和区域限制功能。

INFO

缩放和拖曳的最小移动单位是1px

DANGER

请务必不要在.vv-free-dom--scene上设置影响其宽度或高度的样式,比如border,否则会导致其陷入不断计算宽度和高度的死循环中

属性

INFO

如果元素创建之初可以确定它的大小,可以禁用autoSize来优化性能

名称类型必填默认值可选值说明
v-model/model-valueobject--元素的位置及尺寸
v-model:x/xnumber--元素在x轴上的位置
v-model:y/ynumber--元素在y轴上的位置
v-model:w/wnumber--元素的宽度
v-model:h/hnumber--元素的高度
activeboolean-boolean手动控制元素的选中与否,仅影响样式
lock-aspect-ratiobooleanfalse-缩放时是否按当前宽高比计算
handlestring--通过class或id指定允许触发拖曳的元素
maskbooleantrue-拖曳元素是否有遮罩层
drag-start-fnCoreFnCallback--拖曳开始的回调函数
drag-fnCoreFnCallback--拖曳时的回调函数
drag-stop-fnCoreFnCallback--拖曳结束的回调函数
resize-start-fnResizeFnCallback--缩放开始的回调函数
resize-fnResizeFnCallback--缩放时的回调函数
resize-stop-fnResizeFnCallback--缩放结束的回调函数
auto-sizebooleantrue-是否在初次渲染时根据当时的元素尺寸自动计算宽高
min-widthnumber50-缩放的最小宽度,单位px
min-heightnumber50-缩放的最小高度,单位px
disabled-dragbooleanfalse-是否禁用拖曳功能
disabled-resizebooleanfalse-是否禁用缩放功能
scalearray-enum允许缩放的方向
fix-non-monospacedbooleanfalse-是否在初次渲染是等待字体加载完成再计算尺寸(主要是针对非等宽字体)
keyboardbooleanfalse-是否允许通过键盘的方向键来控制选中元素的移动
disabled-selectbooleanfalse-是否屏蔽选中操作

方法

名称参数说明
syncSize-重新根据内部元素大小计算宽高(需要关闭auto-size

事件

名称参数说明
drop(evt: DragEvent) => void外部可拖曳元素被放置时触发
select(isSelect: boolean) => void元素被选中或取消选中时触发

free-scene 属性

名称类型必填默认值可选值说明
diffnumber2-触发吸附的距离,单位px
manual-diffbooleanfalse-开启后默认不会进行吸附,需要通过按住shift来暂时启用
show-linebooleantrue-显示对齐参考线
min-widthnumber50-元素缩放的最小宽度,单位px
min-heightnumber50-元素缩放的最小高度,单位px
fix-non-monospacedbooleanfalse-所有元素是否在初次渲染是等待字体加载完成再计算尺寸(主要是针对非等宽字体)
disabled-dragbooleanfalse-是否禁用所有元素的拖曳功能
disabled-resizebooleanfalse-是否禁用所有元素的缩放功能
disabled-selectbooleanfalse-是否禁用所有元素的选中功能
disabled-batchbooleanfalse-是否禁用批量选择
scalearray-['t', 'r', 'l', 'b', 'lt', 'lb', 'rt', 'rb']所有元素允许缩放的方向
lock-aspect-ratiobooleanfalse-所有元素缩放时是否按当前宽高比计算
auto-expandboolean | number | Object--是否在元素到达边界时自动扩展宽度或高度, 如果设置开启,默认自动扩展10px

free-scene 事件

事件名详情类型
batch-select批量框选结束时触发(pos: Pos) => void

grid-layout

严重参考了react-grid-layout的代码,同时只实现了部分功能。

属性

名称类型必填默认值可选值说明
v-model/model-valueobject✔️️--布局参数
colsnumber12-栅格的列数
max-rowsnumberInfinity-栅格的行数
min-wnumber1-元素缩放的最小宽度
min-hnumber1-元素缩放的最小高度
row-heightnumber150-栅格的行高
marginnumber[][10, 10]-元素之间的间隔,[水平方向,垂直方向]
container-paddingnumber[]--布局的内边距,[水平方向,垂直方向]
disabled-dragbooleanfalse-禁用元素拖曳
disabled-resizebooleanfalse-禁用元素缩放
collisionbooleanfalse-启用元素碰撞

item属性

名称类型必填默认值可选值说明
istring | number✔️--布局元素的唯一标识
xnumber--x轴的位置
ynumber--y轴的位置
wnumber--宽度
hnumber--高度
staticboolean--是否为静态元素
scalearray['rb']['t', 'r', 'l', 'b', 'lt', 'lb', 'rt', 'rb']元素允许缩放的方向