Как установить холст поверх изображения в html
Скажем, у меня есть index.html с холстом в нем:
<html>
<head>
</head>
<body style="text-align: center;background: #f2f6f8;">
<div style="display:inline-block;width:auto; margin: 0 auto; background: black; position:relative; border:5px solid black; border-radius: 10px; box-shadow: 0 5px 50px #333">
<canvas id="gameCanvas" width="320" height="480"></canvas>
</div>
</body>
</html>
и холст показывает ok таким образом ~~~
Теперь я хочу поместить изображение в качестве фона за холстом, и я попытался добавить тег img в тело:
<html>
<head>
</head>
<body style="text-align: center;background: #f2f6f8;">
<img src="xxx.png" alt="" />
<div style="display:inline-block;width:auto; margin: 0 auto; background: black; position:relative; border:5px solid black; border-radius: 10px; box-shadow: 0 5px 50px #333">
<canvas id="gameCanvas" width="320" height="480"></canvas>
</div>
</body>
</html>
но затем полотно появилось после изображения не поверх него...
Я действительно ничего не знаю о html Я думаю, что это не должно быть так сложно сделать, надеюсь кто-то может дать руку здесь, спасибо:)
Ответы
Ответ 1
Живая демонстрация
Вам просто нужно использовать z-index
. Я помещаю изображение и элемент canvas в контейнер и размещаю их так, чтобы холст всегда находился над изображением.
Еще одно замечание: вы не должны изменять размер вашего холста с помощью CSS, вы всегда должны делать это через свойства напрямую. В моей скрипке я сделал это через JS.
Разметка
<div id="container">
<img class='img' src="http://lorempixel.com/320/480/" alt="" />
<canvas id="gameCanvas" width="320" height="480"></canvas>
</div>
CSS
body{text-align: center;background: #f2f6f8;}
.img{position:absolute;z-index:1;}
#container{
display:inline-block;
width:320px;
height:480px;
margin: 0 auto;
background: black;
position:relative;
border:5px solid black;
border-radius: 10px;
box-shadow: 0 5px 50px #333}
#gameCanvas{
position:relative;
z-index:20;
}
Ответ 2
вы можете нарисовать изображение в холсте, как это, вместо того, чтобы помещать canvas
в изображение
var topMap = new Image();
topMap.src = "myiamge.jpeg";
function drawMap() {
context.clearRect(0, 0, WIDTH, HEIGHT);
context.drawImage(topMap, 0, 0);
}
function init() {
drawMap();
}
topMap.onload = function() {
init();
}
Ответ 3
Вы можете установить фоновое изображение для холста с помощью background-image: url('xxx.png');
, но фон не будет отображаться, если пользователь нажимает View image
в браузере.
<canvas style="background-image: url('xxx.png');"id="gameCanvas" width="320" height="480"></canvas>
Или используйте JavaScript как Pranay Rana (лучше, если у вас есть другие уровни или вам нужно изменить фон позже):)