工作记录:vue-grid-layout 修改 margin 导致 item 高度剧烈变化

问题

用 vue-gird-layout 时发现,当改变 margin 值时,item 的尺寸也会跟着变化。

如下图:row height 和每个 item 的 h 都保持不变。修改 margin-y,item 的实际高度也跟着变了:
在这里插入图片描述


原因

研究了一番,发现原因。关键在于网格模式

考虑以下情况:第一列是两个 h=1 的item,第二列是一个 h=2 的 item。无论 margin 是多少,都应该保证第一和第二列的底部是平齐的(不然网格逻辑就崩溃了)

在这里插入图片描述
记 h=1 的 item 的实际高度为 real_height。
那么 h=2 的 item 的实际高度不应该是简单的 2 * real_height,而应该是 2 * real_height + margin_y。
同理 h=x 的 item 的实际高度应该是 x * real_height + (x-1) * margin_y

所以就出现了最上面说的问题。而且 h 越大的 item,需要“补齐”的 margin 就越多。


解决

其实 vue-grid-layout 的实现逻辑是合理的。但是不符合我的需求:我项目中的 row height 的值设置得比较小,导致每个 item 的 h 都很大。margin 稍微一变,item 的实际高度就剧烈变化,效果不好。

我的理想效果是:在保持网格系统效果(对齐)的同时,margin 变化时 item 的高度不要剧变。

思路:将 vue-grid-layout 的 margin-y 设置为 0,在 item 中自己模拟一个 margin 的效果

具体实现:

  1. 传给 grid-layout 的 marginY 恒为0

  2. item 内部模拟margin,grid-item 设置属性 drag-allow-from

    在这里插入图片描述
    整体效果:
    在这里插入图片描述

  3. 挪动 resize-handle 的位置

    .vue-grid-item:not(.vue-grid-placeholder) > .vue-resizable-handle {bottom: 50px !important;
    }
    

    在这里插入图片描述

  4. 把 placeholder 改小:

    placeholder 是在drag或者resize时的一个图形提示,下图粉色背景的:

    在这里插入图片描述

    placeholder 的大小没法改。正好它下面有一个没用的 .vue-resizable-handle。把真正的 placehoder 背景去掉,用它内部的 handle 伪装 placeholder。

    .vue-grid-placeholder {background: none !important;
    }
    .vue-grid-placeholder .vue-resizable-handle {position: absolute;bottom: 50px !important;background: pink !important;width: auto !important;height: auto !important;
    }
    

    改后的效果:

    在这里插入图片描述

最终效果:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

如何查看全球历史影像

目录 示例 2024年3月28日 2022年9月21日 2021年11月3日 2020年11月18日 2019年5月15日 2017年2月27日 2016年12月20日 如何在ArcGIS中加载 如何查看全球历史影像,今天给大家分享一个可以在线直接访问查看全球历史影像的网站(网址见文末&#xf…

flutter 设置启屏页 flutter_native_splash 坑记录

flutter_native_splash | Flutter packageCustomize Flutters default white native splash screen with background color and splash image. Supports dark mode, full screen, and more.https://pub.dev/packages/flutter_native_splash 发现一直白屏 原因是 代码中 下面…

前端路由的实现原理

当谈到前端路由时,指的是在前端应用中管理页面导航和URL的机制。前端路由使得单页应用(Single-Page Application,SPA)能够在用户与应用交互时动态地加载不同的视图,而无需每次都重新加载整个页面。 在前端开发中&…

vue3+elementui-plus实现无限递归菜单

效果图 实现方式是&#xff1a;通过给定的数据结构层数来动态生成多级菜单 menu.vue<template><el-menu:default-active"activeIndex"class"el-menu-demo"mode"horizontal"select"handleSelect"background-color"#f8f…

Echarts的饼图有哪些配置项,一文告诉你。

Echarts中的饼图&#xff08;Pie Chart&#xff09;有以下一些常用的配置项&#xff1a; 配置项一 Echarts中的饼图&#xff08;Pie Chart&#xff09;有以下一些常用的配置项&#xff1a; title&#xff1a;饼图的标题配置&#xff0c;包括text&#xff08;标题文本&#xf…

冈萨雷斯数字图像处理资源(课后习题答案+代码+图片)

冈萨雷斯数字图像处理相关资源整理&#xff0c;资源全部来源互联网&#xff0c;方便大家下载 冈萨雷斯数字图像处理相关资源整理 课后习题 冈萨雷斯数字图像处理源代码

程序猿成长之路之数据挖掘篇——朴素贝叶斯

朴素贝叶斯是数据挖掘分类的基础&#xff0c;本篇文章将介绍一下朴素贝叶斯算法 情景再现 以挑选西瓜为例&#xff0c;西瓜的色泽、瓜蒂、敲响声音、触感、脐部等特征都会影响到西瓜的好坏。那么我们怎么样可以挑选出一个好的西瓜呢&#xff1f; 分析过程 既然挑选西瓜有多个…

静态缺省路由的应用

静态缺省路由的应用 缺省路由是目的地址全零的特殊路由&#xff0c;可以由路由协议自动生成&#xff0c;也可以由手动配置。手动配置缺省路由&#xff0c;可以简化网络的配置&#xff0c;称为静态缺省路由。如果报文的目的地址无法匹配路由表中的任何一项&#xff0c;路由器将…

查看项目go代码cpu利用率

1.代码添加&#xff1a; "net/http"_ "net/http/pprof"第二步&#xff0c;在代码开始运行的地方加上go func() {log.Println(http.ListenAndServe(":6060", nil))}() 2.服务器上防火墙把6060打开 3.电脑安装&#xff1a;Download | Graphviz …

合并二叉树【c++】

#include <iostream> #include <vector> using namespace std;//双链表节点结构 typedef struct treeNode {int value;struct treeNode* left;struct treeNode* right;treeNode(int x) : value(x), left(nullptr), right(nullptr) {} } TreeNode;TreeNode* mergeTr…

BFS解决FloodFill算法:(Leetcode:733. 图像渲染)

题目链接&#xff1a;733. 图像渲染 - 力扣&#xff08;LeetCode&#xff09; 使用广度优先遍历算法解决该问题&#xff1a; 从初始位置开始搜索&#xff0c;初始位置符合条件就入栈&#xff0c;并修改初始位置值。初始位置出栈。 再从初始位置开始广度优先搜索&#xff08;…

免 Administrator 权限安装软件

以欧路词典为例, 从官网下载的安装包 https://www.eudic.net/v4/en/app/download 直接运行会弹出 UAC 提示需要管理员权限. 一个词典而已, 为啥要管理员权限呢? 答案是安装程序默认使用的安装路径是 C:\Program Files\ 这就不难理解了. 对于这种不需要其他额外权限的软件, 可以…

【大模型开源篇1】彦宏您怎么看LLaMA3的开源

Meta LLaMA是Meta公司开源的大模型&#xff0c;作为大模型开源界得鼻祖&#xff0c; 刚刚发布LLaMA3。从ChatGPT 拉开了大模型竞赛的序幕&#xff0c;Meta 选择了开源&#xff0c;至此大模型也开始百花齐放的时期&#xff0c;但是开源模型一直无法超过必源模型&#xff0c;如今…

图像超分辨率技术在AI去衣中的应用探索

在数字图像处理领域&#xff0c;图像超分辨率&#xff08;Super-Resolution, SR&#xff09;技术一直是研究的热点之一。该技术旨在从低分辨率的图像中恢复出高分辨率的图像&#xff0c;以提供更清晰、更丰富的细节信息。近年来&#xff0c;随着人工智能&#xff08;AI&#xf…

【电控笔记5.8】数字滤波器设计流程频域特性

数字滤波器设计流程&频域特性 2HZ : w=2pi2=12.56 wc=2*pi*5; Ts=0.001; tf_lpf =

windows实现文件共享

新建一块磁盘作为共享磁盘 开启该磁盘文件共享 访问该共享磁盘 上传镜像到该共享磁盘 在目标主机上查看已上传的共享镜像

【nmap】基于python实现nmap端口扫描

nmap下载&#xff1a;nmap 将所在路径放入环境变量&#xff1a; D:\Program Files\Nmap\zenmap\bin 安装模块 pip install python-nmap python代码实现&#xff1a; import nmapdef scan(host, min_port, max_port):port_range str(min_port) - str(max_port)nm nmap.Po…

Python | Leetcode Python题解之第43题字符串相乘

题目&#xff1a; 题解&#xff1a; class Solution:def multiply(self, num1: str, num2: str) -> str:if num1 "0" or num2 "0":return "0"m, n len(num1), len(num2)ansArr [0] * (m n)for i in range(m - 1, -1, -1):x int(num1[i…

【基础算法】双指针

1.移动零 移动零 思路&#xff1a; 利用双指针算法 cur&#xff1a;从左往右扫描数组&#xff0c;遍历数组 dest&#xff1a;处理好的区间包括dest dest初始化为-1&#xff0c;因为刚开始dest前应该没有非零元素。 即将非零元素移到dest之前即可 class Solution { public…

ArrayList与顺序表(2)

前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&#x1…