JavaScript を使用して、Web サイトの DOM 要素の周りに四角形を描画しています。
問題は、長方形が間違った位置に描画されることです。
キャンバスは実際のキャンバスのように機能するため、キャンバスを塗りつぶす前にすべてを「事前描画」する必要があることを知っています。そうしないと、描画した順序で要素が互いに重なり合ってしまいます。
そのため、ループの外側でキャンバスとコンテキストを定義しています。
これは私のコードです:
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
context.globalAlpha = 0.5;
//Set canvas width/height
canvas.style.width='100%';
canvas.style.height='100%';
//Set canvas drawing area width/height
canvas.width = document.width;
canvas.height = document.height;
//Position canvas
canvas.style.position='absolute';
canvas.style.left=0;
canvas.style.top=0;
canvas.style.zIndex=100000;
canvas.style.pointerEvents='none'; //Make sure you can click 'through' the canvas
document.body.appendChild(canvas); //Append canvas to body element
var listingsRect = Array.prototype.map.call(document.querySelectorAll('.rc'), function(e) {
return e.getBoundingClientRect();
});
listingsRect.forEach(function(listingRect) {
var x = listingRect.left;
var y = listingRect.top;
var width = listingRect.width;
var height = listingRect.height;
//Draw rectangle
context.rect(x, y, width, height);
context.fillStyle = 'yellow';
context.fill();
});
ただし、
をcanvas.width
およびにそれぞれ変更すると、キャンバスは長方形を正しい位置に描画しますが、Web サイトの可視領域にのみ描画します (明らかに)。canvas.height
window.innerWidth
window.innerHeight
誰かが私のコードの何が問題なのか教えてもらえますか?
JS ビンは次のとおりです。