javascript - 使用 D3.js 在 SVG 中实现可滚动记录列表
问题描述
我想使用 D3.js 在 SVG 中实现可滚动记录的列表。而且我不知道一旦特定记录的高度发生变化,如何将所有记录向下或向上移动。
这就是我的意思。让我们假设我们有一个记录列表(每个记录使用嵌套表示svg
,并使用相对于根的位置和维度的百分比值进行定位svg
):
现在我更新其中一条记录中的数据,使其高度增加或减少。因此,我需要将记录下方的所有记录向下或向上移动。
我怎样才能做到这一点?我考虑过保留所有记录的数组,当其中一个记录发生变化时,它的高度会通过数组并更新y
每个记录的位置。但这似乎是非常低效的解决方案。还有其他方法可以解决这个问题吗?
解决方案
如果您使用的是 SVG,而不是 html,您可能必须实现自己的滚动解决方案。几年前我通过在容器中保留项目列表来完成此操作,如果添加了新项目,您首先更新应该可见的内容,然后更新这些可见项目的位置。如果 y/x 坐标超出范围,则将它们从 dom 中删除,这就是我的意思:
另一种解决方案可能是使用 SVG foreignObject并直接嵌入 HTML,我猜这会容易得多。
推荐阅读
- sql - 如何在 BigQuery 中找到每条记录(由 ID 标识)的所有不同值?
- html - 为什么我的新第二页显示黑色,代码甚至不起作用
- android - 使用 PasswordTransformationMethod 在 kotlin 中将字符屏蔽为星号
- python - 从多列python查找
- r - 如何将数据从 R 数据框中的第 i 行第 2 列更新到第 j 列第 1 行?
- go - 如何使用 redisgo Api 设置带有 Expiry 的密钥
- html - 页面适用于桌面,但页眉在移动设备上被截断
- sql - SQL SERVER - GROUP BY 条件(当数据不存在时)
- regex - 使用正则表达式从 Twitter 数据中提取“提及”的问题
- reactjs - 页面内容未显示在源代码中