Vue Grid Layout ( 栅格布局 )

Vue Grid Layout -️ 适用 Vue.js 的栅格布局系统 (相关使用记录)

  • 参考文章@~朴:shu
  • 参考文章@我说爱你啊
  • 中文文档
  • 官方文档

安装

npm install vue-grid-layout --save
或yarn add vue-grid-layout

导入组件

import VueGridLayout from 'vue-grid-layout';

注册组件

 export default {components: {GridLayout: VueGridLayout.GridLayout,GridItem: VueGridLayout.GridItem},// ... data, methods, mounted (), etc.}

grid-layout 属性说明

属性名称属性说明
col-num画布占几列,默认 12 列
row-height每行的高度,默认 150px
is-draggable是否允许拖拽布局中的单元格,默认 true
is-resizable是否允许缩放布局中的单元格,默认 true
max-rows定义最大行数,你把它设置成 1 拖拽试试就知道它的作用了
margin布局中单元格之间的间距,如果[10,10]
responsive是否是响应式布局,比如大屏下显示 5 列,小屏幕下将会根据屏幕大小显示多少列。默认为 false
is-mirrored镜像反转,就是布局是从左到右还是从右到左
auto-size布局的容器是否自动自动大小
vertical-compact是否开启垂直压缩,设置 true 或 false 试试看
prevent-collision防止碰撞,设置为 ture 时,单元格只能拖动到空白处
use-css-transforms否使用 CSS 属性 transition-property: transform
breakpoints为响应式布局设置断点,默认为 { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },里面的单位为像素 px
cols设置每个断点对应的列数,默认{ lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }。
use-style-cursor是否使用动态鼠标指针样式,当拖动出现卡顿时,将此值设为 false 也许可以缓解布局问题。

grid-item 属性说明

属性名称属性说明
i单元格的 id,字符串类型
x单元格起始列
y单元格起始行
w单元格占几列
h单元格占几行
min-w单元格最小宽度占几列,缩放单元格时起作用
min-h单元格最小宽度占几行,缩放单元格时起作用
max-w单元格最大宽度占几列,缩放单元格时起作用
max-h单元格最大宽度占几行,缩放单元格时起作用
is-draggable单元格是否允许拖拽,如果为 null 取决父容器
is-resizable单元格是否允许缩放,如果为 null 取决父容器
static单元格是否是静态的,默认为 false,如果是那么无法缩放、拖动、被其他元素影响
drag-ignore-fromcss 筛选器,设置那些元素无法触发拖拽事件,比如’a, button’
drag-allow-fromcss 筛选器,那些元素可以触发拖拽事件,默认为 null,全部元素
resize-ignore-fromcss 筛选器,那些元素无法触发调整大小事件

相关事件方法

<grid-layout:layout="layout":col-num="12":row-height="30"@layout-created="layoutCreatedEvent"@layout-before-mount="layoutBeforeMountEvent"@layout-mounted="layoutMountedEvent"@layout-ready="layoutReadyEvent"@layout-updated="layoutUpdatedEvent"@breakpoint-changed="breakpointChangedEvent"
><grid-itemv-for="item in layout":x="item.x":y="item.y":w="item.w":h="item.h":i="item.i":key="item.i"@resize="resizeEvent"@move="moveEvent"@resized="resizedEvent"@container-resized="containerResizedEvent"@moved="movedEvent">{{item.i}}</grid-item>
</grid-layout>
<script>var app = new Vue({el: "#app",methods: {//****************** GridLayout ************************//对应Vue生命周期的createdlayoutCreatedEvent: function (newLayout) {console.log("Created layout: ", newLayout);},//对应Vue生命周期的beforeMountlayoutBeforeMountEvent: function (newLayout) {console.log("beforeMount layout: ", newLayout);},//对应Vue生命周期的mountedlayoutMountedEvent: function (newLayout) {console.log("Mounted layout: ", newLayout);},//当完成mount中的所有操作时生成的事件layoutReadyEvent: function (newLayout) {console.log("Ready layout: ", newLayout);},//更新事件(布局更新或栅格元素的位置重新计算)layoutUpdatedEvent: function (newLayout) {console.log("Updated layout: ", newLayout);},//每次断点值由于窗口调整大小而改变breakpointChangedEvent: function (newBreakpoint, newLayout) {console.log("断点=", newBreakpoint, ", layout: ", newLayout);},//****************** GridItem ************************//单元格移动时的事件moveEvent: function (i, newX, newY) {console.log("移动中 i=" + i + ", X=" + newX + ", Y=" + newY);},//单元格调整大小时的事件resizeEvent: function (i, newH, newW, newHPx, newWPx) {console.log("调整大小中 i=" + i);},//单元格移动后的事件movedEvent: function (i, newX, newY) {console.log("移动完成 i=" + i);},//单元格调整大小后的事件resizedEvent: function (i, newH, newW, newHPx, newWPx) {console.log("调整大小完成 i=" + i);},//单元格或单元格容器更改大小的事件(浏览器窗口或其他)containerResizedEvent: function (i, newH, newW, newHPx, newWPx) {console.log("容器大小改变了 i=" + i);},},});
</script>

项目示例(简易)

<template><div class="customhome-container"><grid-layout:layout.sync="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-itemclass="gridItem"v-for="item in 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>import { GridLayout, GridItem } from "vue-grid-layout";export default {components: {GridLayout,GridItem,},data() {return {// 定义栅格系统数据源layout: [{ x: 0, y: 0, w: 2, h: 2, i: "0" },{ x: 2, y: 0, w: 2, h: 4, i: "1" },{ x: 4, y: 0, w: 2, h: 5, i: "2" },{ x: 6, y: 0, w: 2, h: 3, i: "3" },{ 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" },],};},methods: {},mounted() {},};
</script>
<style lang="scss" scoped>.gridItem {border: solid black 1px;background-color: #cccccc;}
</style>

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

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

相关文章

C语言从入门到实战——结构体与位段

结构体与位段 前言一、结构体类型的声明1.1 结构体1.1.1 结构的声明1.1.2 结构体变量的创建和初始化 1.2 结构的特殊声明1.3 结构的自引用 二、 结构体内存对齐2.1 对齐规则2.2 为什么存在内存对齐2.3 修改默认对齐数 三、结构体传参四、 结构体实现位段4.1 什么是位段4.2 位段…

基于springboot的流浪动物救助管理系统

&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;一 、设计说明 1.1研究背景 随着…

MStart | MStart开发与学习

MStart | MStart开发与学习 1.学习 1.MStart |开机LOG显示异常排查及调整

windows平台高dpi介绍

flutter在windows平台如何自定义dpi设置 系统层级的支持(windows平台对高dpi的支持) 主要有两点&#xff1a; 设置系统的缩放比例 (系统及系统自带的app会根据这个设置来进行缩放&#xff1b;自己的app需要结合自己设置的dpi awareness来实现对应的dpi支持)设置进程的dpi aw…

Linux系统中负载较高问题排查思路与解决方法

Load 就是对计算机干活多少的度量&#xff0c;Load Average 就是一段时间&#xff08;1分钟、5分钟、15分钟&#xff09;内平均Load。 一、Load分析&#xff1a; 情况1&#xff1a;CPU高、Load高 通过top命令查找占用CPU最高的进程PID&#xff1b;通过top -Hp PID查找占用CPU…

BIOS知识枝桠——RAID 磁盘阵列

文章目录 前言一、RAID介绍二、RAID等级分类1.RAID02.RAID13.RAID24.RAID3和RAID45.RAID5和RAID66.RAID77.RAID10 BIOS下组建RAID 前言 假设存在多块磁盘&#xff0c;如果不组建阵列&#xff0c;磁盘与磁盘之间是没有任何关系的。磁盘A和B&#xff0c;放在A中的文件与B磁盘没有…

vue中使用component中的is渲染组件如何使用,:is 等价 v-if渲染组件。

动态组件顾名思义动态加载不同的组件&#xff0c;is属性用于加载不同组件&#xff0c;传参使用属性传递 1、使用v-for遍历component&#xff0c;组件都会执行 <componentv-for"(item, index) in TAB_PANE":key"index":is"item.componentName"…

Java多线程——并发和并行、实现方法

多线程 并发和并行 实现方法 代码演示 方式一 package com.qiong.thread1;public class MyThread extends Thread{Overridepublic void run() {for (int i 0; i < 20; i) {System.out.println(getName() "Hello World");}} }package com.qiong.thread1;public…

训练营四十四天 | ● 完全背包● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ

完全背包 先物品再背包和先背包再物品都行&#xff0c;背包正序遍历&#xff0c;可以重复选取 先物品再背包是组合&#xff0c;不讲究各个物品的不同顺序&#xff0c;因为先顺序遍历物品&#xff0c;所以物品只有一种排序&#xff0c;即组合 先背包再物品是排序&#xff0c;物…

运筹说 第65期 | 动态规划的基本概念和基本原理

20世纪50年代初&#xff0c;美国数学家R. Bellman 等人在解决多阶段决策优化问题时提出了一种高效的求解方法——动态规划&#xff08;Dynamic Programming&#xff09;&#xff0c;该方法基于多阶段决策优化问题的特点&#xff0c;把多阶段问题转换为一系列互相联系的单阶段问…

2024抖店选品方法,及侧重方向思路(全新版本),可收藏备用

我是王路飞。 做无货源抖店的商家&#xff0c;牢记【选品重于泰山】这句话。 要知道电商的本质就是产品&#xff0c;你所有的运营手段也都是围绕产品进行的&#xff0c;店铺内的流量也都是冲着产品来的。 产品不行&#xff0c;哪怕再多的流量、再高的曝光率&#xff0c;也带…

2024年全网最全春招时间线

2024年全网最全春招时间线 春招&#xff0c;许多同学可能会误以为这是春天才会进行。 你可能会想&#xff0c;期末刚考完试&#xff0c;先享受下寒假&#xff0c;再欢度春节&#xff0c;收些红包&#xff0c;甚至还能抽空去理个发型。等到春日明媚时&#xff0c;再参加春招活…

linux docker安装 rustdesk

这里写自定义目录标题 1&#xff1a;软件介绍&#xff1a;2&#xff1a;安装1. 服务器端2. 客户端 3&#xff1a;配置5&#xff1a;其他1:rustdesk 官方Docker Compose 1&#xff1a;软件介绍&#xff1a; 名称作用官网项目地址rustdesk实现多端互控https://rustdesk.com/inde…

将github项目导入gitee中

首先将原gitee项目中以下不必要的文件删除掉&#xff0c;并把github中的文件下载到gitee目录下&#xff1a; rm -rf * git clone [链接]cd 进入下载后的目录&#xff0c;将下载后的git相关文件删除&#xff1a; cd [git项目名] rm -rf .git回到gitee项目文件夹&#xff0c;将…

图书管理系统:从数据库设计到前端展示的实战经验分享

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

Arduino| 串口通讯、入门示例

Arduino串口通讯 为什么要做串口通讯串口通讯原理串口通讯函数字符串常用函数串口通讯示例入门示例测试串口通讯复杂指令处理 为什么要做串口通讯 串口通讯&#xff1a;串口通信是用来在不同电子设备之间交换数据用的技术&#xff0c;其实就是要实现不同电子设备之间的“通讯对…

C# Cad2016二次开发选择文本信息导出(六)

//选文本信息导出 [CommandMethod("getdata")] public void getdata() {// 获取当前文档和数据库Document doc Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;Database db doc.Database;Editor ed doc.Editor;// 获取当前…

vulnhub靶场之DC-9

一.环境搭建 1.靶场描述 DC-9 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing. The ultimate goal of this challenge is to get root and to read the one and only flag. Linux skills and famili…

01-11NodeJS

NodeJSNpmBootstrap NodeJS 概念&#xff1a;NodeJS是JavaScript的运⾏环境: node xxx&#xff0c;主要在Windows、Linux、Unix、MacOSX等不同平台上运行 一、特点&#xff1a; 单线程异步IO跨平台事件驱动 能让JS脱离浏览器执行可以开发后端程序 二、测试&#xff1a; 安…

快速预览PDF报告,PDF提取文字并统计词频

通过统计词频来快速预览PDF报告。本文提供了文字PDF和图片PDF提取文字的两类方式。 对于是文字类的PDF可以快速的提取其中文字&#xff0c;但是有许多PDF是图片格式&#xff0c;并不能直接提取文字。本文采取PDF转图片&#xff0c;并通过OCR识别文字生成文本&#xff0c;进而统…