vue grid layout 设定某组件为最低位,其它子item无法拖拽超过
逻辑:
设定某项X为底部
逻辑:
for 循环获取最低位的item Y的信息:i 和 y
如果i != X.i
initY = X.y
则调整X.y = initY + Y.h
调整Y.y = initY
方法位置:
layout-updated回调时,进行调整位置
layoutUpdatedEvent: function (newLayout) {
this.keepBottom()
},
keepBottom() {
let initI = 0
let initY = 0 // 获取当前最低位的item的Y的值
for (let m = 0; m < this.layout.length; m++) {
let ly = this.layout[m]
if (initY < ly.y) {
initY = ly.y
initI = m
}
}
if (initY != this.layout[1].y) {
// console.log('最后一位不为i为1的按钮')
let bottom = this.layout[1].y
this.layout[1].y = bottom + this.layout[initI].h
this.layout[initI].y = bottom
}
},
例如:
<grid-layout
:layout.sync="layout"
:col-num="1"
:row-height="30"
:is-draggable="allDragFlag"
:is-resizable="false"
:is-mirrored="false"
@layout-updated="layoutUpdatedEvent"
:vertical-compact="true"
:margin="[0, 0]"
:use-css-transforms="false"
>
<grid-item
v-for="item in layout"
:x="item.x"
:y="getChnageY(item)"
:h="item.h"
:w="item.w"
:minH="item.h"
:maxH="item.h"
:i="item.i"
@move="moveItem"
@moved="movedItem"
:static="item.static != null ? item.static : false"
:key="item.i"
>
</grid-item>
</grid-layout>
变量说明:
layout:布局数据
col-num=1:一列
row-height=30 :一行高度为30px
:is-draggable="allDragFlag":是否可以拖拽,变量true或false
:is-resizable="false":是否可以调整大小
:is-mirrored="false":是否镜像翻转
@layout-updated="layoutUpdatedEvent":布局数据发生变更时触发的事件
:vertical-compact="true":是否垂直紧凑布局
:margin="[0, 0]":grid item的margin
:use-css-transforms="false":是否使用css方式transform
@move="moveItem":grid item移动过程中的回调方法
@moved="movedItem":grid item 移动完成后的回调方法
layout中item的结构:
{
x:
y:
w:
h:
i:
static:
...
}
vue grid layout 设定某组件为最低位,其它子item无法拖拽超过的更多相关文章
- Vue : props 使用细节(父组件传递数据给子组件)
props使用细节 在Vue.js中我们可以使用 props 实现父组件传递数据给子组件,下面我们总结一下props的使用细节 1.基础类型检查 2.必填数据 3.默认值 4.自定义验证函数 其中每一 ...
- vue富文本编辑器vue-quill-editor使用总结(包含图片上传,拖拽,放大和缩小)
vue-quill-editor是vue很好的富文本编辑器,富文本的功能基本上都支持,样式是黑白色,简洁大方. 第一步下载 vue-quill-editor: npm i vue-quill-edit ...
- 【分享】Vue 资源典藏(UI组件、开发框架、服务端、辅助工具、应用实例、Demo示例)
Vue 资源典藏,包括:UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和 ...
- Vue-Grid-Layout分享一款好用的可拖拽组件
在使用Grafana的过程中,发现Grafana关于视图页面中每一个面板都可拖拽,可随意放大放小,体验非常棒,F12看了Grafana的代码,看打包后的代码很像react,进一步css,看到有grid ...
- 基于Vue实现可以拖拽的树形表格(原创)
因业务需求,需要一个树形表格,并且支持拖拽排序,任意未知插入,github搜了下,真不到合适的,大部分树形表格都没有拖拽功能,所以决定自己实现一个.这里分享一下实现过程,项目源代码请看github,插 ...
- React造轮子:拖拽排序组件「Dragact」
先来一张图看看: 项目地址:Github地址 (无耻求星!) 在线观看(第一次加载需要等几秒):预览地址 说起来不容易,人在国外没有过年一说,但是毕竟也是中国年,虽然不放假,但是家里总会主内一顿丰盛的 ...
- Vue 结合 echarts 原生 html5 实现拖拽排版报表系统
前言 不知道各位 coder 有没有碰到过许多重复的业务需求,比如排版相类似的报表,只不过是顺序稍微换了一下,就是一个新的页面,虽然基于模板思想来写的话也能减少不少代码,但是相对的不那么方便,笔者最近 ...
- gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
前言 Excel功能强大,应用广泛.随着web应用的兴起和完善,用户的要求也越来越高.很多Excel的功能都搬到了sass里面.恨不得给他们做个Excel出来...程序员太难了... 去年我遇到了 ...
- HT for Web列表和3D拓扑组件的拖拽应用
很多可视化编辑器都或多或少有一些拖拽功能,比如从一个List列表中拖拽一个节点到拓扑组件上进行建模,并且在拖拽的过程中鼠标位置下会附带一个被拖拽节点的缩略图,那么今天我们就来实现这样的拖拽效果. 首先 ...
- Unity3D 使用 UI 的 Grid Layout Group 组件。
1.首先创建一个容器,用于存放列表项的内容. 这里使用 Panel 来做为容器. 这里要注意! “Grid Layout Group”是要增加在容器的游戏对象里. 同时,只有容器对象的子对象才有排列效 ...
随机推荐
- 【Python】Pandas操作Excel
一:Pandas操作Excel 1.1: 创建/读取excel文件 读取excel pd.read_excel(filepath) 读取指定标题行 pd.read_excel(filepath,hea ...
- React项目国际化-React-intl
npx create-react-app react-intl-demo && cd react-intl-demo,创建react-intl-demo项目.npm install r ...
- 2024已过半,还没试过在vue3中使用ioc容器吗?
Vue3 已经非常强大和灵活了,为什么还要引入 IOC 容器呢?IOC 容器离不开 Class,那么我们就从 Class 谈起 Class的应用场景 一提起 Class,大家一定会想到这是 Vue 官 ...
- Python获得操作日志的最后几行记录
该方法一般用于获得操作日志的最后几行记录 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 f = open('seek.txt', 'rb') 4 ...
- oeasy教您玩转python - 010 - # 不换行输出
不换行输出 回忆上次内容 \n 就是换行 他对应着 ascii 字符的代码是(10)10进制 他的英文是 LF,意思是Line Feed 这样我就可以自由的控制哪里换行了! 可以做下面这个框架标题吗? ...
- oeasy教您玩转vim - 79 - # 编码格式encoding
- `help encoding-name`  不会特别占内存(对比postman) 使用方法:idea中安装插件 controller方法中点击 选择对应 ...
- 轻量级SpringBoot Office文档在线预览框架
框架简介 介绍:基于开源项目KkFileView源码提取出,封装成仅用于 Office文档预览(格式转换) 功能的一个通用组件; 原理是把Word转成PDF,PPT转成PDF,Excel转成HTML; ...
- Python+requests编写接口用例
1.python编写接口用例需要依赖requests模块,我们先确认本地是否安装了requests模块,没有安装的先进行安装. pycharm工具查看已安装的模块:File->Setting-& ...
- 【Java】 Springboot+Vue 大文件断点续传
同事在重构老系统的项目时用到了这种大文件上传 第一篇文章是简书的这个: https://www.jianshu.com/p/b59d7dee15a6 是夏大佬写的vue-uploader组件: htt ...