如果标签溢出它的容器,我想在标签上自动滚动(效果如下:https ://codepen.io/jamesbarnett/pen/kfmKa )。SVG 上的标签呈现为 foreignObject 标签,其中包含包装到两个 div 中的值。在加载 mxGraph 之后,我尝试覆盖 getLabelValue 函数,因此它将标签值包装到另一个具有必要样式的 div 中,但随后标签呈现在 SVG 的左上角而不是元素位置。
window.mxCellRenderer.prototype.getLabelValue = function(state) {
return (
'<div class="scrolling-text">' +
state.view.graph.getLabel(state.cell) +
'</div>'
);
};
CSS:
.scrolling-text {
position: absolute;
overflow: hidden;
animation: marquee 5s linear infinite;
}
@keyframes marquee {
0% {
transform: translateX(100%);
}
100% {
transform: translateX(-100%);
}
}
我设法摆脱了 foreignObjectwindow.mxClient.NO_FO = true;
这样标签 div 在 SVG 之外,它的位置是正确的,但是它的包装 div 丢失了它的尺寸,所以标签不可见。
要点:
- 使用 draw.io 创建图表,然后使用 mxGraph 显示。
- 标签值将随着 mxValueChange 事件发生变化,并且动画不应在更改后重置。
如何在给定的约束下实现这种效果?