Selettori e Styling di Base

Bentornato.
Nella lezione precedente hai imparato cos’è CSS e come collegarlo a HTML.
Ora impariamo i selettori.
I selettori sono il modo in cui CSS sceglie cosa stilizzare.
Senza selettori, CSS sta semplicemente nella stanza a urlare:
“Fallo blu!”
E il browser chiede:
“Cosa esattamente?”
Domanda giusta, browser.
Molto professionale.
Cosa Imparerai
In questa lezione imparerai:
- cosa sono i selettori CSS;
- come funzionano i selettori di elemento;
- come funzionano i selettori di classe;
- come funzionano i selettori ID;
- come funzionano i selettori raggruppati;
- come funzionano i selettori discendenti;
- come scrivere CSS più pulito;
- come applicare styling di base a HTML reale.
Cos’è un Selettore?
Un selettore dice a CSS quali elementi HTML deve stilizzare.
Esempio:
p {
color: gray;
}
Qui p è il selettore.
Significa:
Seleziona tutti gli elementi paragrafo e rendi il testo grigio.
CSS deve sempre sapere cosa deve stilizzare.
Il selettore è il “chi”.
Le dichiarazioni sono il “cosa”.
Esempio:
h1 {
color: blue;
font-size: 48px;
}
Questo significa:
Trova ogni
h1, rendilo blu e grande.
Molto diretto.
Quasi autoritario.
Ma nello sviluppo web, un po’ di autorità può essere utile.
Struttura Base di una Regola CSS
Una regola CSS appare così:
selector {
property: value;
}
Esempio:
h2 {
color: #111827;
}
Le parti sono:
h2— selettore;color— proprietà;#111827— valore.
Il selettore sceglie l’elemento.
La proprietà dice cosa cambiare.
Il valore dice come cambiarlo.
CSS è una lista di istruzioni.
A volte elegante.
A volte drammatica.
A volte a un punto e virgola mancante dalla confusione.
Crea il Progetto
Crea una cartella per questa lezione:
mkdir css-lesson2
cd css-lesson2
touch index.html
touch style.css
Ora hai:
css-lesson2/
index.html
style.css
Apri la cartella nel tuo editor.
Scriveremo prima HTML.
Poi lo stilizzeremo con selettori diversi.
Questo è il piano.
E stavolta il piano potrebbe anche sopravvivere al contatto con il browser.
Scrivi l’HTML
Apri index.html e aggiungi questo:
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Selettori CSS</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header id="top">
<h1>Selettori CSS</h1>
<p class="intro">I selettori aiutano CSS a trovare gli elementi HTML giusti.</p>
</header>
<main>
<section class="card">
<h2>Selettori di Elemento</h2>
<p>I selettori di elemento stilizzano tutti gli elementi dello stesso tipo.</p>
</section>
<section class="card featured">
<h2>Selettori di Classe</h2>
<p>I selettori di classe sono riutilizzabili e molto utili.</p>
</section>
<section class="card">
<h2>Selettori ID</h2>
<p>I selettori ID puntano a un elemento unico nella pagina.</p>
</section>
<section class="practice-box">
<h2>Area di Pratica</h2>
<p>Questa area ci aiuterà a testare diversi selettori.</p>
<a href="#top">Torna su</a>
</section>
</main>
<footer>
<p>Creato mentre imparo i selettori CSS.</p>
</footer>
</body>
</html>
Nota alcune cose importanti:
id="top";class="intro";class="card";class="card featured";class="practice-box".
Questi sono agganci.
CSS può usarli per stilizzare parti specifiche della pagina.
Gli agganci sono importanti.
Senza agganci, CSS deve indovinare.
E CSS non è un investigatore.
Selettori di Elemento
I selettori di elemento puntano agli elementi HTML usando il nome del tag.
Esempio:
body {
font-family: Arial, sans-serif;
}
Questo stilizza tutto il body.
Altro esempio:
p {
font-size: 18px;
}
Questo stilizza tutti i paragrafi.
Aggiungi questo a style.css:
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
color: #222;
margin: 0;
}
h1 {
color: white;
font-size: 48px;
}
h2 {
color: #111827;
}
p {
font-size: 18px;
line-height: 1.6;
}
Questi sono selettori di elemento:
body;h1;h2;p.
Agiscono su ogni elemento corrispondente nella pagina.
Utili.
Potenti.
Ma a volte troppo generali.
Come usare un rullo da pittura per correggere un puntino minuscolo.
Selettori di Classe
Un selettore di classe punta agli elementi con una classe specifica.
In HTML:
<p class="intro">I selettori aiutano CSS a trovare gli elementi HTML giusti.</p>
In CSS:
.intro {
font-size: 20px;
}
Il punto . significa classe.
Quindi .intro seleziona ogni elemento con:
class="intro"
Aggiungi questo a style.css:
.intro {
font-size: 20px;
color: #dbeafe;
}
Ora solo il paragrafo con classe intro viene stilizzato così.
Le classi sono riutilizzabili.
Puoi usare la stessa classe su molti elementi.
Esempio:
<section class="card">
E CSS:
.card {
background-color: white;
padding: 24px;
margin-bottom: 20px;
border-radius: 12px;
}
Aggiungi questo:
.card {
background-color: white;
padding: 24px;
margin-bottom: 20px;
border-radius: 12px;
}
Ora ogni sezione con classe card riceve lo stesso stile.
Questa è una delle idee più importanti di CSS.
Stili riutilizzabili.
Meno ripetizione.
Meno sofferenza.
Un obiettivo nobile.
Classi Multiple
Un elemento può avere più di una classe.
Esempio:
<section class="card featured">
Questo elemento ha due classi:
card;featured.
Riceve gli stili di entrambe.
Aggiungi questo CSS:
.featured {
border: 2px solid #2563eb;
background-color: #eff6ff;
}
Ora la card featured riceve uno stile extra.
Ha ancora gli stili normali di .card.
Ma riceve anche gli stili di .featured.
È utile quando vuoi uno stile base più una variazione speciale.
Come una pizza normale.
Poi una pizza con extra formaggio.
CSS capisce l’extra formaggio.
Almeno emotivamente.
Selettori ID
Un selettore ID punta a un solo elemento unico.
In HTML:
<header id="top">
In CSS:
#top {
background-color: #111827;
}
Il simbolo # significa ID.
Aggiungi questo:
#top {
background-color: #111827;
padding: 40px;
text-align: center;
}
Gli ID dovrebbero essere unici nella pagina.
Questo significa che non dovresti avere molti elementi con lo stesso ID.
Usa gli ID con attenzione.
Per lo styling, di solito le classi sono migliori.
Gli ID sono utili per:
- aree uniche della pagina;
- link interni;
- JavaScript più avanti;
- elementi speciali usati una sola volta.
Pensa all’ID come a un numero di passaporto.
La classe è più come una maglietta di squadra.
Molte persone possono avere la stessa maglietta.
Una sola persona dovrebbe avere lo stesso numero di passaporto.
Selettori Raggruppati
A volte vuoi applicare lo stesso stile a più selettori.
Invece di scrivere questo:
h1 {
font-family: Arial, sans-serif;
}
h2 {
font-family: Arial, sans-serif;
}
Puoi raggrupparli:
h1,
h2 {
font-family: Arial, sans-serif;
}
La virgola significa:
Applica questa regola a entrambi i selettori.
Esempio:
h1,
h2 {
margin-top: 0;
}
Aggiungi questo:
h1,
h2 {
margin-top: 0;
}
I selettori raggruppati aiutano a tenere il CSS più corto e pulito.
CSS più pulito è più facile da leggere.
Più facile da leggere significa più facile da correggere.
Più facile da correggere significa meno sospiri drammatici.
Selettori Discendenti
Un selettore discendente punta a un elemento dentro un altro elemento.
Esempio:
footer p {
color: #666;
}
Questo significa:
Seleziona ogni
pdentrofooter.
Non seleziona tutti i paragrafi.
Solo i paragrafi dentro il footer.
Aggiungi questo:
footer p {
color: #666;
text-align: center;
}
Altro esempio:
.practice-box a {
color: #2563eb;
font-weight: bold;
}
Questo punta ai link dentro .practice-box.
Aggiungilo:
.practice-box a {
color: #2563eb;
font-weight: bold;
}
I selettori discendenti sono utili quando il contesto conta.
Un link in un paragrafo può sembrare normale.
Un link dentro una box speciale può avere uno stile diverso.
CSS può gestirlo.
CSS ha opinioni.
Molte opinioni.
Stilizza il Layout
Ora aggiungi più struttura alla pagina:
main {
max-width: 800px;
margin: 40px auto;
padding: 20px;
}
.practice-box {
background-color: #fff7ed;
padding: 24px;
border-radius: 12px;
border: 2px dashed #fb923c;
}
footer {
padding: 20px;
}
Ora la pagina dovrebbe sembrare più organizzata.
Stai usando:
- selettori di elemento;
- selettori di classe;
- selettori ID;
- selettori raggruppati;
- selettori discendenti.
È un passo serio.
La cassetta degli attrezzi CSS si sta aprendo.
Cerca di non colpirti con il martello.
CSS Completo
Il tuo style.css dovrebbe ora essere così:
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
color: #222;
margin: 0;
}
#top {
background-color: #111827;
padding: 40px;
text-align: center;
}
h1 {
color: white;
font-size: 48px;
}
h2 {
color: #111827;
}
h1,
h2 {
margin-top: 0;
}
p {
font-size: 18px;
line-height: 1.6;
}
.intro {
font-size: 20px;
color: #dbeafe;
}
main {
max-width: 800px;
margin: 40px auto;
padding: 20px;
}
.card {
background-color: white;
padding: 24px;
margin-bottom: 20px;
border-radius: 12px;
}
.featured {
border: 2px solid #2563eb;
background-color: #eff6ff;
}
.practice-box {
background-color: #fff7ed;
padding: 24px;
border-radius: 12px;
border: 2px dashed #fb923c;
}
.practice-box a {
color: #2563eb;
font-weight: bold;
}
footer {
padding: 20px;
}
footer p {
color: #666;
text-align: center;
}
Salva.
Aggiorna il browser.
Osserva.
Se non è cambiato nulla, controlla:
- nome del file;
- link CSS;
- ortografia;
- punti e virgola;
- parentesi graffe;
- se hai salvato il file.
Il bug “ho dimenticato di salvare” è leggendario.
Ha sconfitto molti sviluppatori coraggiosi.
Classe o ID?
Usa classi nella maggior parte dei casi.
Usa ID solo quando qualcosa è davvero unico.
Buon uso della classe:
<section class="card">
Perché potresti avere molte card.
Buon uso dell’ID:
<header id="top">
Perché c’è una sola area top.
Brutta idea:
<section id="card">
<section id="card">
<section id="card">
Non farlo.
Gli ID non dovrebbero ripetersi.
Il browser potrebbe comunque mostrare la pagina.
Ma il codice diventa sospetto.
Come tre persone che usano lo stesso passaporto all’aeroporto.
Errori Comuni
Dimenticare il punto per le classi
Sbagliato:
card {
background-color: white;
}
Corretto:
.card {
background-color: white;
}
Senza il punto, CSS cerca un elemento HTML <card>.
E se non lo hai creato, non succede nulla.
CSS è severo.
Non indovina i tuoi sogni.
Dimenticare il cancelletto per gli ID
Sbagliato:
top {
background-color: black;
}
Corretto:
#top {
background-color: black;
}
Il # dice a CSS che è un ID.
Senza #, niente selettore ID.
Simbolo minuscolo.
Grande differenza.
Fare selettori troppo generali
Questo modifica tutti i paragrafi:
p {
color: red;
}
A volte va bene.
A volte vuoi solo una zona:
.card p {
color: #444;
}
Sii specifico quando serve.
Non stilizzare tutto il villaggio se volevi dipingere solo una porta.
Pratica
Crea una tua pagina con:
- un header;
- un paragrafo introduttivo;
- tre card;
- una card featured;
- una practice box;
- un footer.
Usa:
- selettori di elemento;
- selettori di classe;
- un selettore ID;
- un selettore raggruppato;
- un selettore discendente.
Prova a stilizzare:
- colori di sfondo;
- colori del testo;
- spaziatura;
- bordi;
- border radius;
- colore dei link.
Tieni il CSS organizzato.
Non lanciare stili ovunque come coriandoli dopo un matrimonio.
I coriandoli sono divertenti.
Il debugging dei coriandoli no.
Mini Sfida
Crea tre card:
- Basic Plan;
- Standard Plan;
- Premium Plan.
Dai a tutte le card la classe card.
Dai a Premium Plan anche la classe featured.
Esempio:
<section class="card featured">
<h2>Premium Plan</h2>
<p>This plan has extra features.</p>
</section>
Poi stilizza:
- tutte le card con lo stesso padding e background;
- la card featured con un bordo;
- i titoli con uno stile condiviso;
- solo i link dentro le card con un colore speciale.
È proprio così che funzionano i siti reali.
Stili riutilizzabili.
Variazioni speciali.
Meno caos.
Più controllo.
Riassunto
Oggi hai imparato che:
- i selettori dicono a CSS cosa stilizzare;
- i selettori di elemento puntano ai tag HTML;
- i selettori di classe usano un punto, come
.card; - i selettori ID usano un cancelletto, come
#top; - le classi sono riutilizzabili;
- gli ID devono essere unici;
- i selettori raggruppati condividono stili tra più selettori;
- i selettori discendenti puntano agli elementi dentro altri elementi;
- selettori puliti rendono il CSS più facile da gestire.
I selettori sono la base di CSS.
Se capisci i selettori, puoi controllare la pagina.
Se non capisci i selettori, CSS diventa una zuppa misteriosa.
E lo abbiamo già detto:
La zuppa va nella ciotola.
Non nel tuo stylesheet.
Prossima Lezione
Nella prossima lezione stilizzeremo testo, font e colori in modo più dettagliato.
Perché il testo leggibile è importante.
Un sito con testo illeggibile è solo un puzzle con hosting.