Каждая операция рисования на холсте HTML5 рисует поверх и (вообще) стирает все, что было под ним. Если вы хотите, чтобы текст рисовался поверх прямоугольников, вы должны позвонить fillText()
после и набрать fill()
для созданных вами ректов.
Неважно, в каком порядке команды рисования добавляются к контуру, именно когда происходит fill()
, определяется, когда применяются чернила мгновенного высыхания. Поскольку вы делаете это после всех ваших вызовов fillText()
, прямоугольники рисуются сверху.
Я бы изменил ваш код следующим образом:
context.font = "18pt Arial";
context.strokeStyle = "#000";
context.lineWidth = 0.1;
for (var i=0; i<8; i++) {
context.fillStyle = "#3c0";
context.fillRect(30, 0 + (i * 50), 50, 50);
context.strokeRect(30, 0 + (i * 50), 50, 50);
context.fillStyle = "#fff";
context.fillText("blah", 0, 0 + (i * 50));
}
В качестве альтернативы, если вы не хотите использовать fillRect()/strokeRect()
:
context.font = "18pt Arial";
context.strokeStyle = "#000";
context.lineWidth = 0.1;
for (var i=0; i<8; i++) {
context.beginPath();
context.fillStyle = "#3c0";
context.rect(30, 0 + (i * 50), 50, 50);
context.fill();
context.stroke();
context.fillStyle = "#fff";
context.fillText("blah", 0, 0 + (i * 50));
}