javascript – 如何让jointjs单元格溢出纸张?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何让jointjs单元格溢出纸张?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1806字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 如何让jointjs单元格溢出纸张?](/upload/InfoBanner/zyjiaocheng/700/4fc441c4b5eb4dc2aac4e8d1e3d859a8.jpg)
我正在使用jointjs制作用户可编辑的图表.用户可以拖动它们并重新定位每个单元格.但是,当一个单元格被拖到边缘时,它会溢出并被切断.我希望防止这种情况发生,而不是单元格在到达纸张边缘之前停止而不允许越过边缘,因此总是完全保留在纸张内.这个行为可以在jointjs自己的演示中看到:
http://www.jointjs.com/tutorial/ports
尝试将单元格拖动到边缘,您将看到它最终在穿过纸张元素的边缘时变得隐藏.
其次,我使用插件进行有向图布局,在这里找到:
http://jointjs.com/rappid/docs/layout/directedGraph
如您所见,只要您的点击布局,树位置就会自动移动到纸张元素的左上角.如何修改这些默认位置?我看到的所提供函数的唯一选项是行之间的空间和节点之间的空间,没有初始位置.假设我想在点击“布局”时将树显示在纸张中间,我将在哪里进行更改?在此先感谢您的帮助.
解决方法:
我认为我以前的答案仍然可行,但这就是我在项目中实现的方法.它比其他答案有一个优势,因为它不需要你使用自定义的elementView,看起来更简单(对我来说).
(Working jsfiddle:http://jsfiddle.net/pL68gs2m/2/)
在纸上,处理cell:pointermove事件.在事件处理程序中,计算触发事件的cellView的边界框,并使用它来约束移动.
var graph = new joint.dia.Graph;
var width = 400;
var height = 400;
var gridSize = 1;
var paper = new joint.dia.Paper({
el: $('#paper'),
width: width,
height: height,
model: graph,
gridSize: gridSize
});
paper.on('cell:pointermove', function (cellView, evt, x, y) {
var bbox = cellView.getBBox();
var constrained = false;
var constrainedX = x;
if (bbox.x <= 0) { constrainedX = x + gridSize; constrained = true }
if (bbox.x + bbox.width >= width) { constrainedX = x - gridSize; constrained = true }
var constrainedY = y;
if (bbox.y <= 0) { constrainedY = y + gridSize; constrained = true }
if (bbox.y + bbox.height >= height) { constrainedY = y - gridSize; constrained = true }
//if you fire the event all the time you get a stack overflow
if (constrained) { cellView.pointermove(evt, constrainedX, constrainedY) }
});
内容总结
以上是互联网集市为您收集整理的javascript – 如何让jointjs单元格溢出纸张?全部内容,希望文章能够帮你解决javascript – 如何让jointjs单元格溢出纸张?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。