Hallo,
ich versuche gerade eine kleine WebApp zu programmieren, komme aber beim Layout nicht weiter. Komme aus der C#/WPF Ecke, von HTML/CSS habe ich nicht viel Ahnung.
Ich möchte 2 Bilddateien übereinander darstellen. Auf beiden Bildern soll jeweils ein Canvas als Overlay erscheinen, so dass ich dort Punkte einzeichnen kann, die per WebSocket empfangen werden.
Nur Bilder übereinander ist kein Problem. Die Bilder einfach nacheinander in ein <div> rein.
Hab dann natürlich erstmal google gefragt und bin auf StackOverflow gelandet. Da wurde in mehreren Suchergebnissen immer dasselbe erzählt, z.B. hier https://stackoverflow.com/questions/10487292/position-absolute-but-relative-to-parent
CSS Position von Eltern <div> auf relative und CSS Position von Kind auf absolute. Dann noch z-index anpassen.
Das funktioniert aber nicht. Meine 2 Bilder und die 2 Canvas landen plötzlich alle übereinander.
Im folgenden Beispielcode habe ich für Testzwecke die Bilder durch ein Canvas ersetzt.
Im Browser sieht das so aus:
Erwartet hätte ich das hier:
Was mache ich falsch?
Absolute Positionen relativ zur gesamten Seite möchte ich nicht verwenden. Über den Bildern, wo als Platzhalter "Hallo Welt" steht, werden noch ein paar HTML Elemente hinzukommen. Dann sollen die Bilder auch automatisch weiter nach unten wandern. Die Overlays sollen immer genau über den Bildern bleiben.
ich versuche gerade eine kleine WebApp zu programmieren, komme aber beim Layout nicht weiter. Komme aus der C#/WPF Ecke, von HTML/CSS habe ich nicht viel Ahnung.
Ich möchte 2 Bilddateien übereinander darstellen. Auf beiden Bildern soll jeweils ein Canvas als Overlay erscheinen, so dass ich dort Punkte einzeichnen kann, die per WebSocket empfangen werden.
Nur Bilder übereinander ist kein Problem. Die Bilder einfach nacheinander in ein <div> rein.
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test</title>
</head>
<body>
<h1>Test</h1>
<div id="mylog" >Hallo Welt</div>
<div>
<img src="img1.png" />
</div>
<div>
<img src="img2.png" />
</div>
</body>
Hab dann natürlich erstmal google gefragt und bin auf StackOverflow gelandet. Da wurde in mehreren Suchergebnissen immer dasselbe erzählt, z.B. hier https://stackoverflow.com/questions/10487292/position-absolute-but-relative-to-parent
CSS Position von Eltern <div> auf relative und CSS Position von Kind auf absolute. Dann noch z-index anpassen.
Das funktioniert aber nicht. Meine 2 Bilder und die 2 Canvas landen plötzlich alle übereinander.
Im folgenden Beispielcode habe ich für Testzwecke die Bilder durch ein Canvas ersetzt.
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test</title>
<style>
</style>
</head>
<body>
<h1>Test</h1>
<div id="mylog" >Hallo Welt</div>
<div>
<div style="position: relative;">
<canvas id="bild1" width="320" height="240"
style="position: absolute; left: 0; top: 0; z-index: 0;" />
<canvas id="canvas1" width="320" height="240"
style="position: absolute; left: 0; top: 0; z-index: 1;" />
</div>
</div>
<div>
<div style="position: relative;">
<canvas id="bild2" width="320" height="240"
style="position: absolute; left: 0; top: 0; z-index: 2;" />
<canvas id="canvas2" width="320" height="240"
style="position: absolute; left: 0; top: 0; z-index: 3;" />
</div>
</div>
<script>
var canvas = document.getElementById("bild1");
var ctx = canvas.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(0, 0, 320, 240);
canvas = document.getElementById("canvas1");
ctx = canvas.getContext("2d");
ctx.fillStyle = "blue";
ctx.fillRect(0, 0, 320, 120);
canvas = document.getElementById("bild2");
ctx = canvas.getContext("2d");
ctx.fillStyle = "yellow";
ctx.fillRect(0, 0, 320, 240);
canvas = document.getElementById("canvas2");
ctx = canvas.getContext("2d");
ctx.fillStyle = "green";
ctx.fillRect(0, 0, 320, 120);
</script>
</body>
Im Browser sieht das so aus:
Erwartet hätte ich das hier:
Was mache ich falsch?
Absolute Positionen relativ zur gesamten Seite möchte ich nicht verwenden. Über den Bildern, wo als Platzhalter "Hallo Welt" steht, werden noch ein paar HTML Elemente hinzukommen. Dann sollen die Bilder auch automatisch weiter nach unten wandern. Die Overlays sollen immer genau über den Bildern bleiben.