右側にあるhtml-table-tdsと並べてキャンバスの赤いボックスに描画するスクリプトが必要です...
それがどのように行われるかです:http: //jsfiddle.net/KaDnQ/1/
HTML:
<table border="1">
<tr>
<td valign="top">
<table class="t2" border="1">
<tr><td>1</td></tr>
<tr><td>2</td></tr>
<tr><td>3</td></tr>
<tr><td>4</td></tr>
<tr><td>5</td></tr>
<tr><td>6</td></tr>
<tr><td>7</td></tr>
<tr><td>8</td></tr>
<tr><td>9</td></tr>
<tr><td>10</td></tr>
<tr><td>11</td></tr>
<tr><td>12</td></tr>
<tr><td>13</td></tr>
<tr><td>14</td></tr>
<tr><td>15</td></tr>
<tr><td>16</td></tr>
<tr><td>10</td></tr>
<tr><td>11</td></tr>
<tr><td>12</td></tr>
<tr><td>13</td></tr>
<tr><td>14</td></tr>
<tr><td>15</td></tr>
<tr><td>16</td></tr>
<tr><td>10</td></tr>
<tr><td>11</td></tr>
<tr><td>12</td></tr>
<tr><td>13</td></tr>
<tr><td>14</td></tr>
<tr><td>15</td></tr>
<tr><td>16</td></tr>
<tr><td>10</td></tr>
<tr><td>11</td></tr>
<tr><td>12</td></tr>
<tr><td>13</td></tr>
<tr><td>14</td></tr>
<tr><td>15</td></tr>
<tr><td>16</td></tr>
<tr><td>10</td></tr>
<tr><td>11</td></tr>
<tr><td>12</td></tr>
<tr><td>13</td></tr>
<tr><td>14</td></tr>
<tr><td>15</td></tr>
<tr><td>16</td></tr>
<tr><td>10</td></tr>
<tr><td>11</td></tr>
<tr><td>12</td></tr>
<tr><td>13</td></tr>
<tr><td>14</td></tr>
<tr><td>15</td></tr>
<tr><td>16</td></tr>
</table>
</td>
<td valign="top"><canvas id="x"></canvas></td>
</tr>
</table>
CSS:
body {
margin: 30px;
}
.t2 {
border-collapse: collapse;
border-spacing: 0;
}
.t2 td {
padding: 5px;
text-align: center;
}
canvas {
border: 1px dashed green;
}
Js:
var canvasWidth = $(".t2").outerWidth()*3;
var canvasHeight = $(".t2").outerHeight();
var c = document.getElementById("x");
var c2 = c.getContext("2d");
c.width = canvasWidth;
c.height = canvasHeight;
$('.t2 td:odd').each(function() {
var cur = $(this);
var topOffset = 0;
var shouldCount = true;
var h = $(this).outerHeight();
$('.t2 td').each(function() {
if (shouldCount) {
topOffset += h;
if (cur.is(this)) {
topOffset -= h;
shouldCount = false;
}
}
});
c2.fillStyle = '#f00';
c2.beginPath();
c2.moveTo(0, topOffset);
c2.lineTo(25, topOffset);
c2.lineTo(25, topOffset+h);
c2.lineTo(0, topOffset+h);
c2.closePath();
c2.fill();
});
Chromeでの外観は次のとおりです(正しい):
問題は、Firefoxの下部のボックスが「親」のtdsからオフセットされていることです。
Firefoxでのレンダリングが間違っている理由とその修正方法は何ですか?
更新: FF 19(mac)およびIE 9(win)で間違ったレンダリングが表示されます!