【问题标题】:draw rectangle over html with javascript用javascript在html上绘制矩形
【发布时间】:2013-11-07 16:11:48
【问题描述】:

我知道有一个类似的问题here,但问题和答案都没有任何代码。

我想做的是将此功能移植到 100% Javascript 解决方案。现在我可以使用 PHP 在 HTML 内容之上绘制一个矩形。

我使用 CasperJS 抓取网站,拍摄快照,将快照路径连同一个 json 对象发送回 PHP,该对象包含使用 GD 库绘制矩形所需的所有信息。那行得通,但现在我想将该功能移植到 Javascript 中。

我获取矩形信息的方式是使用getBoundingClientRect(),它返回一个带有topbottomheight,widthleftright的对象。

有没有办法将网站的 HTML “绘制”到画布元素上,然后在该画布元素上绘制一个矩形? 或者有什么方法可以使用 Javascript 在 HTML 上绘制一个矩形?

希望我的问题足够清楚。

这是我用来获取要在周围绘制矩形的元素的坐标的函数。

function getListingRectangles() {
    return Array.prototype.map.call(document.querySelectorAll('.box'), function(e) {
        return e.getBoundingClientRect();
});

【问题讨论】:

  • div是一个矩形元素,可以在页面上绝对定位...

标签: javascript html canvas


【解决方案1】:

您可以创建一个画布元素并将其放置在 HTML 页面的顶部:

//Position parameters used for drawing the rectangle
var x = 100;
var y = 150;
var width = 200;
var height = 150;

var canvas = document.createElement('canvas'); //Create a canvas element
//Set canvas width/height
canvas.style.width='100%';
canvas.style.height='100%';
//Set canvas drawing area width/height
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
//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 context = canvas.getContext('2d');
//Draw rectangle
context.rect(x, y, width, height);
context.fillStyle = 'yellow';
context.fill();

此代码应在距页面左上角 [100, 150] 像素处添加一个黄色矩形。

【讨论】:

  • 太棒了!还有一个问题,那个画布会覆盖我要突出显示的 div 元素吗?
  • 您可以通过更改代码顶部的变量 x、y、宽度、高度来定位矩形,如果这就是您的意思。如果你的意思是你能通过它点击下面的内容,那么是的。
猜你喜欢
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 2011-12-05
  • 2018-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多