Skip to content

Commit b425c54

Browse files
committed
2 parents 3864202 + 6a33036 commit b425c54

9 files changed

Lines changed: 477 additions & 0 deletions

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<h1>Deine eigene Homepage</h1>
2+
<ol>
3+
<li>
4+
Öffne die Seite <a href="https://ladigitale.dev/digipen/editeur.html" target="_blank">Digipen by LaDigitale</a>
5+
</li><li>Erstelle eine Internetseite zu einem Thema, das dich interessiert.
6+
</li><li>Nutze dazu alles Wissen, dass du bisher über HTML erworben hast.
7+
</li></ol>
8+
9+
<b>Beispielseite:</b><br>
10+
<h1>Die Tour de France</h1>
11+
<img src="https://media.delius-klasing.de/images/dpr_auto,fl_progressive,f_auto,c_fill,g_face:auto,h_475,w_712/q_auto:eco/tour/417935137_bfbec7b3dfb3ac21551fded2d59045bb/die-tour-de-france-in-paris" width=500px>
12+
<br>
13+
Die Tour die das größte <b>Radrennen</b> der Welt.<br>Auf folgenden Seiten findest du <u>Informationen</u> darüber:<br>
14+
<ul>
15+
<li><a href="https://www.letour.fr/de/">Offzielle Homepage</a></li>
16+
<li><a href="https://de.wikipedia.org/wiki/Tour_de_France">Wikipedia-Eintrag</a></li>
17+
<li><a href="https://www.ardmediathek.de/sport-tour-de-france">Videos der Sportschau</a></li>
18+
</ul>
19+
20+
<img src="https://media.delius-klasing.de/images/fl_progressive,f_auto,c_limit,h_801,w_1068/q_auto:eco/tour/gettyimages-2242763124_6a70f7cd747be04fc2279d137bdd94ea/die-strecke-der-tour-de-france-2026-auf-der-karte" width=500px>
21+
<br>
22+
<br>
23+
<img src="https://media.delius-klasing.de/dpr_auto,fl_progressive,f_auto,c_fill,g_face:auto,h_712,w_1068/q_auto:eco/tour/gettyimages-173957589_d0c750fabd0ca009a2a41c2e51f8dae1" width=500px>
24+
<br>
25+
Bildquellen: https://media.delius-klasing.de
26+
<br>
27+
<i>2026 Rainer Hille</i>

00Informatik/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ <h2 id="html">HTML</h2>
194194
<a href="00Informatik7/HTMLLists/index.html">Spiegelstriche in HTML</a><br>
195195
<a href="00Informatik7/HTMLOrderedList/index.html">Nummerierte Listen in HTML</a><br>
196196
<a href="00Informatik7/HTMLImg/index.html">Bilder in HTML</a><br>
197+
<a href="00Informatik7/HTMLInfoSeite/index.html">Deine eigene Homepage</a><br>
197198
<a href="00Informatik7/HTMLTest/index.html">HTML Abschlusstest</a></p>
198199
<p><a href="https://netzwerke.hauptquartier.eu/abenteuer-archiv">Die Abenteuer von Kommissar Smith</a></p>
199200
<p><a href="00Informatik7/Biber/index.html">Informatik-Biber</a></p>

00Informatik/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
[Spiegelstriche in HTML](00Informatik7/HTMLLists/index.html)
6868
[Nummerierte Listen in HTML](00Informatik7/HTMLOrderedList/index.html)
6969
[Bilder in HTML](00Informatik7/HTMLImg/index.html)
70+
[Deine eigene Homepage](00Informatik7/HTMLInfoSeite/index.html)
7071
[HTML Abschlusstest](00Informatik7/HTMLTest/index.html)
7172

7273

KS/index.html

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<!DOCTYPE html>
2+
<html lang="de">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>Koordinatensystem</title>
7+
<link rel="stylesheet" href="styles.css">
8+
</head>
9+
<body>
10+
11+
<div class="input-container">
12+
<h3>Rechtswertachse</h3>
13+
<label for="xMin">Min:</label>
14+
<input type="number" id="xMin" placeholder="Min">
15+
16+
<label for="xMax">Max:</label>
17+
<input type="number" id="xMax" placeholder="Max">
18+
19+
<label for="xStep">Step:</label>
20+
<input type="number" id="xStep" placeholder="Step">
21+
22+
<label for="xLabel">Beschriftung:</label>
23+
<input type="text" id="xLabel" placeholder="Beschriftung">
24+
25+
<h3>Hochwertachse</h3>
26+
<label for="yMin">Min:</label>
27+
<input type="number" id="yMin" placeholder="Min">
28+
29+
<label for="yMax">Max:</label>
30+
<input type="number" id="yMax" placeholder="Max">
31+
32+
<label for="yStep">Step:</label>
33+
<input type="number" id="yStep" placeholder="Step">
34+
35+
<label for="yLabel">Beschriftung:</label>
36+
<input type="text" id="yLabel" placeholder="Beschriftung">
37+
38+
<button id="drawButton">Zeichnen</button>
39+
<!-- Der Kopieren‑Button wird per JS erzeugt und hier eingefügt -->
40+
</div>
41+
42+
<canvas id="coordinateSystem" width="600" height="400"></canvas>
43+
44+
<script src="script.js"></script>
45+
</body>
46+
</html>

KS/script.js

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
/* -------------------------------------------------------------
2+
Hilfsfunktionen
3+
------------------------------------------------------------- */
4+
function canvasToBlob(canvas) {
5+
return new Promise(resolve => canvas.toBlob(b => resolve(b), 'image/png'));
6+
}
7+
8+
/* Kopieren‑Button (einmalig erzeugen) */
9+
function createCopyButton() {
10+
const btn = document.createElement('button');
11+
btn.id = 'copyButton';
12+
btn.textContent = 'Kopieren';
13+
btn.addEventListener('click', async () => {
14+
const canvas = document.getElementById('coordinateSystem');
15+
const blob = await canvasToBlob(canvas);
16+
try {
17+
await navigator.clipboard.write([
18+
new ClipboardItem({ 'image/png': blob })
19+
]);
20+
alert('Bild wurde in die Zwischenablage kopiert.');
21+
} catch (e) {
22+
console.error(e);
23+
alert('Kopieren fehlgeschlagen – Browser unterstützt die Clipboard‑API evtl. nicht.');
24+
}
25+
});
26+
return btn;
27+
}
28+
29+
/* -------------------------------------------------------------
30+
Hauptfunktion: Zeichnen
31+
------------------------------------------------------------- */
32+
document.getElementById('drawButton').addEventListener('click', () => {
33+
/* ---- Eingabewerte einlesen -------------------------------- */
34+
const xMin = parseFloat(document.getElementById('xMin').value);
35+
const xMax = parseFloat(document.getElementById('xMax').value);
36+
const xStep = parseFloat(document.getElementById('xStep').value);
37+
const xLabel = document.getElementById('xLabel').value;
38+
39+
const yMin = parseFloat(document.getElementById('yMin').value);
40+
const yMax = parseFloat(document.getElementById('yMax').value);
41+
const yStep = parseFloat(document.getElementById('yStep').value);
42+
const yLabel = document.getElementById('yLabel').value;
43+
44+
const canvas = document.getElementById('coordinateSystem');
45+
const ctx = canvas.getContext('2d');
46+
47+
/* ---- Konstanten (Randbereiche) ----------------------------- */
48+
const left = 50; // linke Grenze
49+
const right = 550; // rechte Grenze
50+
const top = 50; // obere Grenze
51+
const bottom = 350; // untere Grenze
52+
const width = right - left;
53+
const height = bottom - top;
54+
55+
/* ---- Mapping‑Funktionen ----------------------------------- */
56+
const mapX = val => left + ((val - xMin) / (xMax - xMin)) * width;
57+
const mapY = val => bottom - ((val - yMin) / (yMax - yMin)) * height;
58+
59+
/* ---- Position der Null‑Achsen (falls im Wertebereich) ----- */
60+
const xZeroPos = (xMin <= 0 && 0 <= xMax) ? mapX(0) : left; // y‑Achse
61+
const yZeroPos = (yMin <= 0 && 0 <= yMax) ? mapY(0) : bottom; // x‑Achse
62+
63+
/* ---- Canvas leeren ---------------------------------------- */
64+
ctx.clearRect(0, 0, canvas.width, canvas.height);
65+
66+
/* ---- Gitternetz (mittelgrau) ----------------------------- */
67+
ctx.strokeStyle = '#505050';
68+
ctx.lineWidth = 0.5;
69+
70+
// horizontale Gitterlinien
71+
for (let y = yMin; y <= yMax; y += yStep) {
72+
const py = mapY(y);
73+
ctx.beginPath();
74+
ctx.moveTo(left, py);
75+
ctx.lineTo(right, py);
76+
ctx.stroke();
77+
}
78+
79+
// vertikale Gitterlinien
80+
for (let x = xMin; x <= xMax; x += xStep) {
81+
const px = mapX(x);
82+
ctx.beginPath();
83+
ctx.moveTo(px, top);
84+
ctx.lineTo(px, bottom);
85+
ctx.stroke();
86+
}
87+
88+
/* ---- Achsen (schwarz) ------------------------------------ */
89+
ctx.strokeStyle = '#000';
90+
ctx.lineWidth = 1;
91+
ctx.beginPath();
92+
// X‑Achse (horizontal)
93+
ctx.moveTo(left, yZeroPos);
94+
ctx.lineTo(right, yZeroPos);
95+
// Y‑Achse (vertikal)
96+
ctx.moveTo(xZeroPos, top);
97+
ctx.lineTo(xZeroPos, bottom);
98+
ctx.stroke();
99+
100+
/* ---- Beschriftungen X‑Achse ------------------------------ */
101+
ctx.fillStyle = '#000';
102+
ctx.textBaseline = 'top';
103+
ctx.textAlign = 'center';
104+
for (let x = xMin; x <= xMax; x += xStep) {
105+
const px = mapX(x);
106+
// Tick
107+
ctx.beginPath();
108+
ctx.moveTo(px, yZeroPos - 5);
109+
ctx.lineTo(px, yZeroPos + 5);
110+
ctx.stroke();
111+
// Zahlen
112+
if (x!=0){ctx.fillText(x, px, yZeroPos + 8);}
113+
}
114+
115+
/* ---- Beschriftungen Y‑Achse (rechtsbündig, nah am Tick) */
116+
ctx.textAlign = 'right';
117+
ctx.textBaseline = 'middle';
118+
for (let y = yMin; y <= yMax; y += yStep) {
119+
const py = mapY(y);
120+
// Tick
121+
ctx.beginPath();
122+
ctx.moveTo(xZeroPos - 5, py);
123+
ctx.lineTo(xZeroPos + 5, py);
124+
ctx.stroke();
125+
// Zahlen (5 px Abstand zum Tick)
126+
if (y!=0){ctx.fillText(y, xZeroPos - 7, py);}
127+
}
128+
129+
/* ---- Titel X‑Achse --------------------------------------- */
130+
ctx.textAlign = 'center';
131+
ctx.textBaseline = 'top';
132+
ctx.fillText(xLabel, (left + right) / 2, bottom+20);
133+
134+
/* ---- Titel Y‑Achse (zentriert links neben den Zahlen) ---- */
135+
const yTitleX = 20;
136+
const yTitleY = (top + bottom) / 2; // Vertikale Mitte der Achse
137+
ctx.save();
138+
ctx.translate(yTitleX, yTitleY);
139+
ctx.rotate(-Math.PI / 2);
140+
ctx.textAlign = 'center';
141+
ctx.textBaseline = 'middle';
142+
ctx.fillText(yLabel, 0, 0);
143+
ctx.restore();
144+
145+
/* ---- Kopieren‑Button einblenden (falls noch nicht vorhanden) */
146+
if (!document.getElementById('copyButton')) {
147+
const copyBtn = createCopyButton();
148+
const drawBtn = document.getElementById('drawButton');
149+
drawBtn.parentNode.insertBefore(copyBtn, drawBtn.nextSibling);
150+
}
151+
});

KS/styles.css

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
body {
2+
font-family: Arial, sans-serif;
3+
margin: 20px;
4+
}
5+
6+
.input-container {
7+
margin-bottom: 20px;
8+
}
9+
10+
h3 {
11+
margin: 8px 0 4px;
12+
font-size: 1rem;
13+
}
14+
15+
label {
16+
display: block;
17+
margin-top: 4px;
18+
font-size: 0.9rem;
19+
}
20+
21+
input {
22+
width: 100%;
23+
padding: 4px;
24+
margin-top: 2px;
25+
box-sizing: border-box;
26+
font-size: 0.9rem;
27+
}
28+
29+
button {
30+
margin-top: 12px;
31+
padding: 8px 12px;
32+
font-size: 0.9rem;
33+
background-color: #4caf50;
34+
color: white;
35+
border: none;
36+
cursor: pointer;
37+
border-radius: 3px;
38+
}
39+
40+
button:hover {
41+
background-color: #45a049;
42+
}
43+
44+
/* optional: etwas Abstand zwischen den beiden Buttons */
45+
#copyButton {
46+
margin-left: 10px;
47+
}
48+
49+
canvas {
50+
border: 1px solid #000;
51+
display: block;
52+
margin-top: 20px;
53+
}

Video/index.html

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<!DOCTYPE html>
2+
<html lang="de">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<link rel="stylesheet" href="styles.css">
7+
<title>Film Fragen</title>
8+
</head>
9+
<body>
10+
<div class="container">
11+
<h1>Fragen zum Film</h1>
12+
<label for="videoName">Name des Videos:</label>
13+
<input type="text" id="videoName" placeholder="Gib den Namen des Videos ein (ohne .mp4)">
14+
15+
<label for="filmQuestions">Fragen zum Film:</label>
16+
<textarea id="filmQuestions" rows="10" placeholder="Gib deine Fragen hier ein. Die Zeilen werden automatisch nummeriert."></textarea>
17+
18+
<button id="saveButton">Speichern</button>
19+
<button id="loadButton">Laden</button>
20+
</div>
21+
22+
<script src="script.js"></script>
23+
</body>
24+
</html>

0 commit comments

Comments
 (0)