Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
appunti
(ultimo aggiornamento 24-09-2022)
DOM (document object model)
● ogni pagina html può essere vista
come una struttura ad albero
● la radice è il tag <html> che
contiene tutti gli altri tag
● ogni nodo rappresenta una parte
del documento
● concetto fondamentale per capire
CSS e JavaScript
Cosa sono i CSS
● CSS = Cascading Style Sheets (fogli di stile a cascata)
● le regole CSS definiscono l’aspetto degli elementi html presenti nella pagina,
anche in relazione al device utilizzato (desktop, mobile, smart tv, ecc)
● a cascata perché una regola applicata ad un elemento padre verrà applicata
in cascata anche agli element figli (contenuti in esso), sempre che i figli non la
sovrascrivano
● vantaggi :
○ un file CSS può controllare l’aspetto di più pagine html.
○ cambiando un file css posso stravolgere l’aspetto di tutto il sito
○ se esterni, vengono mantenuti nella cache del browser, risparmiando banda
Sintassi di una regola CSS
● una regola CSS è composta da un selettore e un blocco di dichiarazioni ,
racchiuso tra parentesi graffe ( { } )
● il selettore individua l’elemento (o gli elementi) html a cui applicare la regola
● la dichiarazione, composta dalla coppia proprietà - valore separati da due
punti ( : ) ne definisce l’aspetto
● le dichiarazioni (di fatto, le regole) sono separate da un punto e virgola ( ; )
Esempio
● in questo esempio tutti i tag <p> sono allineati al centro e sono di colore rosso
● p è il selettore
● color è una proprietà e red è il suo valore
● text:align è una proprietà e center è il suo valore
● i due punti ( : ) separano la proprietà dal valore e il punto e virgola ( ; ) separa
le dichiarazioni
● il blocco delle dichiarazioni è racchiuso tra parentesi graffe
Come usare i CSS
Esistono 3 modi per inserire regole CSS nei documenti html
Nota: un caso particolare di uso delle regole CSS è quello in cui si usa il tag
<span> per assegnare una regola ad una porzione di testo, rientra però nel caso
inline
CSS esterni
● le regole risiedono su un file esterno alla pagina html (locale o remoto)
● possono valere per più di una pagina html
● il file esterno deve essere un file di testo, privo di elementi html, salvato con
estensione .css
● è necessario specificare nel tag <head> col tag <link> il file contenente le
regole CSS
Tag <link>
Da non confondere col tag <a>
In breve:
/* questo è un commento */
I selettori
I selettori sono usati per selezionare uno o più elementi di cui si desidera impostare
l’aspetto.
Ricorda: un tag html può appartenere a più di una classe, basta separare le classi
con uno spazio
* {
margin: 0;
padding: 0;
}
Selettore di discendenza
● il selettore di discendenza è lo spazio
● seleziona tutti gli elementi che sono discendenti di un determinato selettore
(discendenti = annidati, contenuti)
● la sintassi è la seguente: selettore + spazio + selettore
Nell’esempio in figura, tutti i paragrafi annidati, anche oltre il primo livello, dentro un
div avranno uno sfondo giallo
Selettore figlio
● il selettore figlio è il simbolo di maggiore ( > )
● seleziona tutti gli elementi che sono figli (annidati un unico livello sotto) di un
determinato selettore
● la sintassi è la seguente: selettore > selettore
Nell’esempio in figura, tutti i paragrafi figli un div avranno uno sfondo giallo
Selettore di adiacenza
● il selettore di adiacenza è il simbolo dell’addizione ( + )
● seleziona l’elemento che è fratello adiacente di un determinato selettore
(fratello = stesso padre ; adiacente = posto immediatamente dopo)
● la sintassi è la seguente: selettore + selettore
selettore:pseudo-classe
Nota: :hover risulta fondamentale per creare gradevoli barre di navigazione o per
evidenziare un pulsante, il cosiddetto effetto hover
Pseudo-elementi
Gli pseudo-elementi permettono di definire l’aspetto di alcune parti di un elemento.
Ad esempio:
Per individuare una parte specifica di un elemento basta far seguire ad un selettore
il simbolo dei due punti ripetuto due volte ( :: ) seguito dallo pseudo-elemento,
ovvero :
selettore::pseudo-elemento
Pseudo-elementi di uso comune
● ::after : permette di posizionarsi dopo un elemento (per inserirne uno
nuovo con la proprietà content)
● ::before : permette di posizionarsi prima di un elemento (per inserirne uno
nuovo con la proprietà content)
● ::first-letter : identifica la prima lettera del contenuto di un elemento di
blocco, tipicamente un paragrafo
● ::first-line : identifica la prima linea del contenuto di un elemento di
blocco, tipicamente un paragrafo
● ::selected : identifica una porzione di un elemento selezionato da un
utente
● un determinato attributo
● un determinato attributo con uno specifico valore
● un determinato attributo con un valore che contiene una specifica parola
● un determinato attributo con un valore che inizia con una specifica parola
● un determinato attributo con un valore che finisce con una specifica parola
https://www.w3schools.com/cssref/default.asp
● color ● font-size
● background-color ● font-weight
● background-image ● margins
● borders ● padding
● font-family ● height
● text-align ● width
● … e molti altri
Proprietà color
● la proprietà color permette di specificare il colore (con i metodi già visti) del
testo contenuto in un elemento html
Nota: di solito vengono specificati almeno 3 font, nel caso che uno o più font non
siano gestiti dal browser o dal sistema; il font finale solitamente è di tipo generico
Proprietà font-style e font-weight
● la proprietà font-style permette di specificare lo stile del testo contenuto in un
elemento html tra normal (default), italic e oblique
<link rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Sofia">
background-image: url("immagine.png");
NOTA: l’altezza di un div (o dei tag semantici che definiscono il layout della pagina)
è sempre determinata dagli elementi figli (se non sovrascritta)
Proprietà max-min width e max-min height
● max-width e max-height: assegna un valore massimo alla larghezza o
all’altezza (larghezza e altezza restano fisse, il contenuto potrebbe fuoriuscire)
● min-width e min-height: assegna un valore minimo alla larghezza o all'altezza
(larghezza e altezza potrebbero aumentare)
● Queste proprietà, se presenti, sovrascrivono le proprietà width e height,
eventualmente presenti
Nota: display:none viene spesso usato con JS per creare effetti di pop up
La proprietà float
● la proprietà float specifica se un elemento debba galleggiare o meno
● un elemento può galleggiare (fluttuare) a destra o a sinistra, uscendo dal
normale flusso del documento
● usato inizialmente per far fluire del testo intorno ad una immagine e
successivamente per creare layout responsive
● può avere i seguenti valori:
○ left : l’elemento galleggia sulla sinistra del suo contenitore (tipicamente un div)
○ right : l’elemento galleggia sulla destra del suo contenitore (tipicamente un div)
○ none : nessun galleggiamento (valore di default)
○ inherit : valore ereditato dal genitore
Nota: con float tutti gli elementi perdono il valore originale della proprietà display e
diventano quasi tutti elementi di tipo block
La proprietà clear
● la proprietà clear specifica se un elemento può avere accanto elementi
flottanti
● usata spesso per resettare il flusso del documento (vedi clearfix hack)
● ha i seguenti valori:
○ none : lascia che ci siano elementi flottanti sia a destra che a sinistra
○ left : non ammette elementi flottanti alla sinistra
○ right : non ammette elementi flottanti alla destra
○ both : impedisce qualunque elemento flottante sia a destra che a sinistra
○ inherit : valore ereditato dal genitore
Relative
● l’elemento viene posizionato con un offset (sfruttando top, bottom, left e right)
rispetto alla sua normale posizione static
● lo spazio lasciato libero non viene riempito dagli altri elementi
La proprietà position (3/5)
Fixed
● l’elemento viene posizionato con un offset (in base a top, bottom, left e right)
rispetto al viewport (l’area visibile del browser)
● rimane sempre nella stessa posizione anche durante lo scrolling della pagina
● lo spazio lasciato libero viene riempito dagli altri elementi
● un elemento di blocco perde il riferimento della larghezza che va reimpostata
La proprietà position (4/5)
Absolute
● l’elemento viene posizionato con un offset (in base a top, bottom, left e right) ,
rispetto al contenitore padre “posizionato”
● se non non ha un padre “posizionato” fa riferimento al body e scorre con la
pagina
● l’elemento viene estratto completamente dal flusso
● l’elemento viene posizionato con un offset (in base a top, bottom, left e right) ,
rispetto alle operazioni di scrolling della pagina effettuate dall’utente
● un elemento “appiccicoso” oscilla tra il comportamento relative e fixed a
seconda della posizione dello scrolling
● è relative finchè lo scrolling non raggiunge il bordo della viewport, poi diventa
fixed
Clearfix hack (1/2)
● il problema nasce soprattutto quanto si ha uno o più elementi flottanti
racchiusi in un contenitore
● un elemento flottante viene estratto dal normale flusso della pagina,
generando spesso un problema di visualizzazione, perchè il contenitore, non
avendo più contenuto, collassa su se stesso
● nei casi semplici, come ad esempio le barre di navigazione o la gestione delle
immagini possiamo usare l’attributo overflow:hidden
● in generale o nei casi più complessi viene usata una classe particolare (che
garantisce maggior compatibilità con i browser obsoleti), la cosiddetta clearfix
hack, che va associata al tag contenitore
Clearfix hack (2/2)
● il trucco consiste nell’inserire un elemento invisibile (con la proprietà
content) che resetti il flusso dopo l’ultimo elemento flottante di un tag
contenitore
.clearfix::after {
content: "";
clear: both;
display: table;
}
https://www.html.it/articoli/clearfix-esempi-come-si-usa-tutorial/
https://www.w3schools.com/howto/howto_css_clearfix.asp
CSS Media Query
● Tecnica introdotta con la versione CSS3 per creare siti “responsive”
● Fa uso del selettore @media per applicare una serie di regole soltanto sotto
determinate condizioni dette “breakpoint”
● Media accettati:
○ screen (schermi di pc o tablet)
○ print (per la stampa di pagine web)
○ speech (screen reader)
Viewport
● Il viewport è l’area di una pagina web visibile all'utente
● Dipende dal dispositivo (laptop, tablet, smartphone)
● Per usare le media query correttamente è necessario includere il tag
sottostante “meta” nella sezione head del documento che setta la larghezza
dello schermo e il fattore di scala iniziale
Esempio
● L’esempio sottostante raffigura un breakpoint che attiverà la regola soltanto se
il dispositivo di visualizzazione è uno schermo (screen) e se la risoluzione
orizzontale dello schermo scende sotto i 600 pixel.
Specificità
● La specificità determina l’ordine di applicazione o la precedenza di una regola
sulle altre regole che si riferiscono allo stesso selettore
● in caso di specificità uguale, conta l’ordine di apparizione
● possiamo immaginare la specificità come un punteggio che viene assegnato
alla regola
● partendo da 0 è possibile calcolare il punteggio di una regola aggiungendo un
determinato valore per ogni elemento presente:
○ 1 : per ogni selettore semplice e pseudo elementi
○ 10 : per ogni classe, pseudo classe e attributi
○ 100 : per ogni selettore ID
○ 1000 : se la regola definita “in line” con attributo style
● per forzare l'applicazione di una regola posso usare la keyword !important
Per approfondimenti
● specificità: https://www.w3schools.com/css/css_specificity.asp
● usare icone da fonti esterne: https://www.w3schools.com/css/css_icons.asp
● centrare elementi verticalmente
● altezza al 100%
● dropdown menu
● gallerie di immagini
● sticky header e sticky footer
● proprietà flexbox e grid
● framework bootstrap
Fonti
● w3school.com