@antv/x6 要求不显示水平滚动条,并且如果水平方向上显示不全的节点,则要求自动显示全部节点,垂直方向可以出现滚动条来滚动显示所有的节点。

本文主要是介绍@antv/x6 要求不显示水平滚动条,并且如果水平方向上显示不全的节点,则要求自动显示全部节点,垂直方向可以出现滚动条来滚动显示所有的节点。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、要求一共有二个:

  • 要求一:水平滚动条不显示。之前的文章中就已经发表过,可以用Scroller的className来处理。
  • 要求二:水平方向上显示全部节点,如果有显示不全的节点(即看不到的节点)要求能够显示出来,垂直方向的滚动条可以显示出来,然后用滚动条来滚动显示下面看不到的节点。

2、思路:

  • 思路一:水平不显示滚动条。vue3 @antv/x6 使用画布滚动条以后的几个问题的解决_antv x6超出屏幕滚动条-CSDN博客
graph.use(new Scroller({enabled: true,padding: {top: 0,right: 0,bottom: 0,left: 0,},pageVisible: false,pageBreak: false,autoResize: true,className: 'scrollerCss',}),);
  • 思路二:水平方向上显示所有节点。

可以通过节点的视口的坐标与容器的宽度进行比较,查看是否已经超过,如果超过,就需要重新处理容器的rect,这样就可以了。

// 自定义函数来检测节点是否完全显示function isNodeCompletelyVisible(node) {const bbox = node.getBBox(); // 获取节点的包围盒// const viewport = graph.getContentArea(); // 获取画布视口// console.log(bbox.x, viewport.x, bbox.right, viewport.x + viewport.width);// 检查节点的四个角是否都在视口内return (// bbox.x > viewport.x &&// bbox.y > viewport.y &&// bbox.right < viewport.x + viewport.width &&// bbox.bottom < viewport.y + viewport.height// bbox.x > viewport.x && bbox.right > viewport.x + viewport.widthbbox.x > unref(containerWidth));}

注掉的部分是baidu ai生成的代码,实测还是有些问题,与我们项目的要求还是不太相符。

通过实测,发现bbox.x > unref(containerWidth),这样就会返回true,那么我们就要重新设置rect来达到显示所有节点的效果。

const containerWidth = ref(0);
function resizeFitContent() {let nodes = graph.getNodes();let reqResize = false;nodes.forEach((node) => {if (!reqResize) {reqResize = isNodeCompletelyVisible(node);}});if (reqResize) {let rect = graph.getContentArea();// console.log(rect.x, rect.y, rect.width, rect.height);//下面是我们实测的padding与rect,需要根据自己项目的实际情况进行调整。graph.zoomToRect({x: rect.x - 10,y: rect.y,width: rect.width + 20,height: viewState.height - 100,},{padding: {top: '0px',right: '30px',bottom: '0px',left: '30px',},},);}

3、最好上张图,来明确下效果:

一开始只显示了四个节点,然后我们通过检测要不要自动调整以适应画布,然后看到所有的节点。

通过上面的设置,最好我们就可以看到所有的节点,如果屏幕够大,就不需要调整了。

4、上面不仅是一个显示所有节点的实现,也可以理解为适应屏幕大小的方案。

5、因为我们这个是可以显示垂直滚动条,来滚动显示内容的,如果是不匀许,那么我们就得考虑要同时处理。

这篇关于@antv/x6 要求不显示水平滚动条,并且如果水平方向上显示不全的节点,则要求自动显示全部节点,垂直方向可以出现滚动条来滚动显示所有的节点。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128004

相关文章

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

idea中project的显示问题及解决

《idea中project的显示问题及解决》:本文主要介绍idea中project的显示问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录idea中project的显示问题清除配置重China编程新生成配置总结idea中project的显示问题新建空的pr