安装 vue-gird-layout

https://github.com/jbaysolutions/vue-grid-layout

先跑一遍demo 运行起来。

# install with npm
npm install vue-grid-layout --save

index.vue

 1 <template>
 2   <div class="board" style="width: 100%">
 3     <div class="home">
 4       <grid-layout
 5         :layout="layoutData"
 6         :col-num="12"
 7         :row-height="layoutHeight"
 8         :is-draggable="dialogVisible"
 9         :is-resizable="dialogVisible"
10         :is-mirrored="false"
11         :vertical-compact="true"
12         :margin="[10, 10]"
13         :use-css-transforms="true"
14       >
15         <grid-item v-for="(item,index) in layoutData"
16                    :x="item.x"
17                    :y="item.y"
18                    :w="item.w"
19                    :h="item.h"
20                    :i="item.i"
21                    :key="item.i"
22         >
23           {{index}}
24         </grid-item>
25       </grid-layout>
26     </div>
27   </div>
28 </template>
29
30 <script>
31   import layoutData from '@/virtualData/layoutData.json'
32   import VueGridLayout from 'vue-grid-layout'
33
34   const GridLayout = VueGridLayout.GridLayout
35   const GridItem = VueGridLayout.GridItem
36   export default {
37     data() {
38       return {
39         // 布局数据
40         layoutData: [],
41         layoutConfig: {
42           height: 100, // 默认高度
43           dialogVisible: false // 是否可拖拽或改变大小
44         }
45       }
46     },
47     components: {
48       GridLayout,
49       GridItem
50     },
51     methods: {
52       init() {
53         this.layoutData = layoutData.mainData
54       }
55     },
56     created() {
57       this.init()
58     }
59   }
60
61 </script>
62
63
64 <style lang="scss" scoped>
65 </style>

index.vue

layoutData.json

{"mainData": [{"x": 0,"y": 0,"w": 1,"h": 1,"i": "0"},{"x": 0,"y": 1,"w": 1,"h": 1,"i": "1"},{"x": 0,"y": 2,"w": 1,"h": 1,"i": "2"},{"x": 0,"y": 3,"w": 1,"h": 1,"i": "3"},{"x": 1,"y": 0,"w": 1,"h": 1,"i": "4"},{"x": 1,"y": 1,"w": 1,"h": 1,"i": "5"},{"x": 1,"y": 2,"w": 1,"h": 1,"i": "6"},{"x": 1,"y": 3,"w": 1,"h": 1,"i": "7"},{"x": 2,"y": 0,"w": 1,"h": 1,"i": "8"},{"x": 2,"y": 1,"w": 1,"h": 1,"i": "9"},{"x": 2,"y": 2,"w": 1,"h": 1,"i": "10"},{"x": 2,"y": 3,"w": 1,"h": 1,"i": "11"},{"x": 3,"y": 0,"w": 1,"h": 1,"i": "12"},{"x": 3,"y": 1,"w": 1,"h": 1,"i": "13"},{"x": 3,"y": 2,"w": 1,"h": 1,"i": "14"},{"x": 3,"y": 3,"w": 1,"h": 1,"i": "15"},{"x": 4,"y": 0,"w": 1,"h": 1,"i": "16"},{"x": 4,"y": 1,"w": 1,"h": 1,"i": "17"},{"x": 4,"y": 2,"w": 1,"h": 1,"i": "18"},{"x": 4,"y": 3,"w": 1,"h": 1,"i": "19"}]
}

layoutData.json

运行起来之后,页面效果

加上点背景颜色

.vue-grid-item {background: aquamarine;
}

  

  此时可以拖拽,可以改变格子大小了。

  接下来开始写几个方法,封装一下配置

  

添加右键事件,以后配置的时候用

  html:

  <ul class='contextmenu' v-show="menuConfig.visible" :style="{left:menuConfig.left+'px',top:menuConfig.top+'px'}"><li @click="test(1)">1</li><li @click="test(2)">2</li><li @click="test(3)">3</li></ul>

  script:

 <data>menuConfig: {visible: false,left: 0,top: 0}<methods>// 右键打开菜单
      openMenu(tag, e) {this.menuConfig.visible = truethis.menuConfig.left = e.clientXthis.menuConfig.top = e.clientY},// 关闭菜单
      closeMenu() {this.menuConfig.visible = false},// 测试方法
      test(i) {console.log(i)}},
<watch>
// 点击任意处,关闭菜单'menuConfig.visible'() {if (this.menuConfig.visible) {document.body.addEventListener('click', this.closeMenu)} else {document.body.removeEventListener('click', this.closeMenu)}}

View Code

   style:

   .contextmenu {margin: 0;background: #fff;z-index: 100;position: absolute;list-style-type: none;padding: 5px 0;border-radius: 4px;font-size: 12px;font-weight: 400;color: #333;box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);li {margin: 0;padding: 7px 16px;cursor: pointer;&:hover {background: #eee;}}}

转载于:https://www.cnblogs.com/yasoPeng/p/9961732.html

利用vue-gird-layout 制作可定制桌面 (一)相关推荐

  1. 前后端分离,利用vue结合Springboot实现登录接口的制作并通过测试

    1---前端利用vue制作登录界面并与后台通信 2---前端 工程中引入vue-router和axios依赖,可以参考我之前的博客 3---components文件夹下建立制作登录页,Login.vu ...

  2. vue设置右边距_利用页面布局设置制作工资条(不用函数)

    利用页面布局设置制作工资条(不用函数) 彭怀文 第一节和第二节分别讲了使用函数或排序的办法,将工资表转化工资条,但是美中不足的是标题行只能是单标题行,对于多标题行或者含有合并单元格的标题行却没有办法解 ...

  3. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 订单系统

    背景 前面几天,我们一起封装了 BigONE 提供的"身份验证"与"资产账户"部分的 API. 如何利用BigOne的API制作自动化交易系统 – 身份验证 如 ...

  4. 少女风vue组件库制作全攻略~~

    预览 组件库官网 github地址 如果喜欢各位小哥哥小姐姐给个小星星鼓励一下哈, 请勿在生产环境中使用,供学习&交流~~ 完整项目目录结构 git clone到本地安装依赖后,执行npm r ...

  5. 基于Android Tv制作一个Tv桌面(二)

    标题基于Android Tv制作一个Tv桌面(二) 这里是获取APP的各种信息,不知道为什么这一步只能在主类MainActivity 上进行,不能在其他的类进行此操作,也许是我见识短浅的原因吧,因为其 ...

  6. 技术图文:如何利用BigOne的API制作自动化交易系统--网格交易法

    背景 前面,通过图文 如何利用 C# 爬取 ONE 的交易数据? 向大家介绍了如何爬取在 BigOne 上线的数字资产的交易数据. 其次,通过图文 如何利用BigOne的API制作自动化交易系统 – ...

  7. winU盘装Linux win32,2016221在Windows系统下利用Win32 Disk Imager制作Ubuntu server U盘系统...

    在Windows系统下利用Win32 Disk Imager制作Ubuntu server U盘系统 将Ubuntu server系统写入U盘制作成系统盘的软件有很多,为什我们选择使用 Win32 D ...

  8. Vue Grid Layout -️ 适用Vue.js的栅格布局系统(保姆级使用教程)

    目录 一. Vue Grid Layout 简介 二.vue-grid-layout 的安装与使用 三. 属性 3.1 gridItem 的必须属性 3.2 框架元素的实际宽度高度计算方式 3.3 元 ...

  9. 计算机桌面定制操作,2010年职称计算机考试:定制桌面

    在桌面上是否显示"我的电脑"."我的文档"."网上邻居"和"Internet Explorer,,图标,以及图标以哪种样式显示,都 ...

  10. 使用vue全家桶制作博客网站

    前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue.vue-router.vuex.v ...

最新文章

  1. Ubuntu apt-get install、apt-get -f install、apt-get --purge remove、apt-get update、apt-get upgrade、
  2. P1244 青蛙过河
  3. python面向对象三大基本特性_python面向对象之三大特性
  4. java数组如何相加_java数组排序,并将数组内的数据求和
  5. bootstrap五星评分_如何用纯代码实现评分星级显示?
  6. 学生时代的神操作,你了解吗?
  7. 计算机等级ms答题演示,计算机等级一级MS Office考试考题:第六套演示文稿题
  8. 数据结构—图的基本概念
  9. 数学软件Maple使用教程
  10. 概率论——负二项随机变量
  11. 找不到该项目(无法删除文件)
  12. php学籍信息管理系统心得_php学籍管理系统,源码免费分享
  13. js截取指定字符串后面的所有字符
  14. 秋名山老司机从上车到翻车的悲痛经历,带你深刻了解什么是Spark on Hive!
  15. 滴滴出行 DoKit 2.0 - 泛前端开发者的百宝箱
  16. Python 计算思维训练——输入和错误处理练习(一)第三关
  17. 全国计算机二级c++上机试题.cpp,计算机二级考试C++上机考试试题
  18. react-diagram 序列化Json解读
  19. 雅虎非法监控邮件内容 在美国面临集体诉讼
  20. hdu6112(模拟) 今夕何夕

热门文章

  1. Linux 下安装Node.js
  2. 从3dmax导出动画总结
  3. [强烈推荐]Oracle:只有rman备份(数据,参数,日志,控制文件全丢失)的恢复
  4. Oracle Net
  5. JQuery原生js ——实现剪刀石头布小游戏
  6. 【转】拉勾网 - 《2016互联网职场生态白皮书》
  7. CocoaPods安装记录
  8. UINavigationController 直接pop到指定controllerView的方法
  9. idea安装Scala插件
  10. sql 保留整数_Spark 3.0发布啦,改进SQL,弃Python 2,更好的兼容ANSI SQL,性能大幅提升...