#html #css #canvas
#HTML #css #canvas
Вопрос:
Я хочу наложить два элемента canvas друг на друга. Я пробовал это, но они всегда отображаются один под другим. Canvas с идентификатором canvas1 должен быть нижней плоскостью, а canvas2 — верхней плоскостью.
<div class="container">
<canvas class="canvas" id="canvas1" width="500" height="500"></canvas>
<canvas class="canvas" id="canvas2" width="500" height="500"></canvas>
</div>
.container {
display: inline-block;
position: relative;
float: left;
}
#canvas1,
#canvas2{
position: absolute;
top: 0;
left: 0;
background-color: transparent;
}
Ответ №1:
Я добавил свойство position в #canvas1
и использовал z-index
свойство. Чем выше значение z-index
, тем выше оно будет отображаться. Все, что вам нужно, это чтобы z-index
то, что вы хотите сверху, было выше, чем z-index
то, что вы хотите внизу.
#canvas1 {
position: relative;
background: black;
z-index: -1;
}
#canvas2{
position: absolute;
top: 0;
left: 0;
background-color: red;
z-index: 0;
}
<!DOCTYPE html>
<html>
<head>
<style>
</style>
</head>
<body>
<div class="container">
<canvas class="canvas" id="canvas1" width="500" height="500"></canvas>
<canvas class="canvas" id="canvas2" width="500" height="500"></canvas>
</div>
</body>
</html>
Комментарии:
1. Когда я делаю это, вверху появляется черный элемент canvas (canvas1), а внизу — красный элемент canvas (canvas2). Но я хочу, чтобы они перекрывались.
2. @elli возможно, я чего-то недопонимаю. Вы хотите, чтобы они были слегка прозрачными, чтобы вы могли видеть сквозь перекрывающуюся часть? Если нет, есть ли у вас примерное изображение того, чего вы пытаетесь достичь?
3. Нижний слой должен иметь форму, например прямоугольник. Я хочу загрузить изображение на верхний слой. Вы все равно должны видеть прямоугольник, несмотря на изображение. Вы понимаете, что я имею в виду?
4. Если элементы canvas пусты, они отображаются друг над другом. Но если объект находится внутри элемента canvas, он отображает элементы один под другим.