利用vue-gird-layout 制作可定制桌面 (一)
安装 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 制作可定制桌面 (一)相关推荐
- 前后端分离,利用vue结合Springboot实现登录接口的制作并通过测试
1---前端利用vue制作登录界面并与后台通信 2---前端 工程中引入vue-router和axios依赖,可以参考我之前的博客 3---components文件夹下建立制作登录页,Login.vu ...
- vue设置右边距_利用页面布局设置制作工资条(不用函数)
利用页面布局设置制作工资条(不用函数) 彭怀文 第一节和第二节分别讲了使用函数或排序的办法,将工资表转化工资条,但是美中不足的是标题行只能是单标题行,对于多标题行或者含有合并单元格的标题行却没有办法解 ...
- 技术图文:如何利用BigOne的API制作自动化交易系统 -- 订单系统
背景 前面几天,我们一起封装了 BigONE 提供的"身份验证"与"资产账户"部分的 API. 如何利用BigOne的API制作自动化交易系统 – 身份验证 如 ...
- 少女风vue组件库制作全攻略~~
预览 组件库官网 github地址 如果喜欢各位小哥哥小姐姐给个小星星鼓励一下哈, 请勿在生产环境中使用,供学习&交流~~ 完整项目目录结构 git clone到本地安装依赖后,执行npm r ...
- 基于Android Tv制作一个Tv桌面(二)
标题基于Android Tv制作一个Tv桌面(二) 这里是获取APP的各种信息,不知道为什么这一步只能在主类MainActivity 上进行,不能在其他的类进行此操作,也许是我见识短浅的原因吧,因为其 ...
- 技术图文:如何利用BigOne的API制作自动化交易系统--网格交易法
背景 前面,通过图文 如何利用 C# 爬取 ONE 的交易数据? 向大家介绍了如何爬取在 BigOne 上线的数字资产的交易数据. 其次,通过图文 如何利用BigOne的API制作自动化交易系统 – ...
- winU盘装Linux win32,2016221在Windows系统下利用Win32 Disk Imager制作Ubuntu server U盘系统...
在Windows系统下利用Win32 Disk Imager制作Ubuntu server U盘系统 将Ubuntu server系统写入U盘制作成系统盘的软件有很多,为什我们选择使用 Win32 D ...
- Vue Grid Layout -️ 适用Vue.js的栅格布局系统(保姆级使用教程)
目录 一. Vue Grid Layout 简介 二.vue-grid-layout 的安装与使用 三. 属性 3.1 gridItem 的必须属性 3.2 框架元素的实际宽度高度计算方式 3.3 元 ...
- 计算机桌面定制操作,2010年职称计算机考试:定制桌面
在桌面上是否显示"我的电脑"."我的文档"."网上邻居"和"Internet Explorer,,图标,以及图标以哪种样式显示,都 ...
- 使用vue全家桶制作博客网站
前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue.vue-router.vuex.v ...
最新文章
- Ubuntu apt-get install、apt-get -f install、apt-get --purge remove、apt-get update、apt-get upgrade、
- P1244 青蛙过河
- python面向对象三大基本特性_python面向对象之三大特性
- java数组如何相加_java数组排序,并将数组内的数据求和
- bootstrap五星评分_如何用纯代码实现评分星级显示?
- 学生时代的神操作,你了解吗?
- 计算机等级ms答题演示,计算机等级一级MS Office考试考题:第六套演示文稿题
- 数据结构—图的基本概念
- 数学软件Maple使用教程
- 概率论——负二项随机变量
- 找不到该项目(无法删除文件)
- php学籍信息管理系统心得_php学籍管理系统,源码免费分享
- js截取指定字符串后面的所有字符
- 秋名山老司机从上车到翻车的悲痛经历,带你深刻了解什么是Spark on Hive!
- 滴滴出行 DoKit 2.0 - 泛前端开发者的百宝箱
- Python 计算思维训练——输入和错误处理练习(一)第三关
- 全国计算机二级c++上机试题.cpp,计算机二级考试C++上机考试试题
- react-diagram 序列化Json解读
- 雅虎非法监控邮件内容 在美国面临集体诉讼
- hdu6112(模拟) 今夕何夕
热门文章
- Linux 下安装Node.js
- 从3dmax导出动画总结
- [强烈推荐]Oracle:只有rman备份(数据,参数,日志,控制文件全丢失)的恢复
- Oracle Net
- JQuery原生js ——实现剪刀石头布小游戏
- 【转】拉勾网 - 《2016互联网职场生态白皮书》
- CocoaPods安装记录
- UINavigationController 直接pop到指定controllerView的方法
- idea安装Scala插件
- sql 保留整数_Spark 3.0发布啦,改进SQL,弃Python 2,更好的兼容ANSI SQL,性能大幅提升...