javascript - 在 js 中平移和缩放“无限”方格纸背景
问题描述
对于我正在从事的项目,我希望有一个可以无限平移、放大和缩小以及定位和移动该背景上的元素的背景。
我能想到的最接近的例子是:https ://www.desmos.com/calculator 。此外,我将在该网格顶部放置不同的元素并移动它们。为此,我计划使用 React,这不会有太大问题。我遇到的主要问题是如何构建上述背景,以便它可以检查我的所有要求。我能够绘制一个网格,但是对于四处移动和放大和缩小(这样网格“顶部”的所有元素也可以放大和缩小)对我来说是具有挑战性的。我也希望它可以在不使用任何特定绘图库和纯 JS 的情况下完成,但我愿意接受建议。任何帮助将不胜感激。
PS我正在寻找如何实现我的目标的一般指导方针。例如不同的技术或方法,而不是具体的解决方案。如果问题太模糊或格式错误,我深表歉意,因为这是我第一次在这里问。
解决方案
Desmos 使用画布绘制“无限”网格。您可以使用 three.js 或 konva.js 之类的东西来实现这一点。画布的一个缺点是您不能在网格上放置 HTML 元素。
编辑:使用三个 JS,您可以使用 gridHelper 函数并通过 Pi 设置围绕 x 轴的旋转。这应该给你一个“2d”网格。然而,我发现 gsap 和 Draggable 插件更适合这个。
https://codepen.io/osiv/pen/gOwxmvO
这绝对是一项正在进行的工作,但它给出了我正在为之工作的想法。缩放基本上是防止默认滚轮行为并更改背景图像大小:
handleWheelEvent(e) {
e.preventDefault();
let el = document.getElementById("grid-container");
let currengBackgroundSize = this.getPixelStringAsInteger(getComputedStyle(el).backgroundSize);
if(e.deltaY < 0) {
// decrease size
} else {
// increase size
}
}
推荐阅读
- c# - Hackerrank 30 天代码 - 第 8 天 & C# - 运行时错误
- azure-active-directory - Graph Explorer:需要管理员批准
- python - 从网站上的按钮下载 csv 文件的 Python 脚本
- python - Python 麻烦(缺少 1 个必需的位置参数:'self')
- microsoft-graph-api - 获取对话成员导致错误请求 (Microsoft Graph)
- c - Sprintf 将大量数字变为“4”
- linux - 使用 awk、tr 或 sed 从文本文件中删除新行以使文本出现在单行上
- python - 如何使用保存在另一个 DataFrame 中的指令对 Python DataFrame 进行算术运算?
- python - 使用熊猫在数据框之间进行值查找?
- flutter - easy_localization 具有其他语言的键的后备值