Ziel von LU03: Sie erweitern Ihre Landingpage um drei Dinge:
Wichtig: Ihr Code darf sich von den Beispielen unterscheiden. Entscheidend ist, dass Ihr Ergebnis im Browser korrekt funktioniert und Ihr Code verständlich bleibt.
Ihr Stand nach LU02 ist vorhanden und funktioniert im Desktop und Mobile Layout.
Hilfreiche Links
Screenshot mit Browsertab und Favicon
Aufgabe
<head> Ihrer HTML-Datei ein Favicon.<link> Tag mit rel=„icon“../resources/favicon.ico).<!-- Aufgabe: Favicon im head verlinken --> <!-- Tipp: Prüfen Sie den Pfad im Browser-Netzwerk-Tab (Network) --> <link rel="icon" href="PFAD_ZUR_DATEI" />
Checkliste
Sie haben in Ihrer Info-Zeile zwei Feature-Texte, z.B. „No credit card required„. Vor jedem Text soll ein Icon erscheinen.
Beispiel für das Anwenden von Pseudo-Elementen (nicht so umzusetzen im Projekt Landingpage Alarado, sondern wie oben abgebildet → Feature-Texte mit grünem Haken)
Wenn wir vor oder nach einem Text ein Icon oder Emoji einblenden möchten, eignen sich Pseudo-Elemente sehr gut.
Umsetzung des im Bild oben gezeigten Designs (The Div Soup) mit HTML und CSS:
<body> <h1>The Div Soup</h1> </body>
body { background-color: #000000; } h1 { color: #fff; } h1::before { content: "🚀"; /* Add a rocket icon before the text */ } h1::after { content: "🔥"; /* Add a fire icon after the text */ }
Kurze Erklärung: Wir betten die grünen OK-Haken per CSS ein und nicht als <img>-Tag, weil sie keinen eigenen Inhalt transportieren. Sie sind reine Dekoration. So können wir das Icon einmal in einer CSS-Regel definieren und dann auf mehrere Elemente anwenden.
Aufgabe
.icon-ok sinnvolle Innenabstände links, damit Platz für ein Icon entsteht..icon-ok auf position: relative..icon-ok::before, um das Icon einzufügen.position: absolute links neben dem Text.
Bei Pseudo-Elementen können Sie Icons z.B. über content: url(…) einfügen.
/* Aufgabe: Platz schaffen und Positionierung vorbereiten */ .icon-ok { /* z.B. padding-left setzen */ /* position: relative */ } /* Aufgabe: Icon einfügen und positionieren */ .icon-ok::before { /* content: url("PFAD_ZUM_ICON") */ /* position: absolute */ /* left: 0; top: ... */ }
Checkliste
Video mit Erklärung zum Dark Light Mode und dessen Umsetzung.
Aus der Checkbox wird ein Switch. Nutzen Sie dazu den vorgegebenen Code unten.
Jetzt stylen Sie die Checkbox als Switch. Den folgenden Code dürfen Sie 1 zu 1 übernehmen.
Aufgabe
<label class="switch"> zwei <span> Tags (Slider und Icons).url(…).HTML
<label class="switch"> <input type="checkbox" /> <span class="slider"></span> <!-- Platzhalter für den Schieber --> <span class="switch-icons"></span> <!-- Platzhalter für die Icons --> </label>
CSS
/* Following: Styles Checkbox as Switch */ .switch { position: relative; display: inline-block; width: 48px; height: 24px; cursor: pointer; } /* Hide the checkbox input */ .switch input { display: none; } /* Describe slider's look and position. */ .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: var(--main-text-color-light); transition: 0.4s; border-radius: 20px; } /* Describe the white ball's location and appearance in the slider. */ .slider:before { position: absolute; content: ''; height: 20px; width: 20px; left: 2px; bottom: 2px; background: var(--main-text-color-dark); transition: 0.4s; border-radius: 50%; } /* When the checkbox is checked, shift the white ball towards the right within the slider. */ input:checked + .slider:before { transform: translateX(24px); } .switch-icons { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: 4px / 16px no-repeat url('./resources/Moon_fill.svg'), 28px / 16px no-repeat url('./resources/Sun_fill.svg'); } /* Modify the icons once the checkbox has been selected. */ input:checked ~ .switch-icons { background: 4px / 16px no-repeat url('./resources/Moon_fill_light.svg'), 28px / 16px no-repeat url('./resources/Sun_fill_light.svg'); }
Checkliste
url(…) prüfen.
Sie steuern den Dark Mode über eine CSS-Klasse auf dem <html> Element.
Aufgabe
.theme-dark.html diese Klasse hat.
Schreiben Sie die Regeln so, dass Sie nicht überall neue Farben kopieren, sondern Ihre Variablen verwenden.
Setzen Sie zum Testen provisorisch die Klasse theme-dark aufs <html>-Element. Entfernen Sie dies wieder, sobald Sie mit der Gestaltung fertig sind: Die Klasse wird danach dynamisch mit JavaScript gesetzt.
/* Aufgabe: Klasse definieren */ .theme-dark { /* optional: color-scheme: dark; */ } /* Aufgabe: Wenn html theme-dark hat, Farben umstellen */ html.theme-dark body { /* background-color: var(--...-dark); */ /* color: var(--...-dark); */ } /* Aufgabe: Navigation Links im Dark Mode lesbar machen */ html.theme-dark .menu li a:not(.active) { /* color: var(--...-dark); */ }
Checkliste
class=„theme-dark“ im <html> steht, wird die Seite dunkel.Damit Sie den Switch funktional machen können, brauchen Sie in JavaScript Zugriff auf:
<html><img>Aufgabe
id=„logo“).getElementById und speichern Sie es in einer Variable.document.documentElement und speichern Sie es in einer Variable (z.B. html).checkbox).
Best Practice: Geben Sie der Checkbox eine ID, z.B. id=„theme-toggle“. Dann ist Ihr Code stabiler, wenn später weitere Inputs auf der Seite dazu kommen.
Folgender Code muss im <script>-Tag programmiert werden.
// Aufgabe: DOM-Elemente abrufen und in Variablen speichern // const checkbox = ... (Switch) // const html = ... (Root-Element) // const logo = ... (img)
Jetzt schreiben Sie eine Funktion, die beim Umschalten drei Dinge erledigt:
theme-dark hinzu oder entfernt sielogo.src anpassen
Nutzen Sie für das Setzen der Klasse auf dem <html>-Element die Methoden classList.add und classList.remove.
// Aufgabe: Funktion toggleTheme() // - wenn checkbox aktiv: theme-dark setzen oder entfernen (je nach Logik) // - Logo wechseln: logo.src auf light oder dark setzen function toggleTheme() { if (checkbox.checked) { // Klasse theme-dark setzen oder entfernen (je nach Logik) // Logo auf passende Datei setzen (Pfad anpassen) } else { // Klasse theme-dark setzen oder entfernen (je nach Logik) // Logo auf passende Datei setzen (Pfad anpassen) } }
Checkliste
Aufgabe
change (empfohlen für Checkbox). 1)// Aufgabe: checkbox.addEventListener("change", ...) // In der Callback-Funktion: toggleTheme() aufrufen checkbox.addEventListener('change', () => { // Callback-Funktion: wird aufgerufen, sobald sich der Status der Checkbox ändert // Rufen Sie hier toggleTheme() auf });
Wenn die Seite neu lädt, soll der Zustand korrekt sein:
Aufgabe
// Aufgabe: Initialzustand setzen // - toggleTheme() beim Laden einmal ausführen
Wenn etwas nicht geht, geben Sie testweise Ausgaben in die Console aus, z.B. ob checkbox.checked true oder false ist.