html - 在表格单元格中查找每张图片的 X 和 Y 坐标

标签 html css canvas html5-canvas

我正在尝试创建一个配对游戏。我已经用要匹配的元素创建了左右 td。中间的 td 包含一个 Canvas 。

当有正确匹配时,我想在 Canvas 上画线来匹配项​​目。为此,我需要每张图片的坐标,然后在 Canvas 中相应地绘制它。下面是示意图

enter image description here

红色代表td 绿色代表我想画的线

x 坐标没有太大问题,因为我只取 Canvas 的宽度 (300px)(从 0 到 300 绘制),但问题是 y 坐标。

我的想法是

  1. 找到图片1的y坐标

  2. 添加 picture1 的一半像素,使其位于 picture1 的“中心”

  3. 对图片2做同样的事情

  4. 使用这些坐标画线

有没有办法找到表格中图片的y坐标,因为它与 Canvas 的y坐标相等?

HTML

<table class="first">
  <tr>
    <td>
      <ul class="firstleft"></ul>
    </td>
    <td>
      <canvas id="myCanvas" resize></canvas>
    </td>
    <td>
      <ul class="firstright"></ul>
    </td>
  </tr>
</table>

CSS

table {
  margin-left: auto;
  margin-right: auto;
}
table ul {
  list-style-type: none;
  margin-left: 50px;
  padding: 0;
  padding-left: 5px;
  width: 200px;
}

JS

var canvas = document.getElementById('myCanvas');
ctx = canvas.getContext("2d")
ctx.lineWidth = 6;
ctx.strokeStyle = "#333";
/* Drawing part using an example*/
ctx.beginPath();
ctx.moveTo(100, 250);
ctx.bezierCurveTo(150, 100, 350, 100, 400, 250);
ctx.stroke();

最佳答案

这是一个过于冗长的代码块,没有简化代码以加强清晰度。它也只处理左侧,但显然您会更改函数以将名称和位置数组作为参数,以支持左侧和右侧等。

var yPositionForMiddleOfEachImage = [];
var myImageNames = ['leftImage0', 'leftImage1', 'leftImage2']; //etc

var calculateYValuesForLeftSide = function () {
  var thisImagesHeight = 0, halfOfImageHeight = 0, totalOfAllPreviousImagesHeight = 0;
  for (var i = 0; i < myImageNames.length; i++) {
    thisImagesHeight = document.getElementById(myImageNames[i]).clientHeight;
    halfOfImageHeight = thisImagesHeight / 2;

    yPositionForMiddleOfEachImage.push(totalOfAllPreviousImagesHeight + halfOfImageHeight);
    totalOfAllPreviousImagesHeight += thisImagesHeight;
  }
};

var getCanvasLeftSideYPosition = function (imgPosition) {
  return yPositionForMiddleOfEachImage[imgPosition];
};

关于html - 在表格单元格中查找每张图片的 X 和 Y 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35347642/

相关文章:

css - 在 IE 中背景渐变没有延伸到底部

css - Sass - 从指定多个值的属性中获取一个值

Delphi定制图纸-发光玻璃

java - 无法使用 Selenium WebDriver 找到 Canvas 上的元素

javascript - HTML5 Canvas : I'm trying to load an image to the canvas

html - spring thymeleaf 文字下一行

javascript - 如何仅使用客户端解决方案为桌面设备呈现 Javascript 和 CSS?

javascript - JQuery 在不重新加载页面的情况下更新 div 的 HTML

HTML 链接工作不正常且显示不可见

javascript - 如何通过单击javascript更改文本