vue-grid-layout 使用以及所有属性

2023-11-17

作用

1.实现桌面拖拽布局功能
2.可调整每个部件的大小
3.可以在不重新构建网格的情况下添加或删除小部件

下载及引入

下载
install with npm // 用npm   
npm install vue-grid-layout --save
​
install with yarn // 用yarn   
yarn add vue-grid-layout

引入
import VueGridLayout from 'vue-grid-layout'; // vue 项目中 
<script src="vue-grid-layout.umd.min.js"></script>  // 普通项目中

版本

node版本 vue-grid-layout版本
8.多 2.3.4以下
14.多 最新版本 2.3.12

案例 以及所有属性

<grid-layout
            //  作用        数据类型          必填        备注
             //===================================================
            // 网格初始化布局  数组       必填  每一项都必须具有i、x、y、w和h属性 属性用作什么 见下方
            :layout.sync="layout"  
            // 表示网格有多少列 数字           非必填    默认为12
            :col-num="12" 
            // 表示一行的高度(以像素为单位) 数字     非必填     默认值为150
            :row-height="30"
            // 表示网格中最大行数 数字          非必填     默认为无穷大
           :maxRows="20"
            // 表示网格项数是否可以拖动 Boolean        非必填     默认为true
            :is-draggable="true"
            // 表示网格是否可以改变带大小 Boolean      非必填     默认为true
            :is-resizable="true"
            // RTL/LTR 的转换 Boolean      非必填 默认为false
            :is-mirrored="false"
            // 容器是否适应内部变化 Boolean  非必填 默认为 true
           :autoSize="ture" 
            // 垂直方向上 是否应该紧凑布局 Boolean 非必填 默认为true
            :vertical-compact="true"
        // 网格之间的边距 两个数字组成的数组 第一个数字为水品距离 第二个为垂直距离 非必填 默认值为 [10,10]
            :margin="[10, 10]"
            // 是否使用css的transforms来排版 非必填 为false时 使用后采用定位方式来布局 默认为true
            :use-css-transforms="true" 
            // 布局是否应响应窗口宽度 非必填 默认false 为true时 会出现一些布局错乱的问题
           :responsive="false" 
           //布局是否应响应为响应布局定义的窗口宽度断点 对象类型 非必填 默认值
            // { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 }
           :breakpoints=" { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 }"
           // 定义每个断点的列数
           :cols="{ lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }"
            // 生命周期
            
           @layout-created="layoutCreatedEvent"  // 布局创建事件
            @layout-before-mount="layoutBeforeMountEvent" // 布局安装以前事件
            @layout-mounted="layoutMountedEvent"    // 布局安装事件
            @layout-ready="layoutReadyEvent"    // 布局准备活动
            @layout-updated="layoutUpdatedEvent" // 格子位置 大小更新 
    >
      // 每个单独控制 需要注意的是 每一个属性都要在data中注册一下 不然会导致不能拖拽 或者 不能放大缩小
       <grid-item
         class="echarts_box" 
          :x="layoutData[0].x" // 横向距离
          :y="layoutData[0].y" // 纵向距离
          :w="layoutData[0].w" // 宽度
          :h="layoutData[0].h" // 高度
          :i="layoutData[0].i" // 唯一值 (重复时设置会导致一块放大或缩小)string类型
          @resize="resizeEvent" // 当该元素 被放大缩小触发的事件 
          @move="moveEvent" // 该元素移动时 触发的事件
          @resized="resizedEvent" // 放大缩小结束 触发事件 注意:必须当大小相对上一次发生改变结束时才会触发
          @moved="movedEvent" // 移动结束触发 注意:只有当位置相对上一次发生改变才会触发 
        ></grid-item>
    // for循环 便利数组中的内容 渲染元素 
       // <grid-item v-for="item in layout"
       //          :x="item.x"
       //           :y="item.y"
       //           :w="item.w"
       //            :h="item.h"
       //          :i="item.i">
       //        {{item.i}}
       //</grid-item>
  </grid-layout>import VueGridLayout from 'vue-grid-layout' //文件引入
const matedata = [
  {
    i: "0", // 索引值 必填 
    h: 4,   // 高度   必填
    w: 7,   // 宽度   必填
    x: 2,   // x 轴距离 必填
    y: 0,   // y轴距离 必填
    minW:5 // 最小宽度 当 w的值小于minW时 采用minW的值 
    minH:3 // 同上
    maxW:8 // 的最大宽度。如果w大于maxW,那么w将被设置为maxW。
    maxH:6 // 同上
    isDraggable:true // 单独控制这一个盒子是否可以拖动 未填写 继承父元素的 非必填
    isResizable:true // 单独控制这一个盒子是否可以调整大小 未填写 继承父元素的 非必填
    static:false // 这个盒子是静态的  不能被其他元素改变位置 会被覆盖在底部
    dragIgnoreFrom: '' // 属性这值为css 选择器 项的哪些元素不应触发项的拖动事件// 具体不知道干嘛的 没有用到
    dragAllowFrom:'' // 属性这值为css 选择器 项的哪些元素应触发项的拖动事件 // 文档这样写的
    resizeIgnoreFrom:''//属性这值为css 选择器 表示项的哪些元素不应触发项的调整大小事件。//来自文档翻译
  },
  {
    h: 1,
    i: "1",
    w: 1,
    x: 0,
    y: 1
  },
  {
    h: 1,
    i: "2",
    w: 1,
    x: 0,
    y: 2
  },
  {
    h: 1,
    i: "3",
    w: 1,
    x: 0,
    y: 3
  }
];
export default {
  data() {
    return {
      layoutData: matedata, //  存放布局数据 数据格式如上
    };
  },
  components: {
    GridLayout, //注册组件
    GridItem // 注册
  },
  methods: {
      // 布局中单元改变事件  i, newX, newY 移动的坐标
      //                i, newH, newW, newHPx, newWPx 变化的大小
                            //newHPx, newWPx 是实际的像素
                        // newH, newW 是数据中的 以每个单位大小为基准点算
    resizeEvent(i, newH, newW, newHPx, newWPx) {
      console.log("大小正在改变",i, newH, newW, newHPx, newWPx);
    },
    moveEvent( i, newX, newY) {
      console.log("正在移动",i, newX, newY);
    },
    resizedEvent(i, newH, newW, newHPx, newWPx) {
      console.log("大小改变完了",i, newH, newW, newHPx, newWPx);
    },
    movedEvent( i, newX, newY) {
      console.log("移动结束了", i, newX, newY);
    },
       // 布局组件的生命周期  参数newLayout=> 布局的数据 每个布局数据
    layoutCreatedEvent(newLayout) {
      console.log("1Created");
    },
    layoutBeforeMountEvent(newLayout) {
      console.log("2Mount");
    },
    layoutMountedEvent(newLayout) {
      console.log("3Mounted");
    },
    layoutReadyEvent(newLayout) {
      console.log("4Ready");
    },
    layoutUpdatedEvent(newLayout) {
      console.log("Updated");
    }
  },
  created() {
  },
  mounted() {
  };
    
};
<grid-layout
                :layout.sync="layoutData"
                :col-num="12"
                :row-height="30"
                :is-draggable="true"
                :is-resizable="true"
                :is-mirrored="false"
                :vertical-compact="true"
                :margin="[15, 15]"
                :use-css-transforms="true"
                @layout-updated="layoutUpdated"
                @layout-ready="layoutReady">
                  <grid-item v-for="(item,index) in layoutData"
                      :x="item.x"
                      :y="item.y"
                      :w="item.w"
                      :h="item.h"
                      :i="item.i"
                      :key="item.i"
                      dragAllowFrom=".ant-card-head-title"
                      @resized="itemResized(index,$event)">
                      <component class="ant-card-head-title" :is="item.component" @handleData="handleSetLineChartData"></component>
                  </grid-item>
            </grid-layout>

参考链接:https://www.cnblogs.com/whoani/p/11377793.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue-grid-layout 使用以及所有属性 的相关文章

随机推荐

  • esp32 CMT130-V1.0 PS 240*240屏幕使用方法实验

    1 安装好Arduino 1 8 13 注意尽量不要大于1 8的版本 2 安装esp32驱动代码并且配置 3 esp32选择波特率 921600 4 选择频率 80MHZ 5 具体连线总结 6 需要在Arduino库管理中心下载TFT eS
  • HTTP协议(超文本传输协议)

    目录 1 HTTP协议介绍 2 HTTP协议格式 3 代码实现 1 HTTP协议介绍 HTTP协议是一个简单的请求响应协议 HTTP协议是一个明文字符串传输协议 便于调试 HTTP协议在传输层上基于TCP协议实现数据传输 本质上HTTP服务
  • BUUCTF[强网杯 2019]随便注 的三种解法

    文章目录 尝试注入 解题思路1 解题思路2 解题思路3 知识点总结 打开后题目是这样的 尝试注入 1 测试 1 or 1 1 初步判定存在SQL注入 1 or 1 1 再测试字段数 到3时报错 说明字段数为2 1 order by 1 接着
  • 测试开发1

    基本概念 一 测试开发基本概念 1 什么是软件测试 2 软件测试和软件开发的区别 3 你为什么选择软件测试 4 什么是需求 二 测试开发基础 1 需求是软件测试的依据 2 用户名和密码登陆测试用例 2 1 功能角度 2 2 非功能需求维度
  • 同学,DBDiff了解一下

    DBDiff是一款自动化的数据库schema和数据对比工具 它可以比较两个数据库 支持本地 远程库 并自动生成差异报告 数据库Schema代表数据库中的数据结构 包括表 视图 索引 序列 存储过程等 在设计数据库Schema时需要考虑各种数
  • Hyperledger fabric: 使用dev模式调试链码(chaincode)

    fabric的链码开发是比较痛苦的 主要是调试起来特别繁琐 在不使用dev模式的情况下 写好chaincode之后不能在本地测试 必须将代码部署到docker 然后再install instantiate 这样peer节点会在新的容器中启动
  • RabbitMQ:hello结构

    1 在Linux环境上面装入rabbitMQ doker compose yml version 3 1 services rabbitmq image daocloud io library rabbitmq management res
  • Youtube扒视频+ffmpeg批量将 png图像转换为avi、MP4以及将avi、MP4转换为单帧图像

    Youtube扒视频 ffmpeg批量将 png图像转换为avi MP4以及将avi MP4转换为单帧图像 最近有科研需求 需要去youtube上扒视频来制作数据集 遇到了如何将avi及mp4转换为png 以及 将png图像转换为视频的操作
  • 螺旋打印矩阵 -- C语言

    需求 给定一个包含 m x n 个元素的矩阵 m 行 n 列 请按照顺时针螺旋顺序 返回矩阵中的所有元素 示例 1 输入 1 2 3 4 5 6 7 8 9 输出 1 2 3 6 9 8 7 4 5 示例 2 输入 1 2 3 4 5 6
  • Servlet获取Excel中数据的两种方式

    Servlet解析Excel文件的两种方式 简单分享一下Servlet通过解析Excel文件得到其中数据的两种方式 第一种 前端获取 思路 通过layui的第三方插件 layui excel 解析excel文件 得到数据 再通过Ajax传递
  • Executors的四种线程池

    1 Executors有四种线程池的实现方式 newSingleThreadExecutor 创建一个单线程化的线程池 它只会用唯一的工作线程来执行任务 保证所有任务按照指定顺序 FIFO LIFO 优先级 执行 newFixedThrea
  • 解读:新基建为区块链带来的新机遇

    导读 区块链作为融合点对点传输 共识机制 加密算法等技术的分布式数据库技术 目前已渗透到数字金融 供应链管理 数字资产交易等多个领域 2019年10月 中共中央政治局集体学习区块链技术发展现状及趋势 2020年3月4日 中共中央政治局常务委
  • Java 【数据结构OJ题十道】—— 二叉树篇1

    文章目录 一 检查两棵二叉树是否相同 二 另一棵二叉树的子树 三 二叉树的构建及遍历 四 序列化二叉树和反序列化二叉树 难 五 二叉树创建字符串 六 二叉树前序非递归遍历实现 七 二叉树中序非递归遍历实现 八 二叉树后序非递归遍历实现 九
  • C规范编辑笔记(十二)

    往期文章 C规范编辑笔记 一 C规范编辑笔记 二 C规范编辑笔记 三 C规范编辑笔记 四 C规范编辑笔记 五 C规范编辑笔记 六 C规范编辑笔记 七 C规范编辑笔记 八 C规范编辑笔记 九 C规则编辑笔记 十 C规范编辑笔记 十一 正文 放
  • 【概率论】非连续型随机变量及概率分布

    非离散型随机变量 非离散型分布函数 设是一个随机变量 是任意实数 随机变量的分布函数 如果已知X的分布函数F x 就可以求出X落在任一区间 x1 x2 内的概率 分布函数的性质 1 2 是单调不减的 3 一维连续型随机变量概率密度 非负函数
  • 书写自己的成长情况介绍,要尽可能详尽并富有文采

    我从小生活在一个富有文化气息的家庭 父母给我最大的支持和关爱 让我拥有了一个美好的成长环境 从小我就喜欢读书 探索世界 这种兴趣也从未改变 反而越来越深入 我以优异的成绩在学校取得了卓越的成绩 学习技能不断增长 积累了丰富的知识 在大学期间
  • ipad怎么分屏方法

    如果你喜欢用Pad追剧 但是同时你又要做一些其他的事情 这个时候我们就需要ipad分屏 那具体怎么做呢 下面让我们一起来看一下吧 小白一键重装系统官网 让电脑小白也会用的win11 win10 win7一键重装系统软件 工具 原料 系统版本
  • h5手机端video autoplay兼容苹果的做法

    1 主要是加入 x5 video player fullscreen true x5 playsinline playsinline webkit playsinline 这几个属性 2 如果需要微信中支持 只能引入wx的js 在 必须在w
  • powerdesigner创建mysql数据库表_使用PowerDesigner创建表并导入到数据库

    使用PowerDesigner创建表并导入到数据库 刚刚学习使用PowerDesigner进行数据库的创建 下面我就分享一下如何创建表并导入到数据库 1 首先到网上下载一下PowerDesigner SQL Service 2008软件并安
  • vue-grid-layout 使用以及所有属性

    vue grid layout 作用 下载及引入 版本 案例 以及所有属性 作用 1 实现桌面拖拽布局功能 2 可调整每个部件的大小 3 可以在不重新构建网格的情况下添加或删除小部件 下载及引入 下载 install with npm 用n