Accanto all’HTML, il CSS è lo standard web più im­por­tan­te nel campo del web design. Chi ha in­ten­zio­ne di pro­get­ta­re “a mano” siti web che siano al passo coi tempi, non potrà fare a meno del Cascading Style Sheets. Anche l’approccio a editor grafici HTML, siti già pronti, e CMS diventa più semplice se si possiede una base di co­no­scen­za di lin­guag­gio CSS. Il nostro tutorial intende guidarvi sotto forma di corso ac­ce­le­ra­to passo per passo nel vostro primo incontro con le basi del lin­guag­gio dei fogli di stile.

Se­pa­ra­zio­ne di contenuto e pre­sen­ta­zio­ne

In com­bi­na­zio­ne con l’HTML, il CSS serve alla se­pa­ra­zio­ne di contenuto e pre­sen­ta­zio­ne. L’Hypertext Markup Language (HTML) in­ter­vie­ne per ar­ric­chi­re documenti di testo con in­for­ma­zio­ni che sono ne­ces­sa­rie per la strut­tu­ra­zio­ne semantica degli elementi di testo. Il lin­guag­gio di markup crea quindi la base di qualsiasi sito web: il codice HTML. Quest’ultimo offre la de­scri­zio­ne degli elementi che vanno a comporre un documento (ad esempio: <body>, <header>, <footer>) e di come devono essere in­ter­pre­ta­te le in­for­ma­zio­ni (come: titolo <h1>, paragrafo <p>, in­ter­ru­zio­ne di riga <br>, link <a>, immagine <img>, video <video>). Tutto ciò è suf­fi­cien­te ai browser per in­ter­pre­ta­re i documenti HTML e rap­pre­sen­tar­li sotto forma di siti web. In un’ottica con­tem­po­ra­nea il risultato è tuttavia poco attraente, poiché manca un passo fon­da­men­ta­le: l’im­pa­gi­na­zio­ne per­so­na­liz­za­ta.

In origine anche l’HTML offriva istru­zio­ni per l’al­le­sti­men­to degli elementi che com­pon­go­no il progetto, ma nell’attuale HTML5 risultano superate e sarebbe meglio evitarle. Per gestire le direttive ri­guar­dan­ti la rap­pre­sen­ta­zio­ne sti­li­sti­ca in maniera separata si utilizza invece il lin­guag­gio dei fogli di stile CSS (Cascading Style Sheets): ma di cosa si tratta pre­ci­sa­men­te?

Cos’è il CSS?

Come già l’HTML, anche il CSS viene scritto sotto forma di testo. Ciò può avvenire di­ret­ta­men­te su un documento HTML, inline per ogni documento oppure una volta sola per tutti i documenti scrivendo all’interno del tag <head>, la “testa” dell’HTML. Di norma, però, i web designer integrano i documenti CSS se­pa­ra­ta­men­te per pro­get­ta­re siti web. Il risultato è un codice sorgente chiaro in cui le istru­zio­ni di pro­get­ta­zio­ne vengono evitate tramite rinvii a fogli di stile separati. Meno ri­pe­ti­zio­ni ci sono, più leggero sarà il codice sorgente. In rete questo incide sui tempi di download, i quali saranno infatti più brevi e ga­ran­ti­ran­no una veloce vi­sua­liz­za­zio­ne del sito. Oltre a ciò, il CSS permette di al­leg­ge­ri­re la ma­nu­ten­zio­ne di un sito web: nel caso in cui fosse ne­ces­sa­rio adattare il design, infatti, si lavora di­ret­ta­men­te sui file CSS, evitando, in questo modo, di scan­da­glia­re e ria­dat­ta­re ogni singolo documento HTML. Essendo un co­sid­det­to living standard, ovvero uno standard vivente, il CSS viene re­go­lar­men­te svi­lup­pa­to dal World Wide Web Con­sor­tium (W3C) ed at­tual­men­te viene uti­liz­za­ta la CSS3, ovvero la sua terza versione. Mentre le versioni CSS1 e 2 sono integrate da tempo in tutti i browser in uso, le proprietà CSS re­cen­te­men­te in­tro­dot­te con la terza versione non vengono ancora sup­por­ta­te su tutti i programmi web. A tal proposito w3schools.com offre una pa­no­ra­mi­ca dei supporti garantiti dai modelli di browser Microsoft Internet Explorer, Mozilla Firefox, Google Chrome, Apple Safari e Opera.

Struttura di base: La sintassi del CSS

Il compito prin­ci­pa­le del CSS è di definire il design di un sito web: a questo scopo vengono assegnati de­ter­mi­na­ti valori agli elementi HTML con l’aiuto delle proprietà del lin­guag­gio di stile. La struttura di base di una regola cor­ri­spon­de al seguente schema:

selettore { dichiarazione }

Il selettore altro non è che una rap­pre­sen­ta­zio­ne dell’elemento HTML al quale fa ri­fe­ri­men­to la regola. La di­chia­ra­zio­ne consiste di una com­bi­na­zio­ne tra proprietà e valore che viene annotata tra due parentesi graffe. Ogni di­chia­ra­zio­ne finisce con un punto e virgola:

elemento HTML { proprietà: valore; }

Secondo questo schema è possibile, ad esempio, applicare un de­ter­mi­na­to colore all’in­te­sta­zio­ne:

h2 { color: red; }

Il selettore h2 rap­pre­sen­ta le in­te­sta­zio­ni di secondo ordine, i sot­to­ti­to­li. La di­chia­ra­zio­ne contiene la proprietà color (colore) e il valore red (rosso). Tale regola fa sì che tutte le porzioni di testo definite con <h2> appaiano sul sito web in rosso. In al­ter­na­ti­va è possibile definire im­po­sta­zio­ni di colore precise at­tra­ver­so codici di colore esa­de­ci­ma­li (maggiori in­for­ma­zio­ni a riguardo nel capitolo sulle in­di­ca­zio­ni di colore).

h2 { color: #ff0000; }

I web designer hanno la pos­si­bi­li­tà di applicare una singola proprietà al selettore oppure di definire ampi blocchi di di­chia­ra­zio­ni che con­ten­ga­no regole det­ta­glia­te. Per una questione di leg­gi­bi­li­tà si è affermata una scrittura in cui tutte le proprietà di un blocco di di­chia­ra­zio­ni vengono annotate una sotto all’altra:

selettore {
    proprietà1: valore;
    proprietà2: valore;
    proprietà3: valore;
}

Nella pratica un blocco di di­chia­ra­zio­ni simili potrebbe apparire come segue:

h2 { 
    color: #ff0000; 
    font-family: Helvetica, sans-serif; 
    font-size: 19px; 
    font-weight: bold;
    text-align: center; 
}

Le com­bi­na­zio­ni tra proprietà e valore all’interno delle parentesi graffe de­fi­ni­sco­no il colore del font (color), il tipo di font (font-family), la di­men­sio­ne del font (font-size), la gestione del grassetto (font-weight) e la di­spo­si­zio­ne del testo (text-align). Una de­scri­zio­ne det­ta­glia­ta delle proprietà CSS segue nel corso del tutorial.

Un blocco di di­chia­ra­zio­ni può servire a spe­ci­fi­ca­re più selettori alla volta: in tal caso basterà separarli con una virgola prima della di­chia­ra­zio­ne:

selettore1, selettore2 { dichiarazione }

Selettori CSS

Il CSS supporta diversi selettori in grado di dare istru­zio­ni di regole user friendly. Tuttavia, per chi approccia il CSS per la prima volta, basterà che prenda con­fi­den­za con i selettori di tipologia, classe, ID e quelli uni­ver­sa­li.

Tipo di selettore Scrittura CSS De­scri­zio­ne
Selettore elemento HTML (ad esempio h2) Il selettore cor­ri­spon­de al nome dell’elemento al quale fa ri­fe­ri­men­to. Lo stile viene applicato su tutti gli elementi HTML dello stesso tipo.
Selettore di classi .esempio Il selettore di classi si rivolge a tutti gli elementi di una classe specifica e si scrive con un punto (.) e un nome per­so­na­liz­za­bi­le: .esempio. Le classi vengono applicate agli elementi HTML tramite l’attributo class (class="esempio").
Selettore ID #esempio Il selettore ID si rivolge a un unico elemento con un ID specifico. L’in­te­gra­zio­ne nel codice sorgente HTML avviene grazie all’attributo id (id="esempio").
Selettore uni­ver­sa­le * Il selettore uni­ver­sa­le asterisco (*) si rivolge a tutti gli elementi HTML di un documento.

L’ap­pli­ca­zio­ne di diversi selettori CSS risulta più chiara uti­liz­zan­do esempi concreti. Il codice seguente illustra il selettore h2 con la di­chia­ra­zio­ne:

h2 { 
    color: #305796; 
    font-family: Helvetica, sans-serif; 
}

L’ap­pli­ca­zio­ne di stile è relativa a tutti gli elementi HTML del tipo h2 (in­te­sta­zio­ne di secondo ordine o sot­to­ti­to­lo).

In al­ter­na­ti­va, l’ap­pli­ca­zio­ne dello stile può avvenire tramite un selettore di classe. Questo permette ai web designer di munire gli elementi HTML della stessa regola, in­di­pen­den­te­men­te dal gruppo di ap­par­te­nen­za.

.content { 
    color: #ff0000; 
    font-family: Helvetica, sans-serif; 
}

L’ap­pli­ca­zio­ne fa ri­fe­ri­men­to a tutti gli elementi HTML ai quali è stata applicata la classe .content. Questa as­se­gna­zio­ne avviene secondo il seguente schema:

<p class="special-text">Esempio di testo</p>
Consiglio

Nell’HTML i nomi delle classi vengono scritti senza punto (.).

Se una regola dovesse far ri­fe­ri­men­to esclu­si­va­men­te a un singolo elemento all’interno del codice sorgente HTML, allora il selettore ID è l’ideale. Il seguente esempio mostra l’ap­pli­ca­zio­ne dello stile di una barra di na­vi­ga­zio­ne:

#navigation {
    font-family: Helvetica, sans-serif; 
    background-color: #8ad8d4;
    border: 2px solid #448278;
}

L’as­se­gna­zio­ne di uno stile avviene nel codice sorgente HTML senza l’hashtag (#):

<div id="navigation">
    <ul>
        <li><a href="index.htm">Home</a></li>
        <li><a href="contatti.htm">Contatti</a></li>
    </ul>
</div>

Il vantaggio dei selettori ID è che a prima vista appare subito evidente quali sezioni del codice sorgente sono campi che ricorrono una volta sola. Oltre a ciò, i selettori ID hanno la priorità durante la lettura del codice. Quindi se per un elemento specifico si trovano sia stili di classi che di ID che si con­trad­di­co­no, allora sarà quest’ultimo ad avere la meglio e ad essere applicato. Allo stesso modo le classi hanno una priorità più alta di selettori generici.

Sia le classi come anche gli ID possono essere nominati li­be­ra­men­te. Va solamente tenuto in con­si­de­ra­zio­ne che i selettori CSS sono case sensitive: ciò significa che dif­fe­ren­ze tra maiuscolo e minuscolo portano a in­ter­pre­ta­re due classi separate (come ad esempio: na­vi­ga­tion o Na­vi­ga­tion). Gli spazi e i caratteri speciali non sono ammessi, le lettere accentate sono con­si­de­ra­te invece inusuali.

Se una regola dovesse riferirsi a tutti gli elementi di un documento HTML, allora in­ter­vie­ne l’asterisco (*):

*  { 
    font-family: Helvetica, sans-serif; 
}

In questo modo tutti gli elementi di testo del sito web verranno rap­pre­sen­ta­ti sul browser con il font Helvetica.

Integrare il CSS nell’HTML

Perché un browser possa prendere in con­si­de­ra­zio­ne ap­pli­ca­zio­ni di stile CSS all’interno del ca­ri­ca­men­to di un sito web, le regole devono essere collegate al codice sorgente HTML. A questo scopo esistono tre pos­si­bi­li­tà:

  • L’in­te­gra­zio­ne diretta della di­chia­ra­zio­ne CSS nei tag HTML
  • L’as­se­gna­zio­ne CSS all’interno del tag head HTML
  • Il rinvio a un foglio di stile separato

L’ultima soluzione proposta rap­pre­sen­ta la scor­cia­to­ia ideale: nella pratica i fogli di stile vengono aggiunti come file di testo esterni e suc­ces­si­va­men­te collegati al progetto.

Di­chia­ra­zio­ne CSS all’interno dei tag HTML

Se una di­chia­ra­zio­ne CSS definisce lo stile di una singola parte del codice sorgente, allora le regole di stile possono venire di­ret­ta­men­te applicate sul tag dell’elemento HTML grazie all’attributo style. In questo caso si parla di inline-style, o anche stile in linea.

<h2 style="color: red;">Intestazione intermedia</h2>

Questo metodo ha i vantaggi che non è ne­ces­sa­rio con­fi­gu­ra­re un foglio di stile apposito, che il selettore sparisce e che una tale istru­zio­ne ha una priorità elevata. Solamente nel momento in cui deve essere applicato un blocco di di­chia­ra­zio­ni, allora questo metodo di stile risulta poco chiaro e ri­don­dan­te.

<h2 style="color: #ff0000; font-family: 'Helvetica Neue', sans-serif; font-size: 19px; font-weight: bold; text-align: center;">Sottotitolo</h2>

Questa in­te­gra­zio­ne delle regole si consiglia quindi, se proprio, solo ed esclu­si­va­men­te a siti web di di­men­sio­ne ridotta che hanno una pro­get­ta­zio­ne minimale.

As­se­gna­zio­ne del CSS nel head dell’HTML

Se una regola di stile che si trova all’interno di un documento HTML è valida più volte per lo stesso elemento, come ad esempio per tutti gli h2 del sito web, la di­chia­ra­zio­ne CSS integrata nel tag HTML diventa inef­fi­cien­te. Piuttosto risulta più con­ve­nien­te definire le relative regole una volta sola all’interno del head dell’HTML del documento grazie all’elemento style:

<!DOCTYPE html>
    <html lang="de">
        <head>
            <style>
                h2 {
                    color: #ff0000; 
                    font-family: 'Helvetica Neue', sans-serif; 
                    font-size: 19px; 
                    font-weight: bold;
                    text-align: center; 
                }
            </style>
        </head>
        <body>
            <h2>Sottotitolo1</h2>
            […]
            <h2>Sottotitolo2</h2>
            […]
        </body>
</html>

Il blocco di di­chia­ra­zio­ni all’interno dell’elemento style viene applicato au­to­ma­ti­ca­men­te su tutti gli elementi h2 che seguono. Ma come procedere se l’elemento h2 deve essere applicato con le stesse regole qui definite anche ad altre pagine dello stesso progetto online? In questo caso il gestore del sito web dovrebbe integrare il codice di blocco con le regole in ogni pagina HTML e in caso di cam­bia­men­ti adattarli sin­go­lar­men­te. Uti­liz­zan­do un file CSS centrale questo problema si risolve agilmente.

Rimando a un foglio di stile separato

Se le regole di stile vengono definite in un foglio di stile separato, allora quest’ultimo va collegato al documento HTML di base. Questo avviene uti­liz­zan­do l’elemento HTML <link>, che, come l’elemento style, rap­pre­sen­ta un elemento figlio del head.

<link rel="stylesheet" href="esempio.css">

L’elemento link contiene gli attributi ob­bli­ga­to­ri rel e href e può essere com­ple­ta­to ideal­men­te con gli attributi type e media.

Attributi dell’elemento link De­scri­zio­ne
rel L’attributo rel definisce il tipo di relazione dell’elemento. Il valore sty­le­sheet comunica che va collegato un foglio di stile.
href L’attributo href incorpora il file che dovrà essere integrato come foglio di stile.
type L’attributo ottimale type descrive i tipi di media del file da in­cor­po­ra­re nel caso di CSS “text/css”.
media Con l’attributo media i gestori di siti web hanno la pos­si­bi­li­tà di de­ter­mi­na­re che i fogli di stile in­cor­po­ra­ti vengano applicati solamente a un media specifico in uscita. Ciò permette di rea­liz­za­re diversi fogli di stile a seconda del di­spo­si­ti­vo finale. Possibili valori sono ad esempio screen o print.

I colori CSS

Come accennato nel capitolo in­tro­dut­ti­vo, le as­se­gna­zio­ni cro­ma­ti­che tramite CSS sono possibili uti­liz­zan­do i nomi dei colori in inglese (ad esempio: red, blue, green). In realtà tali regole di stile si trovano molto raramente, perché so­li­ta­men­te viene applicato il modello RGB: esso offre infatti de­ci­sa­men­te più sfumature e permette quindi ai gestori dei siti web di con­fi­gu­ra­re im­po­sta­zio­ni cro­ma­ti­che det­ta­glia­te. I codici cor­ri­spon­den­ti possono essere rin­trac­cia­ti con l’aiuto di un se­le­zio­na­to­re di colore, offerto, ad esempio, da Google sotto forma di Quick Answer.

Il modello RGB

Nel modello RGB è possibile indicare ogni colore tramite le quantità dei colori Red (rosso), Green (verde), Blue (blu) presenti in esso. Il modello RGB non va confuso con i colori primari sot­trat­ti­vi giallo, ciano e magenta.

Nel modello RGB le quantità di colore vengono definite at­tra­ver­so valori decimali tra 0 e 255. Mentre un valore di 0 significa che un colore non ha alcuna quota del colore primario in questione, al contrario, il valore 255 indica il valore massimo della quota.

La de­fi­ni­zio­ne del valore cromatico RGB cor­ri­spon­de allo schema seguente:

rgb(Red value, green value, blue value)

In questo modo il modello RGB vi permette di definire ben 16,7 milioni di dif­fe­ren­ti colori per la pro­get­ta­zio­ne del vostro sito web. La grafica seguente mostra i valori RGB per i colori standard nero, bianco, rosso, blu, verde, giallo, magenta, ciano, violetto e arancione:

A partire dalla versione CSS3 i valori RGB possono essere ampliati di un valore, il co­sid­det­to canale alfa (a): questo, infatti, descrive il grado di tra­spa­ren­za/opacità di un colore uti­liz­zan­do valori da 0 a 1 (ad esempio 0.8).

rgba(valore di rosso, valore di giallo, valore di blu, opacità/trasparenza)

In questo modo, per il colore blu sopra rap­pre­sen­ta­to, i seguenti valori RGBA danno come risultato una tra­spa­ren­za del 50 %.

rgba(0, 0, 255, 0.5)

La grafica seguente mostra una su­per­fi­cie di colore blu tra­spa­ren­te posta su una su­per­fi­cie di colore rosso.

In rete si è affermata l’in­di­ca­zio­ne dei colori in valori HEX in al­ter­na­ti­va alla scrittura esa­de­ci­ma­le.

Codici colore esa­de­ci­ma­li

I codici colore esa­de­ci­ma­li de­fi­ni­sco­no i valori cromatici sulla base di un sistema di valori con base 16. A dif­fe­ren­za del sistema decimale, quindi, non si tratta di 10, bensì di 16 cifre. La suc­ces­sio­ne è la seguente: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f.

La struttura di base di un codice colore esa­de­ci­ma­le è co­sti­tui­ta da un hashtag (#) seguito da sei cifre esa­de­ci­ma­li che rap­pre­sen­ta­no, ognuna in blocchi di due, un colore dello spettro cromatico RGB:

#RRGGBB

La sa­tu­ra­zio­ne delle quote di colore viene indicata tramite il valore numerico degli esa­de­ci­ma­li, per cui 00 cor­ri­spon­de a un colore com­ple­ta­men­te nullo e FF (decimale: 255) al massimo del colore totale. Ciascun colore si basa su una miscela additiva dei colori di base, così risultano, ad esempio, i seguenti valori HEX per gli esempi cromatici già rap­pre­sen­ta­ti nel codice RGB:

Accanto al modello RGB, il CSS supporta anche il modello colore HSL. In futuro i web designer potranno uti­liz­za­re im­po­sta­zio­ni cro­ma­ti­che grazie al modello colore CMYK.

Le proprietà CSS più im­por­tan­ti

Con il CSS avrete a di­spo­si­zio­ne ben 420 proprietà con le quali è possibile definire regole per gli elementi HTML. Ogni proprietà accetta un blocco di valori stabilito nella spe­ci­fi­ca­zio­ne. Per garantire chiarezza, le proprietà CSS vengono rag­grup­pa­te in campi di ap­pli­ca­zio­ne. Sono di fon­da­men­ta­le im­por­tan­za la sti­liz­za­zio­ne del testo, gli adat­ta­men­ti cromatici, la for­mat­ta­zio­ne del testo, ma anche il layout sulla base dei modelli di box CSS e il po­si­zio­na­men­to di questi ultimi. Il nostro corso ac­ce­le­ra­to per prin­ci­pian­ti si concentra sulle proprietà più im­por­tan­ti da con­si­de­ra­re per un primo approccio al CSS e dimostra la creazione di regole sulla base di esempi pratici di codice. Potete trovare l’elenco completo di tutte le proprietà CSS sul sito web del W3C.

Sti­liz­za­zio­ne del testo

La sti­liz­za­zio­ne del testo ap­par­tie­ne alle ca­rat­te­ri­sti­che fon­da­men­ta­li di un sito web. Il CSS vi offre diverse pos­si­bi­li­tà di for­mat­ta­re gli elementi di testo di una pagina HTML. Le proprietà più im­por­tan­ti in ambito di stile di testo sono le seguenti:

  • font-family
  • font-style
  • font-variant
  • font-size
  • line-height
  • font-weight

font-family

Should a par­ti­cu­lar font be defined for the text elements of a website, then the CSS property font-family is used. This allows you to create a font stack. This is a prio­ri­ti­zed list of suitable fonts. Font stacks are built in such a way that the desired font is named first, followed by a list of matching display al­ter­na­ti­ves.

.content {
    font-family: Georgia, Garamond, serif;
}

L’esempio mostra una regola per la classe .content nel file CSS: questa viene citata nel documento HTML tramite l’attributo class e il nome della classe content:

<p class="content">Esempio di testo</p>

Il font prio­ri­ta­rio definito è il Georgia, come font al­ter­na­ti­vo il Garamond. Così facendo il browser avrà il compito di rap­pre­sen­ta­re il testo con il Garamond nel momento in cui il font prio­ri­ta­rio Georgia non sia in­stal­la­to sul sistema.

Ma cosa succede se nessuna delle al­ter­na­ti­ve presenti nel font stack è di­spo­ni­bi­le? Per un caso simile si consiglia di definire una famiglia di font generica come mec­ca­ni­smo di fallback. Sia il Georgia che il Garamond ap­par­ten­go­no alla famiglia serif. Se questa al­ter­na­ti­va viene inserita per ultima nella di­chia­ra­zio­ne, il browser rap­pre­sen­ta il paragrafo di testo con un font a sua di­spo­si­zio­ne ap­par­te­nen­te alla famiglia generica, come ad esempio il tanto diffuso Times New Roman. Così è garantito che l’effetto pensato dall’autore del foglio di stile venga mantenuto almeno in linea generale.

Altre famiglie generiche sono sans-serif di cui fanno parte, ad esempio, l’Arial, il Trebuchet o il Verdena, e monospace a cui ap­par­ten­go­no invece il Courier, il Courier New o l’Andale Mono. Nella di­chia­ra­zio­ne CSS i font i cui nomi sono co­sti­tui­ti da più parole vengono messi tra apostrofi o tra vir­go­let­te:

.content {
    font-family: 'Trebuchet MS', 'Liberation Sans', sans-serif;
}
Consiglio

Per quanto riguarda le famiglie generiche di font si tratta di parole chiave che non vanno annotate tra vir­go­let­te.

font-style

La proprietà CSS font-style si riferisce allo stile di scrittura di un paragrafo di testo e vi offre la pos­si­bi­li­tà di definire l’in­cli­na­zio­ne del testo in base a uno dei tre valori seguenti:

Valori di in­cli­na­zio­ne del testo De­scri­zio­ne
normal Scrittura normale (im­po­sta­zio­ne standard)
italic Corsivo
oblique Corsivo più obliquo

Il seguente esempio mostra una regola per lo stile di font in corsivo:

.special-content {
    font-family: Arial; 
    font-style: italic;
}
<p class="special-content ">Esempio di testo</p>

Sul browser i valori italic e oblique sono ge­ne­ral­men­te rap­pre­sen­ta­ti in maniera identica. Il valore oblique non è molto comune e ciò che lo dif­fe­ren­zia dall’italic è che rende corsivo un font che non prevede una versione corsiva.

font-variant

La proprietà CSS font-variant in­ter­vie­ne per definire varianti di scrittura.

Valori di varianti di scrittura De­scri­zio­ne
normal Variante di scrittura normale (im­po­sta­zio­ne standard)
small-caps Ma­iu­sco­let­to per lettere minuscole
all-small-caps Ma­iu­sco­let­to per lettere minuscole e maiuscole

I seguenti esempi mostrano una variante di scrittura small-caps e all-small-caps:

.content {
    font-family: Arial;
    font-variant: small-caps;
}
<p class="content ">Esempio di testo</p>

Il valore small-caps indica al browser di rap­pre­sen­ta­re tutte le lettere minuscole come ma­iu­sco­let­to, ovvero con un carattere maiuscolo ma di corpo più ridotto.

.content {
    font-family: Arial;
    font-variant: all-small-caps;
}
<p class="content;">Esempio di testo</p>

Il valore all-small-caps indica al browser di rap­pre­sen­ta­re tutte le lettere in ma­iu­sco­let­to.

font-size

Con la proprietà CSS font-size viene definita la di­men­sio­ne degli elementi di testo. Ciò può avvenire sia con valori assoluti oppure re­la­ti­va­men­te agli elementi cir­co­stan­ti. Viene indicata l’altezza dei caratteri, ovvero il corpo del testo. I web designer avranno a di­spo­si­zio­ne vari metodi di scrittura e unità di misura.

Le unità di misura assolute si orientano secondo misure di lunghezza fisiche. Sullo schermo i browser tramutano tutte queste unità in pixel ri­por­tan­do una ri­so­lu­zio­ne di 96 dpi. Su un moderno computer portatile o uno smart­pho­ne 1 cm risulterà de­ci­sa­men­te più piccolo rispetto alle aspet­ta­ti­ve. Oltre che per i px, le unità di misura assolute non giocano alcun ruolo fon­da­men­ta­le nel mondo del web design: il loro vero senso è tutt’al più per la pub­bli­ca­zio­ne su carta, nel qual caso il browser prenderà come ri­fe­ri­men­to le di­men­sio­ni reali.

Unità di misura assolute:

Unità Scrittura CSS De­scri­zio­ne
Pixel px L’unità di misura px venne svi­lup­pa­ta mi­ra­ta­men­te per il CSS e cor­ri­spon­de alla di­men­sio­ne di un elemento in pixel. I pixel vengono rap­pre­sen­ta­ti sui display in relazione alla densità di punti (ad esempio “dots per inch”, dpi). Tuttavia si tratta di un’unità di misura assoluta. Al giorno d’oggi 1 px non cor­ri­spon­de ne­ces­sa­ria­men­te a un pixel del display. Per impedire che elementi di testo vengano rap­pre­sen­ta­ti troppo ridotti, con i display aventi un’alta ri­so­lu­zio­ne i browser lavorano con una scala di misura px. Un pixel CSS viene così rap­pre­sen­ta­to da mol­te­pli­ci pixel di display a seconda della ri­so­lu­zio­ne dello schermo. Come valore in­di­ca­ti­vo per la scala ci si orienta sul principio seguente: 1 pixel CSS cor­ri­spon­de a 1/96 di un pollice. L’utente può aggirare l’at­tri­bu­zio­ne stabilita in unità px zoomando di­ret­ta­men­te nel browser.
Cen­ti­me­tro cm Di­men­sio­ne in cen­ti­me­tri
Mil­li­me­tro mm Di­men­sio­ne in mil­li­me­tri
Pollice in Di­men­sio­ne in pollici (1 in = 2,54 cm)
Punto pt Di­men­sio­ne in punti (1 pt cor­ri­spon­de a 1/72 di 1 pollice)
Pica pc Di­men­sio­ne in Pica (1 Pica cor­ri­spon­de a 12 punti)

Per quanto riguarda le unità di misura relative, si tratta di in­di­ca­zio­ni che si ri­fe­ri­sco­no alla di­men­sio­ne del carattere e che vengono de­ter­mi­na­te a seconda di una di­men­sio­ne pre­sta­bi­li­ta. Gli elementi HTML ereditano la loro di­men­sio­ne del font dagli elementi genitore. Inoltre, un ri­fe­ri­men­to per la di­men­sio­ne relativa del font può essere un valore tecnico in­di­ca­ti­vo, come la di­men­sio­ne del display di un di­spo­si­ti­vo o un valore standard sul browser.

Unità di misura relative:

Unità Scrittura CSS De­scri­zio­ne
Per­cen­tua­le % L’unità di misura % indica la di­men­sio­ne del font in pro­por­zio­ne per­cen­tua­le alla di­men­sio­ne del font ereditata. A una di­men­sio­ne del font di 16 px cor­ri­spon­de una font-size del 75 %, quindi una di­men­sio­ne di 12 px.
em (altezza del font) em Anche l’unità di misura em è in relazione all’elemento genitore. 1 em cor­ri­spon­de al 100 % della di­men­sio­ne del font ereditata. Se, ad esempio, una di­men­sio­ne del font viene definita a 20 px, allora un valore di 0.8 em cor­ri­spon­de­rà a una di­men­sio­ne del font di 80 %, quindi a 16 px. Se non è stata definita nessuna di­men­sio­ne per l’elemento genitore, allora verrà adottata la di­men­sio­ne standard del di­spo­si­ti­vo.
Altezza x ex Il valore di ri­fe­ri­men­to per l’unità di misura ex è l’altezza della lettera minuscola x del font scelto. Se per un font non è stata definita nessuna altezza, allora vale il principio: 1 ex = 0.5 em.
Root-em rem L’unità di misura rem fa ri­fe­ri­men­to all’elemento radice di un documento (ad esempio l’elemento HTML). 1 rem cor­ri­spon­de al 100 % della di­men­sio­ne del font che è stata stabilita per l’elemento radice.
Larghezza viewport vw L’unità di misura vw si orienta alla larghezza della viewport, ovvero il campo visivo, di un di­spo­si­ti­vo uti­liz­za­to per la ri­pro­du­zio­ne. In questo caso vale: 1 vw = 1 % della larghezza viewport.
Altezza viewport vh L’unità di misura vh si orienta secondo l’altezza di un di­spo­si­ti­vo rap­pre­sen­tan­te. In questo caso vale: 1 vh = 1 % dell’altezza viewport.

Oltre a ciò la di­men­sio­ne del font può essere definita grazie a parole chiave assolute e relative. Come valore in­di­ca­ti­vo si fa ri­fe­ri­men­to alla di­men­sio­ne pre­de­fi­ni­ta dal browser, la quale cor­ri­spon­de a font-size: medium.

Parole chiave assolute:

Valore assoluto De­scri­zio­ne Esempio
xx-small Minuscola 9 px
x-small Molto piccola 10 px
small Piccola 13 px
medium Media (di­men­sio­ne del font pre­de­fi­ni­ta dal browser) 16 px
large Grande 19 px
x-large Molto grande 24 px
xx-large Enorme 32 px

Parole chiave relative:

Valore relativo De­scri­zio­ne
smaller L’elemento attuale viene rap­pre­sen­ta­to più piccolo rispetto all’elemento genitore.
larger L’elemento attuale viene rap­pre­sen­ta­to più grande rispetto all’elemento genitore.

Per as­si­cu­ra­re una rap­pre­sen­ta­zio­ne ottimale della di­men­sio­ne del font su diversi di­spo­si­ti­vi è rac­co­man­da­bi­le uti­liz­za­re unità di misura relative come em oppure %. Se l’in­di­ca­zio­ne deve essere assoluta, px è la scelta ideale per la maggior parte dei web designer.

Lo schema di base della for­mat­ta­zio­ne della di­men­sio­ne del font tramite CSS cor­ri­spon­de al seguente esempio di codice:

.content {
    font-size: 19px;
}
<h2 class="content">Esempio di testo</h2>

La seguente grafica mette a confronto tre diverse di­men­sio­ni di font, 16 px, 19 px e 21 px:

line-height

La proprietà CSS line-height viene uti­liz­za­ta per definire l’altezza delle righe di un paragrafo di testo.
Valgono le stesse unità di misura di font-size, anche se le in­di­ca­zio­ni di per­cen­tua­le font-size si ri­fe­ri­sco­no ai relativi testi. In al­ter­na­ti­va è possibile indicare la line-height in cifre senza unità di misura. Ulteriori valori possibili sono normal (im­po­sta­zio­ne standard) e inherit (cor­ri­spon­den­te all’elemento genitore). Ad esempio, una line-height di 1.5 cor­ri­spon­de a un’altezza di riga del 150 % della relativa altezza di font oppure a 1.5 em.

.content {
    line-height: 1.5;
}
<p class="content">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.</p>

La grafica seguente mette a confronto blocchi di testo con un’altezza di riga di 100, 120 e 150 %:

font-weight

La proprietà CSS font-weight definisce la con­si­sten­za o “peso” di un elemento di testo. I web designer la uti­liz­za­no per rap­pre­sen­ta­re parti testuali in grassetto. I valori sono in­di­ca­bi­li in termini assoluti o relativi rispetto all’elemento genitore.

Valori assoluti per la proprietà font-weight De­scri­zio­ne
100 Extra sottile
200 Molto sottile
300 Sottile
400 Normale (im­po­sta­zio­ne standard)
500 Medio
600 Par­zial­men­te grassetto
700 Grassetto
800 Molto grassetto
900 Extra grassetto
normal Peso normale (cor­ri­spon­de al valore 400)
bold Grassetto (cor­ri­spon­de al valore 700)

Valori assoluti per la proprietà font-weight vengono rap­pre­sen­ta­ti in maniera dif­fe­ren­te a seconda del font. Il problema è che per dif­fe­ren­ti pesi vengono uti­liz­za­ti dif­fe­ren­ti stili, ma so­li­ta­men­te esistono solo normale, corsivo, grassetto e la com­bi­na­zio­ne di corsivo e grassetto. Se sono stati definiti solo due pesi di carattere, allora il browser assegna ai valori 100, 200, 300, 400, 500 il peso più leggero e ai valori maggiori il peso maggiore. Le cifre hanno rilevanza solamente nei font web, per cui di norma bastano solamente due dif­fe­ren­ti pesi di carattere: normal e bold.

.content {
    font-weight: normal;
}
.content {
    font-weight: bold;
}

I valori relativi della proprietà CSS font-weight de­fi­ni­sco­no il peso del carattere di un elemento di testo in relazione al peso ereditato dell’elemento genitore.

Valori relativi per la proprietà font-weight De­scri­zio­ne
bolder Grassetto maggiore rispetto all’elemento genitore
lighter Più leggero rispetto all’elemento genitore

For­mat­ta­zio­ne del testo

Accanto alla for­mat­ta­zio­ne del carattere, il CSS mette a di­spo­si­zio­ne diverse proprietà per la for­mat­ta­zio­ne testuale. Queste per­met­to­no di applicare im­po­sta­zio­ni ri­guar­dan­ti l’al­li­nea­men­to del testo e la distanza tra caratteri e parole oppure di decorare elementi di testo. Le proprietà im­por­tan­ti si trovano nell’ambito della for­mat­ta­zio­ne testuale:

  • text-align
  • hyphens
  • word-spacing
  • letter-spacing
  • text-indent
  • text-de­co­ra­tion
  • text-transform

text-align

La proprietà CSS text-align serve a po­si­zio­na­re elementi di testo e inline, questi ultimi sono quegli elementi contenuti all’interno del flusso testuale, come possono essere immagini o pulsanti. Valori usuali sono left (al­li­nea­men­to a sinistra), right (al­li­nea­men­to a destra), center (centrato), justify (giu­sti­fi­ca­to) o inherit (come l’elemento genitore). Il codice seguente porta a un al­li­nea­men­to centrale dell’esempio testuale:

.content {
    text-align: center;
}
<p class="content">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.</p>

Altre opzioni di for­mat­ta­zio­ne sono os­ser­va­bi­li nella seguente grafica:

Esistono, inoltre, valori relativi alla proprietà text-align per la de­fi­ni­zio­ne dell’al­li­nea­men­to testuale in relazione alla direzione di un testo (direction).

Valori per l’al­li­nea­men­to testuale relativo De­scri­zio­ne
start Il testo viene po­si­zio­na­to sul lato in cui inizia. Per una direzione da sinistra a destra { direction: ltr; } il valore start cor­ri­pon­de al valore left. Invece per una direzione da destra a sinistra { direction: rtl; } il valore start cor­ri­spon­de al valore right.
end Il testo viene po­si­zio­na­to sul lato in cui finisce. Per una direzione da sinistra a destra { direction: ltr; } il valore end cor­ri­pon­de al valore right. Invece per una direzione da destra a sinistra { direction: rtl; } il valore end cor­ri­spon­de al valore left.

Il valore start è con­si­de­ra­to valore standard.

Tutti i browser in uso po­si­zio­na­no l’ultima riga dell’al­li­nea­men­to giu­sti­fi­ca­to au­to­ma­ti­ca­men­te a sinistra. Se però questo risultato non è de­si­de­ra­to, può venire for­mat­ta­to se­pa­ra­ta­men­te grazie alla proprietà CSS text-align-last. I possibili valori cor­ri­spon­do­no a quelli della proprietà text-align.

hyphens

In aggiunta, il CSS3 offre la pos­si­bi­li­tà di dividere au­to­ma­ti­ca­men­te le sillabe con l’aiuto della proprietà hyphens. Il lin­guag­gio di stile mette a di­spo­si­zio­ne i seguenti valori per la proprietà in questione:

Valori per la proprietà hyphens De­scri­zio­ne
manual Divisone manuale delle sillabe: i trattini (&shy o in al­ter­na­ti­va &#173) vengono presi in con­si­de­ra­zio­ne durante la se­pa­ra­zio­ne delle sillabe (valore standard hyphens).
none Nessuna divisone delle sillabe: i trattini (&shy oder &#173) non vengono presi in con­si­de­ra­zio­ne durante la se­pa­ra­zio­ne delle sillabe. L’in­ter­ru­zio­ne di riga avviene esclu­si­va­men­te con uno spazio.
auto Divisione au­to­ma­ti­ca delle sillabe: la divisione delle parole avviene secondo le regole della lingua definita nell’attributo HTML lang.
inherit Le im­po­sta­zio­ni cor­ri­spon­do­no a quelle dell’elemento genitore.
Consiglio

At­tual­men­te la proprietà CSS hyphens non viene ancora sup­por­ta­ta da tutti i browser.

word-spacing

La proprietà CSS word-spacing regola la distanza tra le parole all’interno di un elemento testuale; in questo modo i gestori di pagine web hanno la pos­si­bi­li­tà di definire le distanze che in­ter­cor­ro­no tra le parole definendo in­di­ca­zio­ni delle di­men­sio­ni. A questo scopo sono a di­spo­si­zio­ne le unità di misura rap­pre­sen­ta­te nella proprietà font-size, esclusa l’in­di­ca­zio­ne della per­cen­tua­le. In aggiunta sono di­spo­ni­bi­li anche i valori normal (im­po­sta­zio­ne standard) e inherit (cor­ri­spon­den­te all’elemento genitore).

L’esempio di codice che segue definisce una distanza tra le parole di 2 em, che va ad ag­giun­ger­si alla distanza di default (word-spacing: 0; sarebbe infatti il valore standard).

.content {
    word-spacing: 2em;
}
<p class="content">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.</p>

letter-spacing

Se non è la distanza tra le parole a dover essere definita, bensì quella tra le lettere, allora entra in gioco la proprietà CSS letter-spacing. Anche in questo caso si può disporre dei valori normal e inherit, sempre esclu­den­do il valore per­cen­tua­le.

L’esempio di codice che segue mostra una parte di testo in cui una parola viene messa in evidenza da una distanza tra le lettere di 1 em. La classe special-content viene applicata nel codice sorgente HTML tramite un elemento span.

.special-content {
    letter-spacing: 1em;
}
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna <span class="special-content">aliquyam</span> erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.</p>

text-indent

Con la proprietà CSS text-indent avete la pos­si­bi­li­tà di indentare esclu­si­va­men­te la prima riga di un paragrafo, ovvero as­se­gnar­le un rientro sinistro. I valori possibili sono positivi e negativi, come anche in­di­ca­zio­ni di per­cen­tua­le in relazione alla larghezza del blocco di testo in questione.

L’esempio di codice seguente definisce un’in­den­ta­tu­ra del 5 % della prima riga:

.content {
    text-indent: 5%;
}
<p class="content"> Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem.</p>

Per definire un capoverso, viene applicato un valore negativo alla proprietà text-indent.

text-de­co­ra­tion

La proprietà CSS text-de­co­ra­tion vi offre la pos­si­bi­li­tà di decorare gli elementi di testo ad esempio con sot­to­li­nea­tu­re. I valori possibili sono:

Valori per la proprietà text-de­co­ra­tion De­scri­zio­ne
none Nessuna de­co­ra­zio­ne testuale
underline Viene sot­to­li­nea­ta ogni riga del paragrafo con­tras­se­gna­to
overline Sopra ad ogni riga del paragrafo con­tras­se­gna­to viene rap­pre­sen­ta­ta una linea
line-through Viene tracciata una linea sulla parte centrale del testo di ogni riga del paragrafo con­tras­se­gna­to, con effetto di testo barrato
inherit La de­co­ra­zio­ne testuale cor­ri­spon­de a quella dell’elemento genitore

L’esempio di codice che segue definisce le sot­to­li­nea­tu­re per gruppi di parole scelti all’interno del paragrafo. La classe content-underline viene assegnata nel codice sorgente HTML tramite l’elemento span.

.content-underline {
    text-decoration: underline;
}
<p>Nullam quis ante. Etiam sit amet orci eget eros <span class="content-underline">faucibus tincidunt</span>. Duis leo. Sed <span class="content-underline">fringilla mauris sit</span> amet nibh. Donec sodales sagittis magna.</p>

text-transform

La proprietà text-transform permette di attuare tra­sfor­ma­zio­ni usando il CSS. In questo modo è possibile rap­pre­sen­ta­re parti testuali in maiuscolo o minuscolo senza dover adattare anche la base testuale. La proprietà consente le seguenti tra­sfor­ma­zio­ni:

Valori per la proprietà text-transform De­scri­zio­ne
ca­pi­ta­li­ze La prima lettera di ogni parola viene rap­pre­sen­ta­ta in maiuscolo
uppercase L’intero paragrafo viene rap­pre­sen­ta­to in maiuscolo
lowercase L’intero paragrafo viene rap­pre­sen­ta­to in minuscolo
none Non avviene alcuna tra­sfor­ma­zio­ne
inherit La tra­sfor­ma­zio­ne è conforme allo stato dell’elemento genitore

Se le lettere iniziali di un paragrafo devono venire rap­pre­sen­ta­te in­di­pen­den­te­men­te dal testo di origine e con lettere maiuscole, allora la seguente for­mat­ta­zio­ne sarà l’ideale:

.content {
    text-transform: capitalize;
}
<p class="content">Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim.</p>

La grafica seguente confronta le dif­fe­ren­ti tra­sfor­ma­zio­ni CSS:

Colori font e sfondo

Nella scelta dei colori del font e dello sfondo i web designer di norma attingono ai codici colore in scrittura decimale o esa­de­ci­ma­le pre­ce­den­te­men­te spiegati. Pro­ta­go­ni­ste in questo caso saranno le proprietà color e back­ground-color. In più, con la proprietà back­ground-image è possibile integrare immagini di sfondo.

color

La proprietà CSS color è utile per la for­mat­ta­zio­ne del colore del font. I valori usuali sono in­di­ca­zio­ni cro­ma­ti­che in forma di valori RGB, codici HEX o indici HSL. Oltre a ciò, il valore trans­pa­rent riesce a rap­pre­sen­ta­re gli elementi tra­spa­ren­ti. Secondo la W3C-Re­com­men­da­tion la parola chiave trans­pa­rent cor­ri­spon­de al valore rgba(0,0,0,0) (nero tra­spa­ren­te). L’esempio di codice che segue mostra la for­mat­ta­zio­ne cromatica sulla base di un codice colore HEX:

.content {
    font-family: Arial;
    font-size: 5em;
    color: #d82451;
}
<p class="content">Esempio di testo</p>

back­ground-color

La proprietà CSS back­ground-color entra in azione quando a un elemento va at­tri­bui­to un colore di sfondo. I possibili valori cor­ri­spon­do­no agli stessi della proprietà color.

L’esempio di codice che segue mostra una for­mat­ta­zio­ne del colore di font e sfondo:

.content {
    font-family: Arial;
    font-size: 5em;
    color: #d82451;
    background-color: #24d8ab;
}
<p class="content">Esempio di testo</p>

La for­mat­ta­zio­ne indica al browser che tutti gli elementi di testo della classe content vanno rap­pre­sen­ta­ti in rosso magenta (#d82451) e il loro sfondo in turchese (#24d8ab).

back­ground-image

In al­ter­na­ti­va a un colore di sfondo si può decidere di caricare una grafica. Per fare questo i web designer sfruttano la proprietà back­ground-image, che nel valore contiene il percorso relativo alla grafica se­le­zio­na­ta:

.content {
    background-image: 
        url (path to image file);
}

Invece di back­ground-image o di back­ground-color è possibile anche adoperare il di­mi­nu­ti­vo back­ground.

Oltre a ciò il CSS3 offre la pos­si­bi­li­tà di definire come sfondo dei gradienti di colori. Le funzioni di­spo­ni­bi­li sono linear-gradient(), radial-gradient(), repeating-linear-gradient() e repeating-radial-gradient().

Gradienti di colore CSS De­scri­zio­ne
linear-gradient() La funzione linear-gradient() crea un gradiente di colori lineare.
radial-gradient() La funzione radial-gradient()crea un gradiente di colori radiale.
repeating-linear-gradient() La funzione repeating-linear-gradient()crea un gradiente di colori lineare che si ripete.
repeating-radial-gradient() La funzione repeating-radial-gradient()crea un gradiente di colori radiale che si ripete.

Ulteriori in­for­ma­zio­ni sui gradienti di colore sono di­spo­ni­bi­li sul sito web del W3C. Nella nostra in­tro­du­zio­ne al CSS ci limitiamo a uti­liz­za­re la funzione linear-gradient() come esempio. Se a un elemento va apposto uno sfondo con gradiente di colore lineare, allora si utilizza la funzione linear-gradient() come valore per la proprietà back­ground, la quale necessita di almeno due in­di­ca­zio­ni di colore. La modalità di scrittura con la quale vengono definiti i colori è a di­scre­zio­ne dei web designer, ma, per una questione di leg­gi­bi­li­tà, uti­liz­ze­re­mo parole chiave cro­ma­ti­che.

.content {
    width: 400px;  
    height: 400px;  
    background: linear-gradient( green, yellow );
}

Di con­se­guen­za il browser rap­pre­sen­ta il linear-gradient( green, yellow ) secondo le im­po­sta­zio­ni standard come gradiente verticale con quote uguali di verde e di giallo:

Even­tual­men­te i web designer hanno la pos­si­bi­li­tà di stabilire la direzione del gradiente e la sua posizione. La direzione viene definita o secondo la misura angolare oppure con l’in­di­ca­zio­ne di un lato (to top, to bottom, to left, to right) o di un angolo (to right top, to right bottom, to left bottom, to left top).

.rahmen {
    width: 400px;
    height: 400px;
    background: linear-gradient( to left top , green, yellow );
}

Un’in­di­ca­zio­ne di gradiente come misura angolare avviene partendo dal valore standard (to bottom) in senso orario. Possibili unità di misura sono deg (grado), grad (at­ten­zio­ne: sta per l’unità di misura dell’ampiezza angolare Gon, e non per il grado!) e rad (raggio), per cui vale:

to bottom = 180deg = 200grad = 3.1416rad

La posizione di un gradiente di colore viene stabilita dai web designer con l’aiuto di co­sid­det­te in­di­ca­zio­ni color stop. Di norma queste vengono poi indicate sull’asse del gradiente con un valore da 0 a 100 %. Le posizioni standard dei colori di un processo bi­cro­ma­ti­co sono 0 % e 100 %. Lo spazio che in­ter­cor­re tra i due valori viene calcolato come gradiente di colore e rap­pre­sen­ta­to in toni intermedi. I color stop rendono possibile che il processo di colore inizi o finisca a piacere in un punto preciso dell’asse del gradiente.

La grafica seguente mette a confronto due processi di colore con in­di­ca­zio­ni color stop dif­fe­ren­ti:

back­ground: linear-gradient( 90deg, red 0%, yellow 100% );

back­ground: linear-gradient( 90deg, red 25%, yellow 75% );

Il primo esempio mostra un gradiente di colore che va da 0 % a 100 %. Nel secondo esempio il processo inizia a 25 % e finisce a 75 %.

Nei gradienti di colore CSS è possibile combinare molti colori, volendo anche con gradi di tra­spa­ren­za.

Bordi

Il CSS vi permette anche di applicare un bordo agli elementi HTML. È par­ti­co­lar­men­te con­si­glia­to per elementi co­sid­det­ti “block level”, ovvero di blocco, come possono essere in­te­sta­zio­ni (da h1 a h6), paragrafi (p), con­te­ni­to­ri (div) o tabelle (table), che appaiono all’interno dell’elemento body. Senza che sia ne­ces­sa­ria un’ulteriore for­mat­ta­zio­ne, questi elementi di contenuto vanno a pro­lun­gar­si su tutta la larghezza possibile e si po­si­zio­na­no seguendo un ordine di priorità. Alcuni elementi di blocco come <p> o <h1> sono forniti di una distanza insita.

Gli elementi di blocco non vanno confusi con gli elementi inline come <b>, <i>, <a> o <span>. Questi elementi sono presenti esclu­si­va­men­te all’interno degli elementi di blocco. La larghezza di un elemento inline viene de­ter­mi­na­ta solamente dal suo contenuto.

Se un bordo deve in­cor­ni­cia­re un intero elemento di blocco o inline, allora ci si serve della proprietà borders. In al­ter­na­ti­va potete definire l’im­po­sta­zio­ne del bordo per ogni singolo lato dell’elemento.

Proprietà per le cornici De­scri­zio­ne
border Definisce le im­po­sta­zio­ni di cornice per tutti i lati dell’elemento.
border-top Definisce le im­po­sta­zio­ni del bordo in alto.
border-right Definisce le im­po­sta­zio­ni del bordo a destra.
border-bottom Definisce le im­po­sta­zio­ni del bordo in basso.
border-left Definisce le im­po­sta­zio­ni del bordo a sinistra.

Sia la proprietà border che le proprietà spe­ci­fi­che per i singolo bordi possono essere ul­te­rior­men­te spe­ci­fi­ca­te a seconda di tipologia di bordo (border-style), larghezza del bordo (border-width) e colore del bordo (border-color). I valori cor­ri­spet­ti­vi vengono separati da uno spazio e annotati secondo il seguente schema dopo la proprietà:

.content {
    border: style width color;
}
.content {
    border: solid 4px #ff0000;
}

Inoltre la proprietà border-radius offre la pos­si­bi­li­tà di ar­ro­ton­da­re gli spigoli del bordo.

Tipologia di bordo

Con la scelta della tipologia di bordo definite un bordo de­co­ra­ti­vo per l’elemento di blocco o inline in questione. Alcune tipologie sono ef­fet­ti­va­men­te visibili solo quando viene indicata una di­men­sio­ne del bordo adeguata.

Possibili valore per la tipologia di bordo De­scri­zio­ne
none Nessun bordo
hidden Non mostra il bordo e lo nasconde anche nelle celle adiacenti.
dotted Definisce un bordo puntato.
dashed Definisce un bordo a trattini.
solid Definisce un bordo con linea continua.
double Definisce un bordo doppio.
groove, ridge, inset, outset Con questi valori è possibile rea­liz­za­re diversi effetti 3D.

La seguente grafica mette a confronto le tipologie di bordo CSS:

L’in­di­ca­zio­ne della tipologia di bordo è ob­bli­ga­to­ria, quindi se non viene inserita il browser non la rap­pre­sen­te­rà.

Spessore del bordo

Lo spessore del bordo definisce lo spessore della linea che in­ter­cor­re lungo il bordo.

Possibili valori per lo spessore del bordo De­scri­zio­ne
In­di­ca­zio­ne della lunghezza L’in­di­ca­zio­ne dello spessore del bordo avviene con l’aiuto delle unità di misura presenti in font-size. Lo spessore del bordo non può venire indicato in valori per­cen­tua­li.
thin Leggero
medium Medio/forte
thick Forte

Colore del bordo

Le im­po­sta­zio­ni di colore per la proprietà border-color cor­ri­spon­do­no a quelle delle proprietà color e back­ground-color.

Possibili valori per il colore del bordo De­scri­zio­ne
In­di­ca­zio­ni di colore In­di­ca­zio­ni di colore per il bordo possono essere inserite sia sotto forma di parole chiave (ad esempio red), di valori HEXcome anche RGB o HSL.
trans­pa­rent Definisce il bordo ren­den­do­lo tra­spa­ren­te.

Il seguente esempio di codice combina la proprietà border con le for­mat­ta­zio­ni dei colori del font e dello sfondo. Il blocco di regole viene definito all’interno del file CSS per la classe bordo:

.bordo {
    font-family: Arial;
    font-size: 5em;
    color: #d82451;
    background-color: #24d8ab;
    border: 10px ridge #d82451;
}

Per applicare la for­mat­ta­zio­ne la classe bordo viene trasmessa nel codice sorgente HTML grazie all’attributo class sull’elemento <p>:

<p class="bordo">Esempio di testo</p>

Il browser ap­pli­che­rà una for­mat­ta­zio­ne simile a quella che segue:

border-radius

La proprietà border-radius permette di ar­ro­ton­da­re gli spigoli di un bordo sia a cerchio che a ellisse. Un qualsiasi sfondo verrà quindi tagliato lungo la curva definita; ciò funziona anche se l’elemento non ha un bordo. Infine, con border-radius è possibile anche inserire fa­cil­men­te forme geo­me­tri­che.

I valori possibili per la proprietà border hanno fino a quattro in­di­ca­zio­ni di di­men­sio­ne che stanno ognuna per un angolo del bordo. L’as­se­gna­zio­ne può avvenire a scelta tramite uno, due, tre, quattro valori.

Valori per la proprietà border-radius De­scri­zio­ne
Un valore definito Vale per tutti e quattro gli angoli.
Due valori definiti Il primo valore definisce gli angoli in alto a sinistra e in basso a destra. Il secondo valore definisce gli angoli in alto a destra e in basso a sinistra.
Tre valori definiti Il primo valore definisce l’angolo in alto a sinistra. Il secondo valore definisce gli angoli in alto a destra e in basso a sinistra. Il terzo valore definisce gli angoli in basso a destra.
Quattro valori definiti Ogni angolo viene definito da un valore proprio. Vale la suc­ces­sio­ne in senso orario: in alto a sinistra, in alto a destra, in basso a destra, in basso a sinistra.

I singoli valori per il raggio del bordo sono separati da spazi e annotati dopo la proprietà border-radius. In questo modo la di­chia­ra­zio­ne risulta nel seguente schema (i valori numerici sono esempi):

border-radius: 4em 2em 3em 1em;

La proprietà border-radius può essere definita all’interno della stessa regola della proprietà border o, in al­ter­na­ti­va, in classi separate.

Il blocco di regole seguente definisce un bordo con un border-radius di 2 em:

.bordo {
    height: 100px;
    width: 600px;
    border: solid 10px #d82451;
    border-radius: 2em;
}

In al­ter­na­ti­va è possibile definire dif­fe­ren­ti valori per ogni singolo angolo:

.bordo {
    height: 100px;
    width: 600px;
    border: solid 10px #d82451;
    border-radius: 2em 1em 3em 4em;
}

In entrambi i casi gli angoli del bordo vengono ar­ro­ton­da­ti. Può però venire applicato un ar­ro­ton­da­men­to a ellisse, per cui per ogni angolo vengono richiesti due valori. La di­chia­ra­zio­ne di un bordo ar­ro­ton­da­to el­lit­ti­ca­men­te può avere fino a otto valori:

border-radius: 1em 4em 1em 4em / 4em 1em 4em 1em;

I valori pre­ce­den­ti alla barra (/) de­fi­ni­sco­no il raggio sul semiasse oriz­zon­ta­le dell’ellisse, i valori dopo la barra, invece, il raggio sul semiasse verticale.

.bordo {
    height: 100px;
    width: 600px;
    border: solid 10px #d82451;
    border-radius: 1em 4em / 4em 1em;
}

Un eventuale sfondo viene tagliato au­to­ma­ti­ca­men­te lungo la curva.

.bordo {
    height: 100px;
    width: 600px;
    border: solid 10px #d82451;
    border-radius: 2em; 
    background-color: #24d8ab;
}

Questo vale sia per i colori di sfondo sia per le immagini, tuttavia non per gli elementi di testo.

Il box model CSS

Per dare una di­spo­si­zio­ne agli elementi di testo, alle grafiche e agli altri com­po­nen­ti del design del sito web, nel CSS entra in azione una strategia che si basa sulla for­mat­ta­zio­ne di quelle superfici ret­tan­go­la­ri che vengono create tramite i vari elementi di blocco o elementi inline. In questo caso si parla di box model del CSS.

Ogni elemento HTML viene in­ter­pre­ta­to e rap­pre­sen­ta­to sul front end del sito web come su­per­fi­cie ret­tan­go­la­re: si tratta del co­sid­det­to box. Le ca­rat­te­ri­sti­che di tali con­te­ni­to­ri, i cui flussi ed esten­sio­ni sta­bi­li­sco­no l’es­sen­zia­le del design di un sito web: ogni sito, quindi, può essere con­si­de­ra­to un ar­ran­gia­men­to di diversi box.

Il po­si­zio­na­men­to dei singoli con­te­ni­to­ri viene definito dal co­sid­det­to elemento di flusso (“documenti flow”); questo segue uno schema standard: a meno che non vi sia una precisa istru­zio­ne di for­mat­ta­zio­ne, allora ogni elemento viene po­si­zio­na­to il più possibile a sinistra, iniziando dal primo elemento che si trova all’interno del codice sorgente HTML. Tutti gli elementi che seguono vengono disposti alla sua destra. Se non dovesse esserci più spazio, allora il suc­ces­si­vo con­te­ni­to­re scivolerà su una nuova riga.

Il CSS dif­fe­ren­zia qui in due diversi tipi di con­te­ni­to­ri:

  • Box di blocco: i con­te­ni­to­ri di blocco nascono da elementi di blocco, come ad esempio p o div. Il browser li rap­pre­sen­ta così che la loro larghezza cor­ri­spon­da alla larghezza totale dell’elemento genitore. Creano quindi un paragrafo. Gli elementi suc­ces­si­vi passano au­to­ma­ti­ca­men­te alla riga suc­ces­si­va. L’altezza di un box di blocco si orienta a seconda del contenuto dell’elemento o di eventuali for­mat­ta­zio­ni. I box di blocco possono contenere sia altri elementi di blocco a livello sia elementi inline.
  • Box inline: i box inline vengono creati da elementi inline, come ad esempio b, i o span, all’interno di un box di blocco e non creano un paragrafo. La larghezza e l’altezza di un elemento inline si orienta esclu­si­va­men­te secondo il suo contenuto.

Nelle seguenti grafiche è possibile vedere il flusso di elementi di box di blocco e di box inline:

Se non è presente un’altra for­mat­ta­zio­ne, allora i box di blocco vengono rap­pre­sen­ta­ti in­di­pen­den­te­men­te dal loro contenuto con una larghezza massima. Ogni box comincia con un nuovo paragrafo e si espande per la larghezza totale dell’elemento genitore. Nell’esempio questo viene ca­rat­te­riz­za­to da un bordo grigio. Va con­si­de­ra­to che alcuni elementi di blocco come <p> vengono resi sul browser con un margine esterno au­to­ma­ti­co (default margin).

I box inline che si trovano all’interno di un box di blocco non generano un nuovo paragrafo ma vengono invece rap­pre­sen­ta­ti “inline” nel flusso di testo.

L’esempio mostra un box inline con un bordo verde attorno alle parole “con­sec­te­tuer adi­pi­scing elit”.

Per via delle funzioni che generano un paragrafo, il layout di un sito web risulta in­nan­zi­tut­to dalla for­mat­ta­zio­ne dei box di blocco. Per questo non si deve trattare ne­ces­sa­ria­men­te di elementi forniti di contenuto, come possono essere le in­te­sta­zio­ni o i paragrafi di testo. Spesso entrano in gioco anche elementi HTML privi di una funzione semantica come <div>, per rag­grup­pa­re altri elementi e quindi creare uno spazio che possa essere for­mat­ta­to tramite il CSS.

La for­mat­ta­zio­ne avviene con l’aiuto di box model CSS, a seguito del quale ogni elemento HTML può essere descritto con quattro box in­sca­to­la­ti, i quali possono essere adattati alle aspet­ta­ti­ve di im­pa­gi­na­zio­ne de­si­de­ra­te in­di­pen­den­te­men­te l’uno dall’altro. Si dif­fe­ren­zia tra content-box, padding-box, border-box e margin-box.

Livelli dei box model De­scri­zio­ne
Area del contenuto (content box) Il content box rap­pre­sen­ta una su­per­fi­cie la cui esten­sio­ne viene definita dalla di­men­sio­ne del testo o dalla misura di una grafica. Oltre a ciò, negli elementi di blocco l’altezza e la larghezza possono essere definiti in­di­vi­dual­men­te dalle proprietà height e width. Per quanto riguarda gli elementi inline questo tipo di for­mat­ta­zio­ne non è di­spo­ni­bi­le.
Padding (padding box) Il padding box (dall’inglese padding = im­bot­ti­tu­ra) definisce la distanza tra content box e border box.
Bordo (border box) Il border box definisce il bordo.
Margine (margin box) Il margin box definisce la distanza tra l’elemento attuale e il suo elemento genitore o gli elementi adiacenti. Al contrario di padding e border, la proprietà margin può pre­sen­ta­re anche valori negativi.

Se tutti i quattro angoli di un box devono essere for­mat­ta­ti con­tem­po­ra­nea­men­te, allora vengono attivate le proprietà padding, border e margin. Il margine interno, il margine esterno, e anche il bordo sono for­mat­ta­bi­li in­di­vi­dual­men­te per ogni lato del box CSS. Le ri­spet­ti­ve proprietà sono rin­trac­cia­bi­li nella seguente tabella:

  Margine interno Bordo Margine esterno
In alto padding-top border-top margin-top
In basso padding-bottom border-bottom margin-bottom
A sinistra padding-left border-left margin-left
A destra padding-right border-right margin-right

I possibili valori per le proprietà di cui sopra sono in­di­ca­zio­ni di di­men­sio­ne come inherit, il quale cor­ri­spon­de all’elemento genitore. I margini esterni sono inoltre de­fi­ni­bi­li grazie al valore auto.

La grafica seguente illustra in maniera sche­ma­ti­ca la struttura di un box CSS:

Il CSS box model in azione

Per capire come funziona il CSS box model basta ag­giun­ge­re a un content box i vari livelli passo per passo. Il punto di partenza è una breve porzione di testo la quale, ad esempio, va for­mat­ta­ta tramite il selettore di classe content:

<p class="content">At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctusest Lorem ipsum dolor sit amet.</p>

Il blocco di regole seguente decide le di­men­sio­ni per il content box: 150 px x 150 px. Ulteriori for­mat­ta­zio­ni de­fi­ni­sco­no il font di colore nero (color: #000000;) su sfondo bianco (back­ground-color: #ffffff;). In più, l’al­li­nea­men­to del testo va giu­sti­fi­ca­to (text-align: justify;):

.content {
     height: 150px;
     width: 150px;
     color: #000000;
     text-align: justify;
    background-color: #ffffff;
}

Se ap­pli­chia­mo le in­di­ca­zio­ni di im­pa­gi­na­zio­ne alla porzione di testo, sul browser avremo questa vi­sua­liz­za­zio­ne:

La porzione di testo appare in con­for­mi­tà del flusso di elementi nell’angolo in alto a sinistra del suo elemento genitore, che qui è visibile come un’area in grigio. Il testo e lo sfondo in bianco co­min­cia­no senza margine nella parte sinistra della finestra del browser e coprono l’intera su­per­fi­cie di­spo­ni­bi­le (150 px x 150 px). Lo sfondo bianco si chiude di­ret­ta­men­te con il corpo del testo.

Una simile im­pa­gi­na­zio­ne è brutta a vedersi e ap­pe­san­ti­sce la lettura. La proprietà padding permette quindi ai web designer di definire un margine interno per di­stan­zia­re gli elementi di testo da elementi di im­pa­gi­na­zio­ne adiacenti.

.content {
     height: 150px;
     width: 150px;
    color: #000000;
    background-color: #ffffff;
    text-align: justify;
    padding: 10px; 
}

Aggiunta al blocco di regole, la di­chia­ra­zio­ne padding: 20px; porta alla seguente va­ria­zio­ne di vi­sua­liz­za­zio­ne sul front end:

Il browser aggiunge a tutti e quattro i lati del content box un margine interno di 20 px. Ora l’elemento misura quindi 190 px x 190 px. Come ulteriore elemento di design è possibile uti­liz­za­re un bordo.

.content {
     height: 150px;
     width: 150px;
     color: #000000;
     background-color: #ffffff;
     text-align: justify;
     padding: 10px;
    border: 5px solid #d82451;
}

Nell’esempio di codice vengono assegnati i valori 5px solid #d82451 alla proprietà border. Nella vi­sua­liz­za­zio­ne da browser, questa for­mat­ta­zio­ne crea un bordo di colore bordeaux con linea continua che circonda il padding box.

Tramite il valore del padding, il bordo si distanzia dal contenuto.

Conforme al naturale flusso di elementi, il box for­mat­ta­to in questa maniera si posiziona senza distanza all’angolo in alto a sinistra dell’elemento genitore. La proprietà margin fa in modo che il design di un sito web venga reso più piacevole alla vista con l’aiuto di un margine esterno.

A questo scopo viene aggiunta la cor­ri­spet­ti­va di­chia­ra­zio­ne alla regola già esistente:

.content {
    height: 150px;
    width: 150px;
    color: #000000;
    background-color: #ffffff;
    text-align: justify;
    padding: 20px;
    border: 5px solid #d82451;
    margin: 40px;
}

Sul browser un simile margine esterno di 40 px viene reso come segue:

Ora il box di blocco <p> è libero all’interno dell’elemento genitore.

In al­ter­na­ti­va alle in­di­ca­zio­ni di misura, alla proprietà margin può venire applicato il valore auto. In questo caso il box si orienta au­to­ma­ti­ca­men­te in oriz­zon­ta­le al centro dell’elemento genitore. Il valore auto non prevede l’al­li­nea­men­to in verticale.

.content {
    width: 150px;
    color: #000000;
    background-color: #ffffff;
    text-align: justify;
    padding: 20px;
    border: 5px solid #d82451;
    margin: auto; 
}

Calcolare altezza e larghezza di un box CCS

Si può de­ter­mi­na­re lo spazio ne­ces­sa­rio a un box CSS sommando i valori di tutti i com­po­nen­ti rilevanti di un box. Vale il seguente tipo di calcolo:

L’elemento misurerà quindi 200 px x 200 px, ma lo spazio ne­ces­sa­rio è 280 px x 280 px.

Float

Se per quanto riguarda il box da for­mat­ta­re si tratta di un box di blocco, allora i box che seguono finiranno au­to­ma­ti­ca­men­te nella riga suc­ces­si­va, con­for­me­men­te al flusso di elementi.

Nella pratica l’in­ter­ru­zio­ne di riga au­to­ma­ti­ca in seguito a un blocco di box non è sempre de­si­de­ra­ta e può essere perciò impedita tramite la proprietà float: questa, infatti, libera i box di blocco dal normale flusso e li posiziona in un punto specifico. Secondo le spe­ci­fi­che del CSS, float accetta quattro valori:

Valori per la proprietà float De­scri­zio­ne
none Non avviene alcuno spo­sta­men­to dell’elemento. Il valore float: none; è standard di un box CSS.
left Il box di blocco si allinea nell’angolo a sinistra dell’elemento genitore.
right Il box di blocco si allinea nell’angolo a destra dell’elemento genitore.
inherit Il valore float cor­ri­spon­de a quello dell’elemento genitore.

Il box con for­mat­ta­zio­ne float si chiamerà Float.

Se diversi Float si in­con­tra­no verranno allineati nell’ordine in cui appaiono nel codice sorgente HTML, da sinistra a destra (float: left) o da destra a sinistra (float: right).

Il seguente esempio di codice mostra una regola .content con­te­nen­te la proprietà float:

.content {
    height: 150px;
    width: 150px;
    color: #000000;
    background-color: #ffffff;
    text-align: justify;
    padding: 20px;
    border: 5px solid #d82451;
    margin: 40px; 
    float: left; 
}

Se viene applicato a due elementi HTML, gli stessi vengono estratti dal flusso degli elementi e allineati uno a fianco dell’altro:

<p class="content">At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctusest Lorem ipsum dolor sit amet.</p>
<p class="content">Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus.</p>

La distanza che in­ter­cor­re tra i due elementi è data dal fatto che viene aggiunto il margine esterno di ogni box, per ognuno margin 40px. Senza Float, i margini esterni degli elementi vicini non ri­sul­te­reb­be­ro.

Se la larghezza totale dei Float che si sus­se­guo­no è maggiore della larghezza dell’elemento genitore, allora tutti gli elementi che vengono inseriti dopo finiscono sulla riga seguente.

Questa regola non vale per il primo Float: se l’elemento è, infatti, più grande del suo elemento genitore, fuoriesce da esso.

In al­ter­na­ti­va alla proprietà float è possibile estrarre i box CSS dal flusso e im­pa­gi­nar­li a pia­ci­men­to uti­liz­zan­do delle in­di­ca­zio­ni di po­si­zio­na­men­to.

Po­si­zio­na­men­to

La proprietà CSS position serve a rimuovere un box dal flusso degli elementi e a po­si­zio­nar­la in un punto del sito web a scelta. Altri box, che siano interni al flusso o che siano anch’essi po­si­zio­na­ti, non hanno alcuna influenza sulla posizione di un box che viene for­mat­ta­to con questa modalità.

La proprietà position possiede cinque possibili valori: absolute, fixed, relative, static e sticky, e può essere spe­ci­fi­ca­ta ul­te­rior­men­te dalle proprietà left, right, top e bottom come anche usando i suoi valori come in­di­ca­zio­ni di misura. Di norma bastano due valori per de­ter­mi­na­re la posizione, come ad esempio top e left.

Valori della proprietà position De­scri­zio­ne
absolute Il box viene liberato dal flusso degli elementi e po­si­zio­na­to nel punto che è stato definito dalle seguenti proprietà: top, bottom, left e right. Le in­di­ca­zio­ni sono in relazione al primo elemento pre­ce­den­te più alto, anch’esso spe­ci­fi­ca­to dalla proprietà position. Se un tale elemento non è presente, allora viene preso come punto di ri­fe­ri­men­to l’elemento radice <html>. I box con la di­chia­ra­zio­ne position: absolute non hanno alcuna influenza sulla posizione di altri elementi e si so­vrap­pon­go­no ad essi o vengono so­vrap­po­sti da essi.
relative Se entra in azione la di­chia­ra­zio­ne position: relative, il box rimane all’interno del flusso naturale ma può essere spostato re­la­ti­va­men­te alle in­di­ca­zio­ni di po­si­zio­na­men­to top, bottom, left e right. Ciascun box si orienta au­to­no­ma­men­te. Gli elementi pre­ce­den­ti e quelli suc­ces­si­vi del flusso si com­por­ta­no come se il box non fosse stato spostato.
fixed Se un box è stato po­si­zio­na­to con position: fixed, la posizione viene definita in relazione al campo visivo. Un box definito in questa maniera appare sempre nello stesso punto sullo schermo, anche se un vi­si­ta­to­re scorre in basso sulla pagina web. In questo modo gli elementi di na­vi­ga­zio­ne come menu e pulsanti (ad esempio “indietro”) possono essere fissati nel campo visivo dell’utente.
static Il box adotta la sua posizione naturale nel flusso di testo. Se si sceglie la di­chia­ra­zio­ne position: static, le in­di­ca­zio­ni di posizione top, bottom, left e right non valgono. Il valore static è standard per la proprietà position.
sticky La posizione viene calcolata in con­for­mi­tà del normale flusso di elementi e si comporta come un elemento con la di­chia­ra­zio­ne position: relative finché si trova all’interno del campo visivo. Se si presenta il rischio che possa scom­pa­ri­re da esso, si scioglie dal flusso di elementi e, durante lo scor­ri­men­to, rimane fisso in una posizione decisa dal web designer. Il valore sticky può quindi essere con­si­de­ra­to come una com­bi­na­zio­ne tra relative e fixed.

Po­si­zio­na­men­to assoluto

Le seguenti regole con­ten­go­no in­di­ca­zio­ni assolute di po­si­zio­na­men­to dei box CSS rosso, blu e verde all’interno dell’elemento genitore back­ground.

.background {
    height: 500px; 
    width: 500px;
    border: solid grey 
}
.rosso {
    height: 150px;
    width: 150px;
    background-color: rgba(255,0,0,0.5);
    position: absolute;
    top: 100px;
    left: 100px;
}
.blu {
    height: 150px;
    width: 150px;
    background-color: rgba(0,0,255,0.5);
    position: absolute;
    top: 150px;
    left: 150px;
}
.verde {
    height: 150px;
    width: 150px;
    background-color: rgba(0,255,0,0.5);
    position: absolute;
    top: 200px;
    left: 200px;
}

I content box rosso, blu e verde sono stati for­mat­ta­ti come superfici se­mi­tra­spa­ren­ti con le misure 150 px x 150 px. Il content box back­ground con le misure 500 px x 500 px è in­cor­ni­cia­to da un bordo grigio.

Le in­di­ca­zio­ni di im­pa­gi­na­zio­ne sono integrate tramite classi nel codice HTML.

<div class="background">
    <p class="rosso"> </p>
    <p class="blu"> </p>
    <p class="verde"> </p>
</div>

La vi­sua­liz­za­zio­ne su browser mostra i dif­fe­ren­ti po­si­zio­na­men­ti dei box <p> all’interno dell’elemento <div>. Gli elementi vengono spostati di 50 px in basso a destra. L’ap­pli­ca­zio­ne del colore tra­spa­ren­te evidenzia la pos­si­bi­li­tà di una so­vrap­po­si­zio­ne usando il po­si­zio­na­men­to assoluto.

Po­si­zio­na­men­to relativo

Nel po­si­zio­na­men­to relativo la gestione dei singoli box avviene in­di­pen­den­te­men­te dal normale flusso di elementi. Gli elementi di blocco senza la for­mat­ta­zio­ne float vengono rap­pre­sen­ta­ti uno sotto l’altro.

Il margine esterno al di sopra degli elementi cor­ri­spon­de al valore standard per gli elementi <p>.

Per impostare un box a pre­scin­de­re dal flusso di elementi, viene uti­liz­za­ta la regola estesa con la di­chia­ra­zio­ne position: relative e in­di­ca­zio­ni di posizione.

Il seguente blocco di codice lo dimostra su esempio del box blu:

.content2 {
    height: 150px;
    width: 150px;
    background-color: rgba(0,0,255,0.5);
    position: relative;
    left: 50px;
}

L’in­di­ca­zio­ne d’im­pa­gi­na­zio­ne position: relative con in­di­ca­zio­ni di posizione left: 50px porta a uno spo­sta­men­to di 50 px verso sinistra del box blu nella vi­sua­liz­za­zio­ne sul browser.

Il po­si­zio­na­men­to relativo può venire applicato anche a elementi con il float:

.content2 {
     height: 150px;
     width: 150px;
     background-color: rgba(0,0,255,0.5);
     position: relative;
    top: 50px;
    float: left;
}

Box CSS fissi

L’im­po­sta­zio­ne di box fissi avviene, come già per il po­si­zio­na­men­to assoluto, a pre­scin­de­re dal flusso di elementi. Tutte le in­di­ca­zio­ni di po­si­zio­na­men­to sono in relazione al campo visivo dell’utente finale.

La regola suc­ces­si­va indica al browser di fissare un piccolo box rosso nell’angolo in basso a sinistra del campo visivo.

.content1 {
    height: 50px;
    width: 150px;
    background-color: rgba(255,0,0,0.5);
    position: fixed;
    bottom: 10px;
    left: 15px;
}

Il box rosso rimane in ogni caso fisso nel punto della finestra del browser che è stato definito (bottom: 10px; left: 15px;), anche se altri elementi come il box di testo blu permette lo scor­ri­men­to verso il basso sulla pagina.

Da prin­ci­pian­te a pro­fes­sio­ni­sta

Lo scopo del nostro tutorial era di il­lu­stra­re ai novizi le ampie pos­si­bi­li­tà che può offrire il CSS. Ma un breve corso ac­ce­le­ra­to non basta certo a de­scri­ve­re tutte le funzioni del lin­guag­gio di stile in maniera det­ta­glia­ta. Se il vostro interesse dovesse andare oltre alle for­mat­ta­zio­ni che abbiamo descritto nell’articolo, per pro­se­gui­re il vostro ap­pren­di­men­to vi con­si­glia­mo una guida di base ac­com­pa­gna­ta dal tutorial del Mozilla Developer Network. Infine abbiamo raccolto una selezione di trucchi per CSS per utenti esperti nell’articolo di ap­pro­fon­di­men­to sul tema.

Vai al menu prin­ci­pa­le