javascript - 可交互/可点击的 HTML 图像图

标签 javascript html canvas

我想显示一个类似于下图的图表。我希望节点(A、B、C、...)可以点击,并且我可以显示一个小的弹出菜单,让用户可以选择他们想要做什么。

我知道我可以用 Canvas 显示类似的东西,但根据我的理解,我必须计算出每个节点(可能有 50 多个)的坐标来编写点击函数。

我只是在寻找使用标准 html、css、js 或使用库(如果使用库,我需要图形在移动设备上可平移和交互)的方法来实现此目的的方向。

Example of a graph I might want to display

最佳答案

我会用 Canvas 来做这个。你肯定知道你把信放在哪里了。每当你放一个字母时,只需存储它的坐标并实现一个函数,该函数会告诉你给定的 X、Y 对是否在给定字母的矩形内。假设你存储了一个字母数组,其中有 startX、startY、endX、endY 成员,那么你可以这样做:

function isInRectangle(letter, x, y) {
    return ((x >= letter.startX) && (y >= letter.startY) && (x <= letter.endX) && (y <= letter.endY));
}

function getClickedLetter(letters, x, y) {
    for (var letter of letters) if (isInRectangle(letter, x, y)) return letter;
    //by default returns undefined
}

关于javascript - 可交互/可点击的 HTML 图像图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54982918/

相关文章:

java - 您不需要 Canvas 或 JPanel 来绘图吗?

javascript - 查询指针数组 Mongoose Node.js

javascript - 用 Python 发布交互式科学成果

javascript - 替换正则表达式中以特定字符开头并以特定字符结尾的字符串

javascript - 向上和向下调整滚动位置到最近的包装器 div

javascript - iPad 方向改变后页面元素放置不当

javascript - HTML5 Canvas 圆形文本

javascript - 测试两个字符串是否相等会给出奇怪的结果

javascript - 通过范围 slider 旋转图像

javascript - 为什么 drawImage 在 Safari 中的执行速度比 Chrome 或 Firefox 快得多?