@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

相关文章

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下

IDEA如何让控制台自动换行

《IDEA如何让控制台自动换行》本文介绍了如何在IDEA中设置控制台自动换行,具体步骤为:File-Settings-Editor-General-Console,然后勾选Usesoftwrapsin... 目录IDEA如何让控制台自http://www.chinasem.cn动换行操作流http://www

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W