CSS Fogli Di Stile

Media Query

Media query: teoria, esempi e sperimentazione nel browser.

Prerequisiti: Principi del responsive design e viewport.

Condizioni delle media query

Condizioni delle media query: fondamenti.

Una pagina responsive conserva leggibilità e funzionalità quando cambia lo spazio disponibile. Non consiste soltanto nel rimpicciolire ogni elemento. Un menu può andare a capo, una griglia passare da una a più colonne, le immagini adattarsi al contenitore. Nel documento completo di esempio il meta viewport imposta width=device-width e initial-scale=1, evitando la tipica resa mobile su un viewport virtuale ampio. Non impedire lo zoom dell’utente.

Come funziona: condizioni delle media query

Condizioni delle media query: comportamento nel browser.

@media aggiunge regole che si applicano solo quando la condizione è vera. Con @media (min-width: 48rem) la regola entra in gioco da quella larghezza del viewport in poi. Le regole dentro la media query partecipano comunque alla cascata: non vincono automaticamente su selettori più specifici. Il breakpoint deve nascere dal punto in cui i contenuti richiedono una diversa disposizione, non da un elenco di modelli di telefono.

Scelte di utilizzo e limiti

Condizioni delle media query: progetto e verifica.

Un approccio mobile first scrive inizialmente un layout semplice su una colonna e aggiunge complessità quando lo spazio lo consente. Riduce la necessità di annullare continuamente stili pensati per schermi grandi. Verifica anche dimensioni intermedie e zoom: il responsive deve funzionare fra i breakpoint, non soltanto in due schermate campione. Un simulatore di dispositivo è utile ma non sostituisce completamente prove reali quando la pagina viene pubblicata.

Idea chiave: La regola iniziale funziona per tutte le larghezze. La media query sostituisce il numero di colonne quando la condizione è vera, con la stessa specificità.

Esempio commentato

Condizioni delle media query: HTML e CSS.

Esempio con stile esterno. Il documento index.html collega il file stile.css mediante il tag link nella head.

Documento HTML completo

<!doctype html>
<html lang="it">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Media query</title>
<link rel="stylesheet" href="stile.css">
</head>
<body>
<div class="griglia">
<article>Prima lezione</article>
<article>Seconda lezione</article>
<article>Terza lezione</article>
</div>
</body>
</html>

File stile.css

.griglia {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1rem;
}
.griglia article { padding: 1rem; border: 1px solid #174a7e; }
@media (min-width: 48rem) {
  .griglia {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

La regola iniziale funziona per tutte le larghezze. La media query sostituisce il numero di colonne quando la condizione è vera, con la stessa specificità.

ProprietàValore nell’esempioSignificato
displaygridTipo di scatola e contesto di layout.
grid-template-columnsminmax(0, 1fr)Definizione delle tracce di colonna esplicite.
gap1remDistanza fra elementi o tracce nel layout pertinente.
padding1remSpazio interno fra contenuto e bordo.
border1px solid #174a7eAbbreviazione per spessore, stile e colore del bordo.
min-width48rem)Limite inferiore alla larghezza.
Attenzione: Per cambiare layout dove lo spazio diventa insufficiente o consente una disposizione migliore, indipendentemente dal modello del dispositivo.

LABORATORIO

Sperimentare: Condizioni delle media query

La regola iniziale funziona per tutte le larghezze. La media query sostituisce il numero di colonne quando la condizione è vera, con la stessa specificità.

Obiettivo: Comprendere e applicare condizioni delle media query attraverso esempi e verifica nel browser.

Software: editor di testo e browser con DevTools; Tempo: 15 minuti.

Preparazione: scarica l’esempio completo e estrai lo ZIP. Apri index.html nel browser. Puoi anche aprire l’esempio online.

Apri il file stile.css nell’editor. Le lezioni iniziali usano un documento già preparato per concentrarsi sulle regole; il collegamento esterno e lo stile interno vengono spiegati nelle lezioni dedicate. Le modifiche nei DevTools sono normalmente temporanee.

Procedura passo passo

  1. Osserva il punto di partenza: apri l’esempio, confronta markup e regole e individua il selettore o il contesto di layout rilevante.
  2. Esegui la modifica: Prova una finestra stretta, una intermedia e una ampia.
  3. Salva e ricarica la pagina dopo ogni modifica. Confronta gli elementi che devono cambiare con quelli che devono restare invariati.
  4. Ispeziona il risultato: usa il menu Ispeziona e controlla Styles/Regole e Computed/Calcolato. Per layout Flex o Grid attiva l’overlay, se disponibile.
  5. Annota causa ed effetto: scrivi il valore o la struttura iniziale, il cambiamento e il risultato. Ripristina il punto di partenza prima dell’esercizio autonomo.
Cosa devi vedere — Output atteso

La pagina presenta una colonna sotto il breakpoint e tre da quel breakpoint in poi. Nessun contenuto dovrebbe sparire.

Il font e alcuni dettagli dell’interfaccia dipendono dal browser. Valuta la proprietà e il comportamento descritti, non una corrispondenza perfetta con uno screenshot.

Verifica del risultato

ControlloCriterio
Effetto specificoLa pagina presenta una colonna sotto il breakpoint e tre da quel breakpoint in poi. Nessun contenuto dovrebbe sparire.
Corrispondenza del codiceIndividua la dichiarazione o la relazione HTML responsabile della differenza.
PersistenzaRiporta la modifica nel file e verifica dopo un ricaricamento.
SpiegazioneMotiva la differenza senza affidarti soltanto a uno screenshot.
Se il risultato non coincide: verifica file aperto, salvataggio, percorso del CSS, selettore e validità dei valori. Controlla poi la cascata e le dimensioni del viewport. Cambia una sola causa alla volta.

Esercizio autonomo

Aggiungi uno stato intermedio con due colonne da 36rem, mantenendo le tre colonne da 48rem.

Consegna: file modificati e una breve spiegazione di selettore, proprietà e risultato. Criterio di riuscita: il cambiamento richiesto funziona dopo il ricaricamento e non taglia informazioni indispensabili.

Una possibile soluzione dell’esercizio
@media (min-width: 36rem) {
  .griglia { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 48rem) {
  .griglia { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

Integra la soluzione nel punto pertinente: modifica o sostituisci le regole coinvolte invece di accumulare dichiarazioni contraddittorie. Le altre parti dell’esempio restano necessarie.

Verifica dei concetti

Condizioni delle media query: interpretazione e applicazione.

Seleziona una domanda per visualizzare la risposta e confrontarla con la tua.

1. Quando è vera (min-width: 48rem)? ▾
Risposta: Da 48rem in poi. Una pagina responsive conserva leggibilità e funzionalità quando cambia lo spazio disponibile. Non consiste soltanto nel rimpicciolire ogni elemento. Un menu può andare a capo, una griglia passare da una a più colonne, le immagini adattarsi al contenitore. Nel documento completo di esempio il meta viewport imposta width=device-width e initial-scale=1, evitando la tipica resa mobile su un viewport virtuale ampio. Non impedire lo zoom dell’utente.
2. Come si interpreta il codice dell’esempio? ▾
Risposta: La regola iniziale funziona per tutte le larghezze. La media query sostituisce il numero di colonne quando la condizione è vera, con la stessa specificità.
3. Quale risultato permette di verificare la modifica del laboratorio? ▾
Risposta: La pagina presenta una colonna sotto il breakpoint e tre da quel breakpoint in poi. Nessun contenuto dovrebbe sparire.
4. Quale attenzione evita un’interpretazione sbagliata? ▾
Risposta: Per cambiare layout dove lo spazio diventa insufficiente o consente una disposizione migliore, indipendentemente dal modello del dispositivo.

Riferimento tecnico: MDN — riferimento CSS. Cerca le proprietà o i selettori utilizzati nell’esempio.