vue项目中区域拖拽修改大小, Vue Grid Layout -️ 适用Vue.js的栅格布局系统

目录

一、安装

二、使用

三、属性介绍

GridLayout

GridItem

 四、事件介绍

GridLayout

layoutCreated

layoutBeforeMountEvent

layoutMountedEvent

layoutReadyEvent

layoutUpdatedEvent

breakpointChangedEvent

GridItem

moveEvent

resizeEvent

movedEvent

resizedEvent

containerResizedEvent


 

一、安装

vue2项目中:

npm install vue-grid-layout --save

vue3项目中:

npm install vue-grid-layout@3.0.0-beta1 --save

二、使用

在main.js中引入

// 引入import gridLayout from 'vue-grid-layout' // 挂载使用app.use(gridLayout)

在页面中使用

<template><div class="viewer"><el-button type="primary">测试按钮</el-button><grid-layout :layout.sync="state.layout" :col-num="12" :row-height="30" :is-draggable="true" :is-resizable="true":is-mirrored="false" :vertical-compact="true" :margin="[10, 10]" :use-css-transforms="true"><grid-item class="box" v-for="item in state.layout" :x="item.x" :y="item.y" :w="item.w" :h="item.h" :i="item.i" :key="item.i">{{ item.i }}</grid-item></grid-layout></div>
</template><script setup name="home">const state = reactive({layout: [{ "x": 0, "y": 0, "w": 2, "h": 4, "i": "first" },{ "x": 2, "y": 0, "w": 2, "h": 4, "i": "second" },{ "x": 4, "y": 0, "w": 2, "h": 4, "i": "third" },{ "x": 6, "y": 0, "w": 2, "h": 4, "i": "ringChart" },{ "x": 8, "y": 0, "w": 2, "h": 3, "i": "4" },{ "x": 10, "y": 0, "w": 2, "h": 3, "i": "5" },{ "x": 0, "y": 5, "w": 2, "h": 5, "i": "6" },{ "x": 2, "y": 5, "w": 2, "h": 5, "i": "7" },{ "x": 4, "y": 5, "w": 2, "h": 5, "i": "8" },{ "x": 6, "y": 3, "w": 2, "h": 4, "i": "9" },{ "x": 8, "y": 4, "w": 2, "h": 4, "i": "10" },{ "x": 10, "y": 4, "w": 2, "h": 4, "i": "11" },{ "x": 0, "y": 10, "w": 2, "h": 5, "i": "12" },{ "x": 2, "y": 10, "w": 2, "h": 5, "i": "13" },{ "x": 4, "y": 8, "w": 2, "h": 4, "i": "14" },{ "x": 6, "y": 8, "w": 2, "h": 4, "i": "15" },{ "x": 8, "y": 10, "w": 2, "h": 5, "i": "16" },{ "x": 10, "y": 4, "w": 2, "h": 2, "i": "17" },{ "x": 0, "y": 9, "w": 2, "h": 3, "i": "18" },{ "x": 2, "y": 6, "w": 2, "h": 2, "i": "19" }],
})onMounted(() => {console.log('state.layout',state.layout)
})</script><style scoped lang="scss">
.viewer {height: 100%;position: relative;.box{border: 1px solid #000;padding: 10px;background: #000;color: #fff;}
}
</style>

三、属性介绍

GridLayout
属性名称详情信息

layout

type: Array

required: true

这是栅格的初始布局。

数据源。值必须为 Array,其数据项为 Object。 每条数据项必须有 i, x, y, w 和 h 属性。 请参考下面的 GridItem

responsiveLayouts

type: Object

required: false

default : {}

如果 responsive 设置为 true,该配置将作为栅格中每个断点的初始布局。键值是断点名称,每项的值都是类似 layout 属性定义的数据结构,值必须为 Array,其数据项为 Object。例如: {lg: [layout items], md: [layout items]}。需要注意的是,在创建栅格布局后设置该属性无效。 在创建GridLayout之后设置prop无效。

colNum

type: Number

required: false

default: 12

定义栅格系统的列数,其值需为自然数。

rowHeight

type: Number

required: false

default: 150

每行的高度,单位像素。

maxRows

type: Number

required: false

default: Infinity

定义最大行数。

margin

type: Array

required: false

default: [10, 10]

定义栅格中的元素边距。

值必须是包含两个 Number的数组,数组中第一个元素表示水平边距,第二个表示垂直边距,单位为像素。

isDraggable

type: Boolean

required: false

default: true

标识栅格中的元素是否可拖拽。

isResizable

type: Boolean

required: false

default: true

标识栅格中的元素是否可调整大小。

isMirrored

type: Boolean

required: false

default: false

标识栅格中的元素是否可镜像反转。

autoSize

type: Boolean

required: false

default: true

标识容器是否自动调整大小。

verticalCompact

type: Boolean

required: false

default: true

标识布局是否垂直压缩。

preventCollision

type: Boolean

required: false

default: false

防止碰撞属性,值设置为ture时,栅格只能拖动至空白处。

useCssTransforms

type: Boolean

required: false

default: true

标识是否使用CSS属性 transition-property: transform;

responsive

type: Boolean

required: false

default: false

标识布局是否为响应式。

可以查看 responsiveLayouts、breakpoints和 cols

breakpoints

type: Object

required: false

default: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 }

为响应式布局设置断点。

可以查看 responsiveLayouts 和 cols

cols

type: Object

required: false

default: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }

设置每个断点对应的列数。

useStyleCursor

type: Boolean

required: false

default: true

标识是否使用动态鼠标指针样式。当拖动出现卡顿时,将此值设为 false也许可以缓解布局问题。 此属性无效

GridItem
属性名称详情信息

i

type: String

required: true

栅格中元素的ID。

x

type: Number

required: true

标识栅格元素位于第几列,需为自然数。

y

type: Number

required: true

标识栅格元素位于第几行,需为自然数。

w

type: Number

required: true

标识栅格元素的初始宽度,值为colWidth的倍数。

h

type: Number

required: true

标识栅格元素的初始高度,值为rowHeight的倍数。

minW

type: Number

required: false

default: 1

栅格元素的最小宽度,值为colWidth的倍数。

如果w小于minW,则minW的值会被w覆盖。

minH

type: Number

required: false

default: 1

栅格元素的最小高度,值为rowHeight的倍数。

如果h小于minH,则minH的值会被h覆盖。

maxW

type: Number

required: false

default: Infinity

栅格元素的最大宽度,值为colWidth的倍数。

如果w大于maxW,则maxW的值会被w覆盖。

maxH

type: Number

required: false

default: Infinity

栅格元素的最大高度,值为rowHeight的倍数。

如果h大于maxH,则maxH的值会被h覆盖。

isDraggable

type: Boolean

required: false

default: null

标识栅格元素是否可拖拽。如果值为null则取决于父容器。

isResizable

type: Boolean

required: false

default: null2

标识栅格元素是否可调整大小。如果值为null则取决于父容器。

static

type: Boolean

required: false

default: false

标识栅格元素是否为静态的(无法拖拽、调整大小或被其他元素移动)。

dragIgnoreFrom

type: String

required: false

default: 'a, button'

标识栅格元素中哪些子元素无法触发拖拽事件,值为css-like选择器。

请参考interact.js docs (opens new window)中的ignoreFrom

dragAllowFrom

type: String

required: false

default: null

标识栅格元素中哪些子元素可以触发拖拽事件,值为css-like选择器。

如果值为null则表示所有子元素(dragIgnoreFrom的除外)。

请参考interact.js docs (opens new window)中的allowFrom

resizeIgnoreFrom

type: String

required: false

default: 'a, button'

标识栅格元素中哪些子元素无法触发调整大小的事件,值为css-like选择器。

请参考interact.js docs (opens new window)中的ignoreFrom

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 四、事件介绍

GridLayout
layoutCreated

对应Vue生命周期的created   

    layoutCreatedEvent: function(newLayout){console.log("Created layout: ", newLayout)}

  

layoutBeforeMountEvent

对应Vue生命周期的beforeMount

    layoutBeforeMountEvent: function(newLayout){console.log("beforeMount layout: ", newLayout)}

 

layoutMountedEvent

对应Vue生命周期的mounted

    layoutMountedEvent: function(newLayout){console.log("Mounted layout: ", newLayout)}
layoutReadyEvent

当完成mount中的所有操作时生成的事件

    layoutReadyEvent: function(newLayout){console.log("Ready layout: ", newLayout)}

 

layoutUpdatedEvent

布局updated事件

更新事件(布局更新或栅格元素的位置重新计算)

    layoutUpdatedEvent: function(newLayout){console.log("Updated layout: ", newLayout)}
breakpointChangedEvent

断点更改事件

每次断点值由于窗口调整大小而改变

    /*** * @param newBreakpoint the breakpoint name* @param newLayout the chosen layout for the breakpoint* */breakpointChangedEvent: function(newBreakpoint, newLayout){console.log("BREAKPOINT CHANGED breakpoint=", newBreakpoint, ", layout: ", newLayout );},
GridItem
moveEvent

移动时的事件

    moveEvent: function(i, newX, newY){console.log("MOVE i=" + i + ", X=" + newX + ", Y=" + newY);},
resizeEvent

调整大小时的事件

    resizeEvent: function(i, newH, newW, newHPx, newWPx){console.log("RESIZE i=" + i + ", H=" + newH + ", W=" + newW + ", H(px)=" + newHPx + ", W(px)=" + newWPx);},
movedEvent

移动后的事件

    movedEvent: function(i, newX, newY){console.log("MOVED i=" + i + ", X=" + newX + ", Y=" + newY);},
resizedEvent

调整大小后的事件

    /*** * @param i the item id/index* @param newH new height in grid rows * @param newW new width in grid columns* @param newHPx new height in pixels* @param newWPx new width in pixels* */resizedEvent: function(i, newH, newW, newHPx, newWPx){console.log("RESIZED i=" + i + ", H=" + newH + ", W=" + newW + ", H(px)=" + newHPx + ", W(px)=" + newWPx);},
containerResizedEvent

栅格元素/栅格容器更改大小的事件(浏览器窗口或其他)

 /*** * @param i the item id/index* @param newH new height in grid rows * @param newW new width in grid columns* @param newHPx new height in pixels* @param newWPx new width in pixels* */containerResizedEvent: function(i, newH, newW, newHPx, newWPx){console.log("CONTAINER RESIZED i=" + i + ", H=" + newH + ", W=" + newW + ", H(px)=" + newHPx + ", W(px)=" + newWPx);},

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/709000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

echarts鼠标事件

鼠标事件支持方法 ECharts 支持常规的鼠标事件类型&#xff0c;包括 ‘click’、 ‘dblclick’、 ‘mousedown’、 ‘mousemove’、 ‘mouseup’、 ‘mouseover’、 ‘mouseout’、 ‘globalout’、 ‘contextmenu’ 事件 简单实例 // 基于准备好的dom&#xff0c;初始化EChar…

加州大学圣地亚哥分校伯克利分校联合英伟达最新开源!COLMAP-Free 3D Gaussian Splatting

作者&#xff1a;石昊 | 来源&#xff1a;3DCV 在公众号「3DCV」后台&#xff0c;回复「原论文」可获取论文pdf 添加微信&#xff1a;dddvision&#xff0c;备注&#xff1a;3D高斯&#xff0c;拉你入群。文末附行业细分群 从图像序列中进行相机姿态估计和新视角合成的问题。…

论文笔记:A survey on zero knowledge range proofs and applications

https://link.springer.com/article/10.1007/s42452-019-0989-z 描述了构建零知识区间证明&#xff08;ZKRP&#xff09;的不同策略&#xff0c;例如2001年Boudot提出的方案&#xff1b;2008年Camenisch等人提出的方案&#xff1b;以及2017年提出的Bulletproofs。 Introducti…

实现Spring的Ordered接口,控制Bean的初始化优先级最高

spring的Ordered接口有什么作用? 实现Spring框架中的Ordered接口可以控制对象的初始化顺序。Ordered接口定义了一个getOrder()方法,返回一个整数值,表示对象的顺序,数值越小,优先级越高,越先被初始化。 通过实现Ordered接口,可以确保在有多个对象需要按顺序初始化时,它…

Win11系统实现adb命令向安卓子系统安装APP

Win11系统实现通过adb命令向安卓子系统安装已下载好的apk包。 要实现以上目标&#xff0c;我们需要用到一个Android SDK 的组件Android SDK Platform-Tools &#xff01;这个组件呢其实是被包含在 Android Studio中的&#xff0c;如果你对安卓开发有所了解对此应该不会陌生&…

【Unity】如何在Unity 中创建带有缩放效果的滚动视图(具有吸附效果的实现与优化)?

效果预览&#xff1a; 目录 效果预览&#xff1a; 一、引言&#xff1a; 二、问题描述 三、解决方案&#xff1a; 三、优化&#xff1a; 四、结论 一、引言&#xff1a; 在Unity开发中&#xff0c;经常需要实现滚动视图&#xff08;ScrollView&#xff09;中的内容吸附到…

leetCode 第44天 | 518. 零钱兑换 II 377. 组合总和 Ⅳ 动态规划

518. 零钱兑换 II 先物品&#xff0c;后背包容量&#xff0c;组合数&#xff1b;先背包容量&#xff0c;后物品&#xff0c;排列数 感觉先物品后背包比较容易理解。对于有多少种情况这种题目&#xff0c;递推公式为&#xff1a;dp[j] dp[j-coins[i]]。 class Solution { publ…

算法C++

枚举 1.化段为点 前缀和 eg:给一个数列&#xff0c;算x到y个数的和 #include <iostream> #include <vector> using namespace std;int main() {int n;cin>>n;vector<int> a(n);vector<int> sum(n1,0);for(int i0;i<n;i){scanf…

047-WEB攻防-PHP应用文件上传函数缺陷条件竞争二次渲染黑白名单JS绕过

047-WEB攻防-PHP应用&文件上传&函数缺陷&条件竞争&二次渲染&黑白名单&JS绕过 #知识点&#xff1a; 1、PHP-原生态-文件上传-检测后缀&黑白名单 2、PHP-原生态-文件上传-检测信息&类型内容 3、PHP-原生态-文件上传-函数缺陷&逻辑缺陷 4、PH…

Window系统部署Z-blog并结合内网穿透实现远程访问本地博客站点

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Spring Task的应用

介绍 Spring Task是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑。 定位&#xff1a; 定时任务框架 作用&#xff1a; 定时自动执行某段Java代码 应用场景&#xff1a; 引用卡每月还款提醒、银行贷款每月还款提醒、火车票售票系统处理未支…

有序链表的合并

已知线性表 LA 和 LB 中的数据元素按值非递减有序排列&#xff0c;现要求将 LA 和 LB 归并为一个新的线性表 LC&#xff0c; 且 LC 中的数据元素仍然按值非递减有序排列。例如&#xff0c;设LA(3,5,8,11) ,LB(2,6,8,9,11,15,20) 则LC(2,3,6,6,8,8,9,11,11,15,20) 输入格式 有…

文件的写出操作

1. 文件不存在&#xff0c;创建文件后写出方法: <1>打开文件&#xff1a;open()方法是文件不存在时创建文件 file open("D:/test.txt","w",encoding"UTF-8")<2>写出文件: file.write("please open your book") #内容写到内…

文献速递:深度学习--应用深度学习到DaTscan SPECT图像以改善帕金森病运动结果预测

文献速递&#xff1a;深度学习–应用深度学习到DaTscan SPECT图像以改善帕金森病运动结果预测 Title 题目 Improved motor outcome prediction in Parkinson’s disease applying deep learning to DaTscan SPECT images 应用深度学习到DaTscan SPECT图像以改善帕金森病运动…

unity学习(42)——创建(create)角色脚本(panel)——UserHandler(收)+CreateClick(发)——服务器收包2

1.解决上一次留下的问题&#xff1a; log和reg的时候也有session&#xff0c;输出看一下这两个session是同一个不&#xff1a; 实测结果reg log accOnline中的session都是同一个对象&#xff0c;但是getAccid时候的session就是另一个了。 测试结果&#xff0c;说明在LogicHan…

SpringCloud--Sentinel基本概念介绍

一、Sentinel 简介 Spring Cloud Sentinel 是阿里巴巴开源的面向分布式服务、多语言异构化服务架构的流量治理组件。主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 …

C#三元运算符(ternary operator)

在C#中&#xff0c;三元运算符&#xff08;ternary operator&#xff09;是一种简洁的条件表达式&#xff0c;它允许根据条件的结果选择性地返回两个表达式中的一个值。 三元运算符的语法如下&#xff1a; condition ? expression1 : expression2其中&#xff0c;condition …

Linux信号【保存-处理】

目录 前言&#xff1a; 1、再次认识信号 1.1、概念 1.2、感性理解 1.3、在内核中的表示 1.4、sigset_t 信号集 2、信号集操作函数 2.1、增删改查 2.2、sigprocmask 2.3、sigpending 3.信号的处理机制 3.1处理情况 3.2合适时机 4用户态与内核态 4.1、概念 4.2、…

【Java程序设计】【C00322】基于Springboot的高校竞赛管理系统(有论文)

基于Springboot的高校竞赛管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校竞赛管理系统&#xff0c;本系统有管理员、老师、专家以及用户四种角色&#xff1b; 管理员&#xff1a;首页、个人中心、管…

幻兽帕鲁(1.5.0)可视化管理工具(0.5.7 docker版)安装教程

文章目录 局域网帕鲁服务器部署教程帕鲁服务可视化工具安装配置服务器地址&#xff08;可跳过&#xff09;使用工具管理面板 1.5.0服务端RCON错误1.5.0服务端无法启动RCON端口 解决方法第一步&#xff1a;PalWorldSettings.ini配置第二步&#xff1a;修改PalServer.sh配置 局域…