码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 工作记录: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;
      }
      
      • 1
      • 2
      • 3

      在这里插入图片描述

    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;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

      改后的效果:

      在这里插入图片描述

    最终效果:

    在这里插入图片描述

  • 相关阅读:
    Mysql数据库的基础语句
    JUC-Future、CompletionService、CompletableFuture
    Maven仓库Nexus安装部署
    【前端精进之路】JS篇:第1期 数据类型总结
    前端开发ui设计稿在网页上的实现
    3、《创建您自己的NFT集合并发布一个Web3应用程序来展示它们》在本地铸造 NFT
    差分信号变送器模块使用说明
    Java 多线程 先批量执行1号任务和部分2号任务,等待1号全部任务完成后,再执行剩下的2号任务内容 - CountDownLatch
    Windows 启动 Idea 报错 if you already hava a 64-bit JDK ... 以及 failed to create jvm
    Python3.9的69个内置函数(内建函数)介绍,并附简单明了的示例代码
  • 原文地址:https://blog.csdn.net/tangran0526/article/details/137636386
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号