【发布时间】:2015-04-16 20:48:27
【问题描述】:
第一次发布问题,我预先声明我的 HTML/CSS/Javascript 知识是……我们应该说是杂乱无章的。我通常会做到,但我似乎无法弄清楚这一点。
我想要做的就是显示一个居中的图像。然后创建一个画布,将画布放在图像上,然后在其上绘图。 然后在调整浏览器大小时让画布与图像保持一致。这是我到目前为止所拥有的(我承认,我从另一张海报中获得了很多 Javascript 代码,我正在尝试将其用作学习示例):
<!DOCTYPE html>
<html>
<head>
<script>
function myInit()
{
hdc = set_canvas();
hdc.fillRect(0, 0, 50, 50);
}
function set_canvas()
{
var img = document.getElementById('audubon_image');
var x = img.offsetLeft,
y = img.offsetTop,
w = img.clientWidth,
h = img.clientHeight;
var c = document.getElementById('myCanvas');
img.parentNode.appendChild(c);
c.style.zIndex = 1;
c.style.left = x + 'px';
c.style.top = y + 'px';
c.setAttribute('width', w+'px');
c.setAttribute('height', h+'px');
hdc = c.getContext('2d');
return(hdc);
}
</script>
<style>
#container
{
text-align: center;
}
canvas
{
pointer-events: none;
position: absolute;
border: 1px solid black;
}
</style>
</head>
<body onload='myInit()'>
<div id="container">
<img src="http://www.sturtz.org/john/audubon/wp-content/uploads/2015/04/Audubon.jpg" id="audubon_image" />
<canvas id='myCanvas'></canvas> <!-- gets re-positioned in myInit(); -->
</div>
</body>
</html>
应该发生什么:图像被放置。然后 Javascript 代码确定图像的位置和大小,并将画布设置为匹配。然后在画布上绘制(目前,左上角有一个可爱优雅的方块)。
到目前为止,一切都很好。但是由于图像居中,如果重新调整浏览器的大小(特别是变宽或变窄),图像的位置会相对于浏览器窗口的左右边缘移动。
为画布指定“位置:绝对”后,画布不会移动(不出所料;我想这就是绝对的意思)。所以图像和画布不会保持对齐。
如果我将画布 CSS 更改为“位置:相对”,那么当我重新调整窗口大小时,图像和画布相对于彼此保持在相同的位置(这是我想要的)。但是我无法将画布放在图像的顶部。
我的直觉是这应该是可能的(容易,甚至),我缺乏知识导致我看不到它。
【问题讨论】: