← Livello 2 – Mago

Lezione 8 di 8 ⏱ 60 minuti

Grande sfida: dai vita a tutto il sito web

La missione finale del Livello 2. Tutti gli incantesimi insieme – più qualche idea nuova.

La tua missione

Questa volta non c’è materiale nuovo. Riceverai una lista di compiti, e sai già tutto quello che serve. È esattamente il lavoro di uno sviluppatore vero: ti danno requisiti e li assembli con cose che già conosci.

Parte obbligatoria 🎯

Scorri il sito web e assicurati che tutti e cinque gli incantesimi di questo livello siano attivi:

  1. Lo script collegato su ogni pagina e nessun errore nella console (F12 – niente di rosso).
  2. Modalità scura – un interruttore nell’header su ogni pagina, e la scelta viene ricordata.
  3. Un pulsante o contatore interattivo – almeno un incantesimo con variabile e condizione.
  4. Una galleria fotografica con lightbox – cliccare ingrandisce una foto.
  5. Un quiz o un form con validazione – almeno uno dei due. Fai pure entrambi!

Estensioni opzionali 🌟

Scegline almeno una (oppure inventane una tua):

Saluto in base all'ora del giorno

Il sito web saluta diversamente al mattino e alla sera:

<p id="day-greeting"></p>
const dayGreeting = document.getElementById("day-greeting");
const hour = new Date().getHours();

if (hour < 9) {
  dayGreeting.textContent = "Good morning! ☀️";
} else if (hour < 18) {
  dayGreeting.textContent = "Hi there, have a nice day!";
} else {
  dayGreeting.textContent = "Good evening! 🌙";
}

new Date() restituisce data e ora attuali, .getHours() ne estrae l’ora.

Messaggio casuale al clic

Una barzelletta, idea viaggio o coro della squadra diversi ogni volta:

const messages = [
  "Practice makes perfect!",
  "Let's go, Eagles! 🦅",
  "You miss every shot you don't take.",
  "Fans are the twelfth player.",
];

const messageButton = document.getElementById("message-button");
const messageEl = document.getElementById("message");

messageButton.addEventListener("click", () => {
  const random = Math.floor(Math.random() * messages.length);
  messageEl.textContent = messages[random];
});

Math.random() restituisce un numero casuale tra 0 e 1, e il resto della riga lo trasforma in una posizione casuale nell’array.

Contatore visite (solo per te)

Quante volte hai aperto il sito web? Salvalo in localStorage:

let visits = Number(localStorage.getItem("visits") ?? 0);
visits++;
localStorage.setItem("visits", visits);
console.log("You've opened this page " + visits + " times now");

Number(...) converte il testo dalla memoria in numero, e ?? 0 significa “se non c’è niente, parti da zero.”

Sezione pieghevole (accordion)

Nascondi un menu lungo o una rosa sotto un titolo cliccabile:

const sectionHeading = document.getElementById("expand-heading");
const sectionContent = document.getElementById("expand-content");

sectionHeading.addEventListener("click", () => {
  sectionContent.classList.toggle("hidden");
});

Hai già la classe .hidden { display: none !important; } dalla lezione galleria.

Carica la nuova versione su internet

Il sito web su GitHub Pages è ancora la vecchia versione del Livello 1! Carica quella nuova:

  1. Apri il repository su github.com,
  2. Add file → Upload files,
  3. trascina i file modificati (soprattutto script.js, style.css e tutti i file .html) e clicca Commit changes.

Entro un minuto, i tuoi incantesimi gireranno per tutti.

Congratulazioni, Mago! 🪄 Il tuo sito web non è più solo bello – è vivo. Reagisce ai clic, ricorda le scelte, fa domande e risponde. E sai come funziona ogni singola riga. Al Livello 3 – Maestro imparerai a costruire siti web come i professionisti: React, componenti e il tuo server.

Cosa porti via da questo livello

🏆 Il tuo diploma

Finale di Mago

Quando avrai spuntato ogni lezione, potrai stampare un certificato.