Css in sintesi

Gli elementi blocco sono box che possono contenere altri elementi, sia di tipo blocco che di tipo inline. Quando un elemento blocco è inserito nel documento viene automaticamente creata una nuova riga nel flusso del documento

<h1> e <p> sono elementi blocco

Gli elementi inline non possono contenere elementi blocco, ma solo altri elementi inline

Una terza categoria è quella degli elementi lista. Comprende in pratica solo l'elemento li (list item).

Elementi rimpiazzati (replaced elements)

elementi rimpiazzati:uno user agent (il "motore" e la mente di un browser) conosce solo le dimensioni intrinseche. Ovvero, quelli in cui altezza e larghezza sono definite dall'elemento stesso e non da ciò che lo circonda.

<img>, <input>, <textarea>, <select> e <object>

elementi non rimpiazzati

<html>
<head>
<title>Inserire i fogli di stile in un documento</title>
<linkrel="stylesheet" type="text/css" href="stile.css">
</head>
<body>...

CSS esterni

Per caricare un foglio esterno in un documento esistono due possibilità. La prima e più compatibile è quella che fa uso dell'elemento <LINK>. La dichiarazione va sempre collocata all'interno della sezione <HEAD> del documento (X)HTML

L'elemento <LINK> presenta una serie di attributi di cui è importante spiegare significato e funzione:

1. rel: descrive il tipo di relazione tra il documento e il file collegato. E' obbligatorio. Per i CSS due sono i valori possibili: stylesheet e alternate stylesheet. Approfondimenti nella lezione 5, "Fogli di stile alternativi".

2. href: serve a definire l'URL assoluto o relativo del foglio di stile. E' obbligatorio.

3. type: identifica il tipo di dati da collegare. Per i CSS l'unico valore possibile è text/css. L'attributo è obbligatorio.

4. media: con questo attributo si identifica il supporto (schermo, stampa, etc) cui applicare un particolare foglio di stile. Attributo opzionale. L'argomento sarà approfondito nella prossima lezione.

<style>
@import url(stile.css);
</style>

@importall'interno dell'elemento <STYLE>:

Questo sistema è uno dei modi più sicuri

CSS interni Fogli incorporati

<head>
<title>Inserire i fogli di stile in un documento</title>
<style type="text/css">
{
background: #FFFFCC;
}
</style>
</head>
<body>...

I fogli incorporati sono quelli inseriti direttamente nel documento (X)HTML tramite l'elemento <STYLE>. Anche in questo caso la dichiarazione va posta all'interno della sezione <HEAD>

il codice inizia con l'apertura del tag <STYLE>. Esso può avere due attributi:

1. type (obbligatorio)

2. media (opzionale)

Fogli in linea

<link rel="stylesheet" type="text/css" href="/stile.css">
<style type="text/css">
@import url(nuovo_stile.css);
</style>

le regole dello stile colleagto con @import vanno a sovrascrivere quelle ereditate dall'elemento <LINK>

uso dell'attributo styleapplicabilE a tutti gli elementiLa dichiarazione avviene a livello dei singoli tag

<elemento style="regole_di_stile">              <h1 style="color: red; background: black;">...</h1>

4 L'attributo media

L'attributo media può accompagnare sia l'elemento <LINK> che l'elemento <STYLE>.

<link rel="stylesheet" type="text/css" media="print" href="/print.css" />
<style type="text/css" media="screen">...</style>

valori possibili per l'attributo:

·        all. Il CSS si applica a tutti i dispositivi di visualizzazione.

·        screen. Valore usato per la resa sui normali browser web.

·        print. Il CSS viene applicato in fase di stampa del documento.

·        projection. Usato per presentazioni e proiezioni a tutto schermo.

·        aural. Da usare per dispositivi come browser a sintesi vocale.

·        braille. Il CSS viene usato per supporti basati sull'uso del braille.

·        embossed. Per stampanti braille.

·        handheld. Palmari e simili.

·        tty. Dispositivi a carattere fisso.

·        tv.Web-tv.

Il valore di default è all

Stylesheet: identifica il CSS di default

alternate stylesheet: identifica un CSS come alternativo rispetto a quello standard

Sta all'autore implementare un sistema che consenta all'utente di scegliere dinamicamente lo stile alternativo sostituendolo al primo

 

7 Struttura di una regola

·                   il selettoreserve a definire la parte del documento cui verrà applicata la regola

·                   il blocco delle dichiarazioniAl suo interno possono trovare posto più dichiarazioni. Esse sono sempre composte da una coppia

·        proprietà

·        valore

Proprietà e valore devono essere separati dai due punti.

per ogni dichiarazione non è possibile indicare più di una proprietà, mentre è spesso possibile specificare più valori

Per inserire parti di commento

·        /* come segno di apertura

·        */ come segno di chiusura

Sintassi abbreviata

background  | border  | border-top | border-right | border-bottom

border-left | cue     | font       | list-style   | margin

outline     | padding | pause

Es.:

·                   margin-top

·                   margin-right

·                   margin-bottom

·                   margin-left

div { margin-top: 10px;

      margin-right: 5px;

      margin-bottom: 10px;

      margin-left: 5px;

}

Ogni elemento presenta sui suoi quattro lati un certo margine rispetto a quelli adiacenti

Sintassi abbreviata:

div {margin: 10px 5px 10px 5px;}

8 I selettori

una regola CSS viene applicata ad un selettore

Selettore di elementi (type selector)

È costituito da uno qualunque degli elementi di (X)HTML

h1 {color: #000000;}
p {background: white; font: 12px Verdana, arial, sans-serif;}
table {width: 200px;}

   

Raggruppare

È possibile nei CSS raggruppare diversi elementi al fine di semplificare il codice. Gli elementi raggruppati vanno separati da una virgola

h1, h2, h3 {background: white;}

   

Selettore universale (universal selector)

serve a selezionare tutti gli elementi di un documento. Si esprime con il carattere * (asterisco).

* { color: black; }

   

Selettore del discendente (descendant selector)

Serve a selezionare tutti gli elementi che nella struttura ad albero di un documento siano discendenti di un altro elemento specificato nella regola

Il selettore va letto per chiarezza da destra a sinistra

div p {color: black;}   

verranno selezionati tutti i paragrafi (<p>) discendenti di elementi <div>

 

p strong {color: red;}  

tutti gli elementi <strong> che si trovino all'interno di un paragrafo

Selettore del figlio (child selector) ) (no explorer)

Seleziona un elemento che sia figlio diretto di un altro

body > p {color: black;} 

Per il child selector i due elementi devono essere separati dall'operatore "maggiore di" >

Selettore dell'elemento adiacente (adjacent-sibling selector) (no explorer)

Seleziona gli elementi che nel codice del documento siano immediatamente vicini (adiacenti) ad un altro.

Il segno di assegnazione della relazione è per questo selettore+

<h1>Titolo</h1>
<p>Primo paragrafo</p>
<p>Secondo paragrafo</p>

h1 + p {color: red;}

solo il primo dei due paragrafi avrà il testo rosso

   

Selettore dell'attributo (attribute selector)

Seleziona gli elementi in base ai loro attributi e/o al valore di tali attributi

Attributo semplice

elemento [ attributo ]

input [ id ] {background: red;}

applicherà uno sfondo rosso a tutti gli elementi input per cui sia stato impostato un attributo id, a prescindere dal valore ad esso assegnato

 

Attributo con valore

elemento [ attributo = "valore" ]

Seleziona gli elementi che abbiano come valore dell'attributo la stringa definita nella regola

input [ id = "text" ] { backgorund: red; }

applicherà un sfondo rosso a tutti gli elementi input che abbiano come valore dell'attributo id "text". Come si vede una sintassi più restrittiva rispetto alla prima

 

Attributo il cui valore contiene una stringa

elemento [ attributo t= "valore" ]

In questo caso vengono selezionati tutti gli elementi in cui il valore dell'attributo dichiarato contenga la stringa definita nella regola

img [ alt t= "foto" ] {margin: 10px;} La regola applicherà un margine di 10px a tutte le immagini in cui l'attributo alt contiene "foto"

 

Attributo il cui valore inizia con una stringa

elemento [ attributo |= "valore" ]

Seleziona gli elementi in cui il valore dell'attributo dichiarato inizia con la stringa definita nella regola

9 Id e classi: due selettori speciali

esistono due attributi fondamentali applicabili a tutti gli elementi: sono class e id

il valore dell'attributo classo iddeve trovare una corrispondenza in un foglio di stile

In un documento (X)HTML l'attributo id è usato per identificare in modo univoco un elemento (se assegno ad un paragrafo l'id "testorosso", non potrò più usare questo valore nel resto della pagina - l'ID #testorosso dichiarato nel CSS trasformerà solo quel paragrafo specifico)

Una singola classe, al contrario, può essere assegnata a più elementi, anche dello stesso tipo

una classe consente di superare le limitazioni intrinseche nell'uso di un selettore di elementi

Se uno stile va applicato ad un solo specifico elemento usate un ID.

Se invece prevedete di usarlo più volte ovvero su più elementi definite nel CSS una classe.

Classe

.nome_della_classe                            Per definire una classe si usa far precedere il nome da un semplice punto

<elemento>.nome_della_classe              Esso è più restrittivo rispetto alla sintassi generica

Es.: p.testorosso {color: red;}              lo stile verrà applicato solo ai paragrafi che presentino l'attributo class="testorosso"

classi multiple

p.testorosso.grassetto {color:red; font-weight:bold;}              applicherà gli stili impostati a tutti gli elementi in cui siano presenti (in qualunque ordine) i nomi delle classi definiti nel selettore

ID

Basta far precedere il nome dal simbolo di cancelletto #              #nome_id              p#nome_id

#titolo {color: blue;}

<h1 id="titolo">...</h1>

10 Le pseudo-classi

Una pseudo-classe non definisce un elemento ma un particolare stato di quest'ultimo

le pseuso-classi non possono essere mai dichiarate da sole, ma per la loro stessa natura devono sempre appoggiarsi ad un selettore

a:link {color: blue;}              i collegamenti ipertestuali (<a>) che non siano stati visitati (:link) avranno il colore blue

La pseudo-classe (tutte iniziano con i due punti) segue senza spazi l'elemento. Subito dopo si crea nel modo consueto il blocco delle dichiarazioni

Una pseudo-classe può anche essere associata a selettori di tipo classe

a.collegamento:link {color: green;}              La pseudo-classe doveva seguire la dichiarazione della classe

a:link.collegamento              la classe segue la pseudo-classe

:first-child

Seleziona e formatta un elemento che si trovi ad essere il primo elemento figlio di un altro elemento

<elemento>:first-child {<dichiarazioni>;}

p:first-child {color:red;}              assegna il colore rosso solo ai paragrafi che siano il primo elemento figlio di qualsiasi altro elemento

:link

Si applica solo all'elemento (X)HTML <a> che abbia anche l'attributo href

11 Pseudo-elementi

:first-letter

:first-line

:before

:after

12 Le @-rules

A livello sintattico le @-rules posono essere definite o nel corpo del documento, per l'esattezza all'interno dell'elemento <STYLE>:

<style type="text/css">
@rule
</style>

@import              serve per collegare un foglio di stile esterno al documento

<style type="text/css">
@import url(foglio_di_stile.css);
@import url(foglio_di_stile2.css);
</style>

Altre sintassi:

@import url("stile.css");

@import "stile.css";

<style type="text/css">
@import url(foglio_di_stile.css);
</style>

all'interno del tag <STYLE> @import deve essere la prima regola definita

È possibile invece importare all'interno di un singolo tag <STYLE> più fogli di stile:

<style type="text/css">
@import url(foglio_stampa.css) print;
@import url(foglio_schermo.css) screen, handheld;
</style>

@import è che può essere usata anche all'interno di un foglio di stile per incorporare un altro CSS esterno

È possibile definire all'interno della direttiva @import anche il supporto cui applicare il CSS. Per fare ciò basta far seguire all'url del CSS l'indicazione di uno dei media previsti nella specifica:

             

@import              serve per collegare un foglio di stile esterno al documento

 

@media <valore> {regole CSS}

@media va quindi seguito dal nome di uno dei supporti scelti come target specifico e dalle regole di stile racchiuse tra parentesi graffe

<style type="text/css">
@media screen {
h1 {color: black;}
p {color: red;}
}
@media print {
h1 {color: red;}
p {color: black;}
}
</style>

@media

 

@charset                            @charset "iso-8859-1"

serve a specificare l'impostazione relativa alla codifica dei caratteri di un documento

@charset "iso-8859-1"

@font-face               descrivere un font usato nel documento

usata per specificare l'url di un carattere particolare da scaricare su una macchina che non lo veda presente tra i suoi font

Il supporto non è garantito

@font-face {
font-family: Santiago;
src: url("http://www.mioserver.it/fonts/santiago.tt");
}

13 Valori e unità di misura

1.      I valori di una proprietà non vanno mai messi tra virgolette

2.      non bisogna lasciare spazio tra numero e sigla dell'unità

in (inches - pollici):

classica misura del sistema metrico americano. Praticamente nullo il suo valore su un supporto come un browser webviste le variabili relative a risoluzione e ampiezza dei monitor

cm (centimetri)

stesso discorso visto per i pollici, la difficoltà maggiore sta nella resa su monitor, che è altra cosa rispetto alla carta stampata

mm (millimetri)

vedi centimetri

pt (points - punti)

unità di misura tipografica destinata essenzialmente a definire la dimensione dei font

pc (picas)

unità poco usata. 1 pica equivale a 12 punti

em (em-height)

unità di misura spesso usata dagli autori CSS. 1 em equivale all'altezza media di un carattere per un dato font. E' un unità di misura relativa

ex (ex-height)

poco usata. 1 ex equivale all'altezza del carattere x minuscolo del font scelto

px (pixels)

unità di misura ideale su monitor. E' quella più usata e facile da comprendere

Percentuale               considerare sempre relativo rispetto ad un altro valore, in genere quello espresso per l'elemento parente

Colori                            Stringhe              Valori URI              Unità per gli angoli              Unità di tempo              Unità di frequenza

14 Ereditarietà

possono entrare in gioco nel modificare lo stile degli elementi tre diversi fogli di stile

·        foglio dell'autore

·        foglio dell'utente

·        foglio predefinito del browser

#titolo {color: black;}

.classe1 {background: #C00;}

h1 {color: red;}

#paragrafo {color: green;}

div p {color: red;}

1-0-0

0-1-0

0-0-1

1-0-0

0-0-2

Specificità              descrive il peso relativo delle varie regole all'interno di un foglio di stile

Per prima cosa si conta il numero di selettori ID              classi e pseudo-classi              numero di elementidefiniti nella regola

Il concetto di cascade

stili in linea prevalgono su quelli incorporati che a loro voltaprevalgono su quelli collegati

Importanza

se una dichiarazione viene accompagnata dalla parola chiave !important essa balza al primo posto nell'ordine di applicazione a prescindere da peso, origine, specificità e ordine



15 Il box model

·        l'area del contenuto. È la zona in cui trova spazio il contenuto vero e proprio, testo, immagini, animazioni Flash. Le dimensioni orizzontali dell'area possono essere modificate con la proprietà width. Quelle verticali con height.

·        il padding. È uno spazio vuoto che può essere creato tra l'area del contenuto e il bordo dell'elemento. Come si vede dalla figura, se si imposta un colore di sfondo per un elemento questo si estende dall'area del contenuto alla zona di padding.

·        il bordo. È una linea di dimensione, stile e colore variabile che circonda la zona del padding e l'area del contenuto.

·        il margine. È uno spazio di dimensioni variabili che separa un dato elemento da quelli adiacenti.

Larghezza del box

larghezza dell'area del contenuto:              width

larghezza effettiva di un box:

margine sinistro + bordo sinistro + padding sinistro + area del contenuto + padding destro + bordo destro + margine destro

Larghezza ed elemento contenitore

Se non si imposta alcun valore per la proprietà width o se il valore usato è auto la larghezza di un box è uguale a quella dell'area del contenuto dell'elemento contenitore. Quest'ultimo è l'elemento che racchiude il box

Uso del valore auto

Solo per tre proprietà è possibile impostare il valore auto: margini, altezza e larghezza (width).

Solo i margini possono avere valori negativi

16 Gestione del colore


black | navy | blue | maroon | purple | green | red | teal |

fuchsia | olive | gray | lime | aqua | silver | yellow | white

#RRGGBB

#CC0000              Il codice sopra rappresenta una tonalità di rosso.

codici esadecimali. In essi, le prime due lettere (o numeri) corrispondono ai valori per il colore rosso (RED), la seconda coppia fa riferimento al verde (GREEN), l'ultima al blue (BLUE).

#RGB

#C00              Il codice sopra rappresenta una tonalità di rosso

codici esadecimali              i valori per il rosso, il verde e il blue sono definiti solo dalla prima lettera o numero

rgb(rrr%, ggg%, bbb%)

rgb(0%, 0%, 0%)                            nero

rgb(100%, 100%, 100%)              bianco

usare per i tre elementi base del sistema RGB una lista di valori in percentuale separati da una virgola

rgb(rrr, ggg, bbb)

rgb(0, 0, 0,)              nero

Si definiscono i valori di rosso, verde e blue con tre valori compresi compresi, rispettivamente, tra 0 e 255

Per ogni elemento si possono definire almeno tre colori:

   

il colore di primo piano

foreground color

il colore di sfondo

background color

il colore del bordo

border color

La proprietà color              selettore { color: <valore> }

La proprietà color definisce esclusivamente:

·                   il colore di primo piano, ovvero quello del testo

·                   il colore del bordo di un elemento quando non si imposti esplicitamente quest'ultimo con le proprietà border o border-color

La proprietà color si applica a tutti gli elementi ed è ereditata

I valori possibili sono:

·                   qualunque valore di un colore definito con i metodi visti sopra

·                   la parola chiave inherit. Con essa si dice esplicitamente al browser di ereditare le impostazioni definite per l'elemento parente.

p{color: black; background-color: white; }

 

17 Gestione dello sfondo

background-color Definisce il colore di sfondo di un elemento. Questa proprietà non è ereditata

selettore {background-color: <valore>;}

Usando transparent come valore un elemento avrà come colore quello dell'elemento parente

Valori

·        un qualunque colore

·        la parola chiave transparent

background-image Definisce l'URL di un'immagine da usare come sfondo di un elemento. Questa proprietà non è ereditata

selettore { background-image: url(/<valore>); }

Usare none equivale a non impostare la proprietà: nessuna immagine verrà applicata come sfondo

Valori

·        un URL assoluto o relativo che punti ad un'immagine

·        la parola chiave none. Valore di default.

background-repeat Essa consente di definire la direzione in cui l'immagine di sfondo viene ripetuta. Proprietà non ereditata

selettore {background-repeat: <valore>;}

div { background-image: url(/sfondo.gif); background-repeat: repeat-x; }

 

Valori

·                   repeat. L'immagine viene ripetuta in orizzontale e verticale. E' il comportamento standard.

·                   repeat-x. L'immagine viene ripetuta solo in orizzontale.

·                   repeat-y. L'immagine viene ripetuta solo in verticale.

·                   no-repeat. L'immagine non viene ripetuta.

background-attachment Con questa proprietà si imposta il comportamento dell'immagine di sfondo rispetto all'elemento cui è applicata e all'intera finestra del browser. Si decide, in pratica, se essa deve scorrere insieme al contenuto o se deve invece rimanere fissa. Proprietà non ereditata

selettore {background-attachment: <valore>;}

background-repeat: repeat-x;
background-attachment: fixed; }

 

Valori

·                   scroll. L'immagine scorre con il resto del documento quando si fa lo scrolling della pagina)

·                   fixed. L'immagine rimane fissa mentre il documento scorre

 

background-positionDefinisce il punto in cui verrà piazzata un'immagine di sfondo non ripetuta o da dove inizierà la ripetizione di una ripetuta. Si applica solo agli elementi blocco o rimpiazzati. Attenzione alla compatibilità e alla resa, non omogeena, tra i vari browser. Proprietà non ereditata.

selettore {background-position: <valore> o <valori>;}

body {
background-image: url(/back_400.gif);
background-repeat: no-repeat;
background-position: center center;
}

I valori possibili sono diversi. Tutti però definiscono le coordinate di un punto sull'asse verticale e su quello orizzontale. Ciò può avvenire nei seguenti modi:

·        con valori in percentuale

·        con valori espressi con unità di misura

·        con le parole chiave top, left, bottom, right

background E veniamo alla proprietà background. Con essa, ricordiamolo, possiamo definire in un colpo solo tutti gli aspetti dello sfondo. Per essere valida, la dichiarazione non deve contenere necessariamente riferimenti a tutte le proprietà viste finora, ma deve contenere almeno la definizione del colore di sfondo

selettore {background: background-color background-image background-repeat background-attachment background-position;}

I valori non vanno separati da virgole. L'ordine non è importante, ma quello dato è il più logico e andrebbe rispettato: si va in ordine di importanza

body {
background: white url(sfondo.gif) repeat-x fixed;
}


18 Gestione del testo: proprietà di base

·        il font da usare

·        la sua dimensione

·        la sua consistenza

·        l'interlinea tra i paragrafi

·        l'allineamento del testo

·        la sua decorazione (sottolineature e simili)

font-family

La proprietà font-family serve a impostare il tipo di carattere di una qualunque porzione di testo. Si applica a tutti gli elementi ed è ereditata.

consente all'autore di impostare nei CSS non un font singolo e unico, ma un elenco di caratteri alternativi

p {font-family: arial, Verdana, sans-serif;}

inserire alla fine l'indicazione di una famiglia generica. Esse sono cinque: (tra parentesi riportiamo i caratteri predefiniti su ciascuna sui sistemi Windows)

·        serif (Times New Roman)

·        sans-serif (arial)

·        cursive (Comic Sans)

·        fantasy (Allegro BT)

·        monospace (Courier)

I nomi dei font della lista vanno separati dalla virgola. I caratteri con nomi composti da più parole vanno inseriti tra virgolette

selettore {font-family: <font 1>, <font2>, ....,<famiglia generica>;}

div {font-family: Georgia, "Times New Roman", serif;}

font-sizedefinisce le dimensioni. Applicabile a tutti gli elementi ed ereditata

selettore { font-size: <valore>; }

              Valori dimensioni in senso assoluto o relativo .

Dimensione relativa significa che essa viene calcolata in base alla dimensione del testo dell'elemento parente

p {font-size: 12px;}
div.titolo {font-size: 50%;}
#div1 {font-size: large;}
h2 {font-size: 1.2em;}

Sono valori assoluti:

·                   le sette parole chiave xx-small, x-small, small, medium, large, x-large, xx-large

·                   quelli espressi con le seguenti unità di misura: pixel (px), centimetri (cm), millimetri (mm), punti (pt), picas (pc), pollici (in), x-height(ex). Di tutte queste unità le uniche proponibili per il testo sono punti e pixel. Si consiglia di usare la prima solo per CSS destinati alla stampa.

Sono valori relativi:

·                   le parole chiave smaller e larger

·                   quelli espressi in em (em-height)

·                   quelli espressi in percentuale

font-weightServe a definire la consistenza o "peso" visivo del testo. Si applica a tutti gli elementi ed è ereditata. - è ereditata

selettore {font-weight: <valore>;}

Valori:

p {font-weight: 900;}
div {font-weight: bold;}

·                   valori numerici100 - 200 - 300 - 400 - 500 - 600 - 700 - 800 - 900 ordinati in senso crescente (dal leggero al pesante)

·                   normal. Valore di default. E' l'aspetto normale del font ed equivale al valore 400

·                   bold. Il carattere acquista l'aspetto che definiamo in genere grassetto. Equivale a 700

·                   bolder.Misura relativa. Serve a specificare che una determinata porzione di testo dovrà apparire più pesante rispetto al testo dell'elemento parente

·                   lighter. Misura relativa. Il testo sarà più leggero di quello dell'elemento parente

font-style              Imposta le caratteristiche del testo in base ad uno di questi tre valori:

selettore {font-style: <valore>;}

p {font-style: italic;}

·        normal: il testo mantiene il suo aspetto normale

·        italic: formatta il testo in corsivo

·        oblique: praticamente simile a italic

La proprietà si applica a tutti gli elementi ed è ereditata

Line-heightsistema di interlinea - serve a definire l'altezza di una riga di testo all'interno di un elemento blocco - è ereditata

selettore {line-height: <valore>;}

non usare mai la percentuale

p {line-height: 1.5;}
body {line-height: 15px;}

·                   normal. Il browser separerà le righe con uno spazio ritenuto "ragionevole". Dovrebbe corrispondere a un valore numerico compreso tra 1 e 1.2

·                   valore numerico. Usando valori numerici tipo 1.2, 1.3, 1.5 si ottiene questo risultato: l'altezza della riga sarà uguale alla dimensione del font moltiplicata per questo valore.

·                   un valore numerico con unità di misura. L'altezza della riga sarà uguale alla dimensione specificata.

·                   percentuale. L'altezza della riga viene calcolata come una percentuale della dimensione del font.

fontproprietà a sintassi abbreviata che serve a impostare con una sola dichiarazione tutte le principali caratteristiche del testo

selettore {font: <valori>;}

singole proprietà non vanno separati da virgole, i nomi dei font costituiti da più parole vanno racchiusi tra virgolette la dichiarazione dovrebbe sempre finire con la coppia font-size > font-family

proprietà line-height si imposta invece così, facendo seguire il suo valore a quello di font-size e separando i due con una slash font-size/line-height

p {font: bold 12px/1.5 Georgia, "Times New Roman", serif;}

abbiamo definito: font-weight, dimensione/ interlinea, font-family

·                   font-family

·                   font-size

·                   line-height

·                   font-weight

·                   font.-style

·                   font-variant

·                   font di sistema

Usare i font di sistema

è possibile impostare, invece della normale lista di caratteri, un valore corrispondente ai cosiddetti font di sistema.

Se si intende usare uno dei font di sistema non è necessario specificare altri valori oltre alla keyword

p {font: menu;}
div {font: status-bar;}

1.                 caption: carattere usato per pulsanti e menu a tendina

2.                 icon: carattere usato per la descrizione delle icone

3.                 menu: carattere usato nei menu delle varie finestre

4.                 message-box: usato per i gli alert e gli altri box con messaggi di sistema

5.                 small-caption: carattere per i controlli più piccoli

6.                status-bar: il font usato per la barra di stato

Allinerare il testo:

Text-align La proprietà serve a impostare l'allineamento del testo. E' ereditata e si applica a tutti gli elementi.

selettore { text-align: <valore>; }

·                   left. Allinea il testo a sinistra

·                   right. Allinea il testo a destra

·                   center. Centra il testo

·                   justify. Giustifica il testo

Text-decorationImposta particolari decorazioni e stili per il testo. Ereditabile e applicabile a tutti gli elementi

p {text-decoration: <valore> o <valori>;}

p {text-decoration: none;}
a {text-decoration: underline;

·                   none. Il testo non avrà alcuna decorazione particolare

·                   underline. Il testo sarà sottolineato

·                   overline Il testo avrà una linea superiore

·                   line-through. Il testo sarà attraversato da una linea orizzontale al centro

19 Gestione del testo: proprietà avanzate

font-size-adjust  migliorare la leggibilità di un carattere alternativo tra quelli indicati con la proprietà font-family - è ereditata

selettore {font-size-adjust: <valore>;}

p {font-size-adjust: 0.50;}

·                   none. Non avviene nessun aggiustamento. Valore di default.

·                   valore numerico. Indica il fattore di aggiustamento del font.

supportata solo dai browser Gecko-based (Mozilla, Netscape 6/7)

font-stretch Consente di rendere il testo più o meno espanso del normale. Proprietà non supportata da nessun browser. Ereditata

selettore {font-stretch: <valore>;}

p {font-stretch: ultra-expanded;}

·                   normal. Valore di default.

·                   parole chiaveche indicano diversi gradi di espansione del testo.

ultra-expanded, extra-expanded, expanded, semi-expanded, normal, semi-condensed, condensed, extra-condensed, ultra-condensed - con funzione relativa: wider e narrower

font-variant  Consente di trasformare il testo in maiuscoletto – ereditata

selettore {font-variant: <valore>;}

·                   normal. Il testo ha il suo aspetto normale. Valore di default.

·                   small-caps. trasforma il testo in maiuscoletto.

h2 {font-variant: small-caps;}

text-indent  Definisce l'indentazione della prima riga in ogni elemento contenente del testo. Proprietà ben supportata ed ereditata

selettore {text-indent: <valore>;}

·                   un valore numerico con unità di misura

·                   un valore in percentuale

il valore con unità di misura è assoluto, quello in percentuale è relativo

p {text-indent: 10px;}
div.contenuto {text-indent: 10%;}

text-shadow  Crea un'ombreggiatura per il testo specificato. La proprietà non è supportata da nessun browser e non è ereditata

selettore {text-shadow: <valore colore> <valore x> <valore y> <valore blur>;}

h1 {text shadow: blue 2px 2px 3px;}

text-transform  La proprietà serve a cambiare gli attributi del testo relativamente a tre aspetti: maiuscolo, minuscolo, prima lettera maiuscola.

selettore {text-transform: <valore>;}

·                   none. Valore di default. Nessuna trasformazine viene applicata.

·                   capitalize. La prima lettera di ogni parola viene trasformata in maiuscolo.

·                   uppercase. Tutto il testo è maiuscolo.

·                   lowercase. Tutto il testo è minuscolo.

white-space  Questa proprietà serve a gestire il trattamento degli spazi bianchi presenti in un elemento. E' ereditata

selettore {white-space: <valore>;}

p {white-space: pre;}
div {white-space: nowrap;}

·                   none. Valore di default. Gli spazi bianchi sono ridotti a uno.

·                   pre. Gli spazi bianchi e l'inizio di nuove righe sono mantenuti così come sono nel codice

·                   nowrap. Gli spazi bianchi sono ridotti a uno e l'andata a capo è disabilitata

letter-spacing  Aumenta lo spazio tra le lettere di una parola. Proprietà ben supportata ed ereditata

selettore { letter-spacing: <valore>; }

h1 { letter-spacing: 5px; }

·                   normal. Valore di default. Le lettere mantengono il loro spazio normale.

·                   un valore numerico con unità di misura. Le lettere saranno spaziate secondo la distanza impostata.

word-spacing  Serve ad aumentare lo spazio tra le parole comprese in un elemento. Proprietà ben supportata ed ereditata

selettore { word-spacing: <valore>; }

p { word-spacing: 1.2em; }
div.testo { word-spacing: 5px; }

·                   normal. Valore di default. Le parole mantengono il loro spazio normale.

·                   un valore numerico con unità di misura. Le parole saranno spaziate secondo la distanza impostata.


Il Box Model: come disegnare la struttura della pagina

20 Gestione delle dimensioni: altezza

Height definisce la distanza tra il bordo superiore e quello inferiore di un elemento. Non è ereditata

selettore {height: valore;}

Luso va sempre valutato con attenzione, Il comportamento dei vari browser è al riguardo notevolmente diverso

molte volte si può ottenere lo stesso risultato visivo desiderato usando proprietà come padding e margin

div {height: 250px;} p.blocco {height: 50%;}

Usando il valore auto per overflow viene aggiunta una scrollbar per scorrere il contenuto.

si applica a tutti gli elementi tranne

·                   colonne di tabelle

·                   elementi inline non rimpiazzati

·                   un valore numerico con unità di misura.

·                   un valore in percentuale. Il valore in percentuale si riferisce sempre all'altezza del blocco contenitore, purché esso abbia un'altezza esplicitamente dichiarata. Diversamente, la percentuale viene interpretata come auto.

·                   auto. L'altezza sarà quella determinata dal contenuto.

Overflow gestire il contenuto che superi i limiti imposti con height. Si applica a tutti gli elementi blocco e non è ereditata.

selettore {overflow : valore;}

div {overflow: auto;}

#div4 {
height: 60px;
background: Silver;
overflow: auto;
}

viene aggiunta una scrollbar per scorrere il contenuto

·                   visible. Valore iniziale. Il contenuto eccedente rimane visibile (con i problemi visti sopra).

·                   hidden. Il contenuto eccedente non viene mostrato.

·                   scroll. Il browser crea barre di scorrimento che consentono di fruire del contenuto eccedente.

·                   auto. Il browser tratta il contenuto eccedente secondo le sue impostazioni predefinite. Di norma dovrebbe mostrare una barra di scorrimento laterale.

min-height Imposta un'altezza minima per un elemento - Non è ereditata e non è supportata da Explorer Win

selettore {min-height: valore;}

div {min-height: 200px;}

·                   un valore numerico con unità di misura.

·                   un valore in percentuale

max-heightLa proprietà max-height serve a impostare l'altezza massima di un elemento

selettore {max-height: valore;}

div {max-height: 400px;}

·                   none. Valore iniziale. L'altezza dell'elemento non è limitata.

·                   un valore numerico con unità di misura.

·                   un valore in percentuale

21 Gestione delle dimensioni: larghezza

width

Larghezza del box=

margine sinistro + bordo sinistro + padding sinistro + area del contenuto + padding destro + bordo destro + margine destro

larghezza dell'area del contenuto: width

selettore {width: valore;}

La proprietà width non è ereditata.

p {width: 90px;}

div.box {width: 50%;}

Explorer fino alla versione 5.5 interpreta male il concetto di width

·                   auto. Valore di default. Se non si impostano margini, bordi e padding la larghezza dell'elemento sarà uguale all'area del contenuto dell'elemento contenitore.

·                   un valore numerico con unità di misura.

·                   un valore in percentuale. La larghezza sarà calcolata rispetto a quella dell'elemento contenitore.

min-width

Imposta la larghezza minima di un elemento. Si applica a tutti gli elementi tranne che a quelli in linea non rimpiazzati e agli elementi di tabelle. Proprietà non supportata da Internet Explorer e non ereditata

selettore { min-width: valore; }

div { min-width: 400px; }

·                   un valore numerico con unità di misura.

·                   un valore in percentuale. La larghezza sarà come minimo quella espressa dalla percentuale riferita alla larghezza dell'elemento contenitore.

max-width Imposta la larghezza massima di un elemento. Non è ereditata

selettore { max-width: valore; }

·                   none. Valore di default. Non c'è un limite per larghezza dell'elemento.

·                   un valore numerico con unità di misura.

·                   un valore in percentuale


22 I Marginila distanza tra il bordo di un elemento e gli elementi adiacenti

margin-bottom Definisce la distanza tra il lato inferiore di un elemento e gli elementi adiacenti. Si applica a tutti gli elementi e non è ereditata.

Ricordiamo che se per un elemento si imposta un margine inferiore ed esso si trova sopra ad un altro elemento che abbia impostato un margine superiore, la distanza tra i due sarà quella maggiore e non data dalla somma delle due proprietà (meccanismo del margin collapsing).

p {margin-bottom: 10px;}             
div.box {margin-bottom: 20%;}

·                   un valore numerico con unità di misura. Il valore è espresso in termini assoluti.

·                   un valore in percentuale. Il valore è calcolato come percentuale rispetto alla larghezza (width) del blocco contenitore.

·                   auto. E' quasi sempre corrispondente a 0.

margin-left Definisce la distanza tra il lato sinistro di un elemento e gli elementi adiacenti. Si applica a tutti gli elementi e non è ereditata

h1 {margin-left: 10%;}
img {margin-left: 20px;}

·                   un valore numerico con unità di misura. Il valore è espresso in termini assoluti.

·                   un valore in percentuale. Il valore è calcolato come percentuale rispetto alla larghezza (width) del blocco contenitore.

·                   auto. E' quasi sempre corrispondente a 0.

margin-top Definisce la distanza tra il lato superiore di un elemento e gli elementi adiacenti. Si applica a tutti gli elementi e non è ereditata

p.box {margin-top: 10%;}             

img {margin-top: 20px;}

·                   un valore numerico con unità di misura.

·                   un valore in percentuale.

·                   auto.

margin-right Definisce la distanza tra il lato destro di un elemento e gli elementi adiacenti. Si applica a tutti gli elementi e non è ereditata

h1 {margin-right: 10%;}
img {margin-right: 20px;}

·                   un valore numerico con unità di misura.

·                   un valore in percentuale.

·                   auto.

margin E' una proprietà a sintassi abbreviata. Con essa è possibile specificare i valori per tutti e quattro i lati di un elemento. Si applica a tutti gli elementi e non è ereditata

div {margin: 10px 15px 10px 20px;}

L'ordine di lettura va inteso in senso orario. Per cui: il primo valore si riferisce al lato superiore, il secondo a quello destro, il terzo al lato inferiore, il quarto a quello sinistro

valore auto per i lati sinistro e destro è quello che consente di centrare in tal modo un elemento rispetto alla pagina o al box contenitore (no su explorer5)

p {margin: 20px 10px;}
div {margin: 20px;}
h1 {margin: 10px auto;}

Valori

·                   un valore numerico con unità di misura.

·                   un valore in percentuale.

·                   auto. Per la proprietà margin il valore auto significa che la distanza sarà automaticamente calcolata rispetto alla larghezza dell'elemento contenitore.

·                   se si usano tre valori, il primo si riferisce al margine superiore, il secondo a quelli sinistro e destro, il terzo a quello inferiore

·                   se si usano due valori, il primo si riferisce ai lati superiore e inferiore, il secondo al sinistro e al destro

·                   se si usa un solo valore, un uguale distanza sarà ai quattro lati

23 Il Padding

padding-bottom

Imposta l'ampiezza del padding sul lato inferiore di un elemento. Si applica a tutti gli elementi e non è ereditata

p.box {padding-bottom: 10px;}

·                   un valore numerico con unità di misura. Il valore è espresso in termini assoluti.

·                   un valore in percentuale. Il valore è calcolato come percentuale rispetto alla larghezza (width) del blocco contenitore.

padding-left Imposta l'ampiezza del padding sul lato sinistro di un elemento. Si applica a tutti gli elementi e non è ereditata

p {padding-left: 10%;}

·                   un valore numerico con unità di misura.

·                   un valore in percentuale.

padding-top Imposta l'ampiezza del padding sul lato superiore di un elemento. Si applica a tutti gli elementi e non è ereditata

h1 {padding-top: 10px;

·                  un valore numerico con unità di misura.

·                  un valore in percentuale.

padding-rightImposta l'ampiezza del padding sul lato destro di un elemento. Si applica a tutti gli elementi e non è ereditata

p.box {padding-right: 10px;}

·                  un valore numerico con unità di misura.

·                  un valore in percentuale.

PaddingProprietà a sintassi abbreviata. Serve a impostare i valori del padding per tutti e quattro i lati di un elemento

p {padding: 10px 20px;}
div {padding: 10%;}

·                 un elenco di valori numerici con unità di misura.

·                 un elenco di valori in percentuale.

Eliminare il margine più o meno ampio tra il bordo della finestra e l'area del contenuto.In HTML

body {
margin: 0px;
padding: 0px; }

24 I Bordi

Definire lo stile di un singolo bordo

       

Sintassi (con proprietà singole)

selettore {
border-<lato>-color: <valore>;
border-<lato>-style: <valore>;
border-<lato>-width: <valore>;
}

Sintassi (abbreviata)

selettore { border-<lato>: <valore width> <valore style> <valore color>; }

sostituite a <lato> uno degli indicatori dei quattro lati: top, right, bottom o left.

div {
border-left-color: black;
border-left-style: solid;
border-left-width: 1px;
}

Molto più comodo scrivere così:

div {border-left: 1px solid black;}

1.                 il colore (color)

·                   un qualsiasi colore

·                   la parola chiave inherit

 

2.                 lo stile (style)

·                   none. L'elemento non presenta alcun bordo e lo spessore equivale a 0.

·                   hidden. Equivalente a none

·                   dotted

·                   dashed

·                   solid

·                   double.

·                   groove

·                   ridge

·                   inset

·                   outset

 

3.                 lo spessore (width)

·                   un valore numerico con unità di misura

·                   thin. Bordo sottile.

·                   medium. Bordo di medio spessore.

·                   thick. Bordo di largo spessore.

Definire lo stile dei quattro bordi

       

selettore {
border-width: <valori>;
border-style: <valori>;
border-color: <valori>;
}

Per ciascuna di queste proprietà è possibile definire da uno a quattro valori, uno per lato

top, right, bottom, left

div {
border-width: 1px 2px 1px 2px;
border-style: solid;
border-color: black red black red;
}

   

Usare la proprietà border

selettore {border: <valore spessore> <valore stile> <valore colore>;}

div {border: 2px solid black;}

possiamo definire con una sola regola le impostazioni per i quattro bordi perché i quattro bordi abbiano tutti lo stesso colore, lo stesso stile e lo stesso spessore.

   
       

25 Le Liste

Posizionare gli elementi nella pagina

26 Tre proprietà speciali: display, float clear

Displaydefinire il trattamento e la presentazione di un elemento - La proprietà è ereditata

<selettore> {display: <valore>;}

una pagina alternativa fatta solo di testo

img {display: none;}

Nella pagina principale mettete un bel link: "Versione solo testo" e ci attaccate uno javascipt per caricare il CSS alternativo

·                   inline. Valore di default. L'elemento assume le caratteristiche degli elementi inline.

·                   block. L'elemento viene trattato come un elemento blocco.

·                   list-item. L'elemento si trasforma in un elemento lista.

·                   run-in. L'elemento viene incorporato e inserito all'inizio del blocco seguente. L'effetto dovrebbe essere simile a quello visto per le liste quando si usa il valore inside per il marcatore. Il valore è supportato solo da Opera 5/6 e parzialmente da Explorer 5 Mac.

·                   compact. L'elemento viene piazzato al fianco di un altro. Non supportato da nessun browser.

·                   marker. Questo valore fa sì che il contenuto generato con gli pseudo-elementi :before e :after sia trattato come un marcatore di liste. Non supportato da nessun browser.

·                   none. L'elemento non viene mostrato. O meglio: è come se non fosse nemmeno presente nel documento, in quanto non genera alcun box. Diversa, come vedremo, la proprietà visibility:hidden, che invece si limita a nascondere l'elemento.

FloatCon questa proprietà è possibile rimuovere un elemento dal normale flusso del docuemnto e spostarlo su uno dei lati (destro o sinistro) del suo elemento contenitore. Il contenuto che circonda l'elemento scorrerà intorno ad esso sul lato opposto rispetto a quello indicato come valore di float. La proprietà non è ereditata

<selettore> {float: <valore>;}

div {width: 200px; float:right;}
img.foto {float: left;}

·                   left. L'elemento viene spostato sul lato sinistro del box contenitore, il contenuto scorre a destra.

·                   right. L'elemento viene spostato sul lato destro, il contenuto scorre a sinistra.

·                   none. Valore iniziale e di default in mancanza di una dichiarazione esplicita. L'elemento mantiene la sua posizione normale.

Se usate il float con le immagini non avete problemi perchè esse hanno una dimensione intrinseca che il browser riconosce. Ma se lo applicate ad altri elementi dovete esplicitamente impostare una dimensione orizzontale con la proprietà width.

Clear La proprietà clear serve a impedire che al fianco di un elemento compaiano altri elementi con il float. Si applica solo agli elementi blocco e non è ereditata

<selettore> {clear: <valore>;}

h1 {clear: both;}

·                   none. Gli elementi con float possono stare a destra e sinistra dell'elemento.

·                   left. Si impedisce il posizionamento a sinistra.

·                   right. Si impedisce il posizionamento a destra.

·                   both. Si impedisce il posizionamento su entrambi i lati.

27 Posizionamento degli elementi

Positionè la proprietà fondamentale per la gestione della posizione degli elementi, di cui determina la modalità di presentazione sulla pagina. Si applica a tutti gli elementi e non è ereditata.

<selettore> {position: <valore>;}

·                   static.

·                   absolute

·                   fixed

·                   relative

StaticE' il valore di default, quello predefinitoper tutti gli elementi non posizionati secondo un altro metodo. Rappresenta la posizione normale che ciascuno di essi occupa nel flusso del documento

Absoluteil box dell'elemento è posizionato in base alle coordinate fornite con le proprietà top, left, right o bottom. Il posizionamento avviene sempre rispetto al box contenitore dell'elemento. Questo è rappresentato dal primo elemento antenato (ancestor) che abbia un posizionamento diverso da static. Se tale elemento non esiste il posizionamento avviene in base all'elemento radice HTML,

fixedcome per absolute maper fixedil box contenitore è sempre il cosiddetto viewport(la finestra principale del borwser). un box posizionato con fixed non scorre con il resto del documento. non è supportato da Explorer

relativeL'elemento viene posizionato relativamente al suo box contenitore. il box contenitore è il posto che l'elemento avrebbe occupato nel normale flusso del documento

è possibile usare anche valori negativi

   

28 Gestione della posizione

TopPer gli elementi posizionati con absoluteo fixeddefinisce la distanza verticale rispetto al bordo superiore dell'elemento contenitore. Per gli elementi posizionati con relativestabilisce invece l'ammontare dello spostamento rispetto al lato superiore della posizione originaria. In questo caso, usando valori positivi il box viene spostato sotto, mentre con valori negativi lo spostamento avviene verso l'alto

<selettore> {top: <valore>;}

·                   un valore numerico con unità di misura

·                   un valore in percentuale La percentuale è relativa all'altezza dell'elemento contenitore.

·                   auto

div {top: 10px;}
p {top: 10%;}

LeftPer gli elementi con posizione assoluta o fissa definisce la distanza dal bordo sinistro del box contenitore. Per quelli con posizione relativa stabilisce lo spostamento rispetto al lato sinistro della posizione originaria. Valori positivi spostano l'elemento verso destra, valori negativi verso sinistra

<selettore> {left: <valore>;}

·                   un valore numerico con unità di misura

·                   un valore in percentuale La percentuale è relativa alla larghezza dell'elemento contenitore.

·                   auto

div {left: 30px;}

BottomPer i box con posizione assoluta o fissa definisce la distanza dal bordo inferiore dell'elemento contenitore. Per quelli posizionati relativamente lo spostamento rispetto al lato inferiore della posizione originaria

<selettore> {bottom: valore>}

·                   un valore numerico con unità di misura

·                   un valore in percentuale

·                   auto

div {bottom: 50px;}

RightPer i box con posizione assoluta o fissa definisce la distanza dal bordo destro dell'elemento contenitore. Per quelli posizionati relativamente lo spostamento rispetto al lato destro della posizione originaria

<selettore> {right: valore;}

·                   un valore numerico con unità di misura

·                   un valore in percentuale

·                   auto

div {right: 50px;}

VisibilityQuesta proprietà determina se un elemento debba essere visibile o nascosto. Si applica a tutti gli elementi e non è ereditata

<selettore> {visibility: <valore>;}

·                   visible. L'elemento è visibile. Valore di default.

·                   hidden. L'elemento è nascosto, ma mantiene il suo posto nel layout dove apparirà come una zona vuota. In ciò è diverso dal valore none della proprietà display

div.box {visibility: hidden;}
p {visibility: visible;}

ClipDefinisce la parte di un elemento posizionato che deve essere visibile. Nella definizione che ne è stata data con CSS2 non è supportata da nessun browser.

 

z-indexCon questa proprietà si imposta l'ordine di posizionamento dei vari elementi sulla base di una scala di livelli.

<selettore> {z-index: <valore>;}

·                   auto. L'ordine dei livelli è uguale per tutti gli elementi.

·                   un valore numerico. Un valore superiore indica un livello superiore

div#box1 {z-index: 34;}

29 Agire sulle tabelle

table-layoutimposta il metodo di layout di una tabella. Non è ereditata. Si applica solo alle tabelle

<selettore> {table-layout: <valore>;}

table {
table-layout: fixed;
width: 400px;
}

·                   auto. Il layout della tabella viene definito automaticamente dal browser.

·                   fixed. Le regole di presentazione sono quelle impostate dall'autore nel CSS.

Usando fixed possiamo innanzitutto definire la larghezza della tabella tramite la proprietà width

border-collapsepossiamo stabilire in che modo trattare i bordi e gli spazi tra le celle di una tabella. Si applica solo alle tabelle ed è ereditata.

<selettore> {border-collpse: <valore>;}

table {
border: 2px solid black;
border-collapse: separate;
border-spacing: 5px;
}

·                   collapse. Se viene impostato un bordo, le celle della tabella lo condividono.

·                   separate. Se viene impostato un bordo, ogni cella ha il suo, separato dalle altre. Lo spazio tra le celle e tra i bordi si imposta con la proprietà border-spacing.

border-spacingImposta lo spazio tra le celle di una tabella. Va usata solo in presenza di un modello di border-collapse settato su separate. Proprietà ereditata e applicabile solo alle tabelle

<selettore> {border-spacing: <valore>;}

·                   un valore numerico con unità di misura

empty-cellsGestisce il trattamento delle celle di tabella senza contenuto. Agisce solo su quelle che non presentino al loro interno alcun tipo di markup, nemmeno il classico &nbsp; inserito in genere proprio per simulare la presenza di contenuto. Proprietà ereditata

<selettore> {empty-cells: <valore>;}

·                   show. Mostra i bordi della cella.

·                   hide. I bordi non vengono mostrati e apparirà solo uno spazio vuoto.

caption-side La proprietà caption-side definisce il lato su cui vogliamo far comparire tale titolo. E' ereditata. La supporta solo Mozilla

<selettore> {caption-side: <valore>;}

table.tabella9 {
table-layout : fixed;
width : 300px;
background : Silver;
caption-side : bottom;
}

·                   top. Caption sul lato superiore.

·                   right. Caption sul lato destro.

·                   bottom. Caption sul lato inferiore.

·                   left. Caption sul lato sinistro.

<table>
<caption>Titolo della tabella</caption>
<tr>
<td>...
</table>

30 Altre proprietà

Guida Layout dei siti con i CSS

5 Estensione orizzontale di un layout

6 Layout fluido

L'effetto fluido si può ottenere in svariati modi:

·                   non specificare in nessun modo la larghezza del contenitore principale nè usare margini, bordi o padding, e in tal caso si ha un layout fluido totale;

·                   attribuire del padding orizzontale al body;

·                   specificare una larghezza percentuale al contenitore principale;

·                   attribuire margini, padding o border (fissi o percentuali) al contenitore principale.

7 Layout fisso

la soluzione migliore, se proprio si deve pensare ad un layout fisso, è impostare la larghezza del contenitore principale a 760 pixels o meno. Ecco come ottenere un contenitore centrato e largo 760 pixels:

body{
    text-align: center;   /*centra in IE 5.x */
    }

div#container{
    width: 760px;
    margin: 0px auto;   /*centra negli altri browsers*/
    text-align: left;   /*ripristina l' allineamento*/
    }

8 Layout elastico

usa il dimensionamento in em non solo per il testo ma anche per la larghezza degli elementi principali della pagina, cosicchè solo ridimensionando il carattere del browser è possibile agire sulla larghezza della pagina, ottenendo una sorta di effetto "zoom"

Si dimensiona il font-size del body con una misura relativa di modo che sia possibile ridimensionare il font tramite le opzioni del browser

misura percentuale accettabile 76%              un carattere medio impostato via browser, il risultato è all' incirca pari a 12 pixels

css base di un layout elastico e centrato

body{
    font-size: 76%;  /*dimensionamento percentuale del font */
    text-align: center;  /*centra in IE 5.x */
    }

div#container{
    width: 60em;  /*dimensionamento in em del container principale */
    margin: 0px auto;  /*centra negli altri browsers*/
    text-align: left;   /*ripristina l' allineamento*/
    }

A questo punto si dimensiona il container principale, e le sue eventuali colonne, solo in em, consentendo così, reimpostando le dimensioni del carattere del browser, di avere un effetto zoom

 

1.                 header

2.                 navigazione

3.                 contenuti

4.                 footer

11 Layout monolitico o a colonna singola

Il laoyout monolitico si compone di quattro sezioni fondamentali:

in un layout monolitico si dovrebbe sempre specificare e dichiarare esplicitamente la larghezza dell'area principale. Non dichiarando la larghezza esplicitamente, il layout si adatta alla larghezza della finestra del browser.

un layout a colonna singola fluido

html,body{margin:0; padding: 0}
body{font-family: arial,sans-serif; font-size: 76%}
div#container{ /*nessuna regola necessaria*/ }
div#header{background: url(/sfondo.gif)}
h1{margin: 0;padding:0}
h2{color:#4078B8; font-size:1.5em; text-align:center}
div#navigation{background-color:#000; color: #fff}
div#content{padding:0 1.5em}
div#content p{line-height:1.3em}
div#footer{padding:0.5em; background-color:#B0D0E8; color:#000; text-align:center}

<body>
    <div id="container">
        <div id="header"></div>
        <div id="navigation"></div>
        <div id="content"></div>
        <div id="footer"></div>
    </div>
</body>

12 Layout monolitico

13 Layout monolitico fisso

<style type="text/css" media="print">
div#container{
    width: auto;
    }
</style>

trasformare un layout fluido in uno a larghezza fissa è molto semplice a questo punto: basterà aggiungere qualche regola CSS al body e al div con id container. Per delimitare spazialmente il contenitore è bene usare in questo caso dei bordi.

è importante controllare che la stampa di una pagina che lo utilizza venga bene

/*stili per il layout elastico*/
html,body{margin: 0;padding:0}
body{font-family: arial,sans-serif;font-size: 76%;text-align: center}
div#container{width: 60em;margin: 0 auto;text-align: left;
border-left: 2px solid #36c;border-right: 2px solid #36c}

/*stili generici, su header e footer*/
div#header{background-color:#36C;color: #ff0}
h1,h2{margin: 0;padding:0}
h1{padding-left:0.5em;font: bold 2.3em/80px arial,serif}
h2{color: #999;font-size: 1.5em}
div#footer{text-align:center;padding: 0.5em;
background-color: #69c; color: #000}
div#footer a{color: #fff;font-weight: bold;text-decoration: underline}

/*stili specifici per il layout*/
div#navigation{background-color:#9cf}
div#content{padding: 1em}

14 Layout monolitico elastico

che tutte le sezioni di testo di un sito con layout elastico devono essere dimensionate relativamente, così come le eventuali largezze degli elementi. Per un layout monolitico, il contenitore principale viene dimensionato in em

 

 

15 Il problema del footer

 

16 Layout a due e tre colonne: introduzione

·                   header

·                   navigazione

·                   contenuti

·                   footer

18 Layout a due colonne: elementi di base

Le sezioni fondamentali di un layout a due colonne sono:

19 Layout a due colonne con il float

 

nel codice HTML la navigazione deve precedere i contenuti

Due sono i passi preliminari da compiere:

·                   rendere la sezione di navigazione float;

·                   separare verticalmente i contenuti da essa, attraverso l'uso dei margini dichiarati sul div principale.

 

<body>
    <div id="container">
        <div id="header"></div>
        <div id="navigation"></div>
        <div id="content"></div>
        <div id="footer"></div>
    </div>
</body>

volendo una colonna secondaria a larghezza fissa basterà dichiarare le dimensioni in pixel anzichè in em

div#navigation{
    float: right;
    width: 13em
    } div#content{
    margin-right: 13em
    }

si fa in modo che il footer non abbia elementi float alla sua destra attraverso la proprietà clear:

div#footer{
    clear: right
    }

 

20 Layout a due colonne con il float

Il layout che abbiamo visto non dà vincoli sulla lunghezza relativa delle due colonne

Se sappiamo a priori che in tutte le pagine in cui useremo un layout a due colonne con i float la colonna dei contenuti sarà più lunga della colonna di navigazione

·                   separare le due colonne con un bordo fine;

·                   separare le due colonne con l'uso del colore.

 

Layout a due colonne cromatiche

Se la colonna dei contenuti è più lunga della colonna di navigazione

assegniamo un colore di sfondo al container e al div principale. In questo caso la navigazione erediterà il colore del container e darà l'impressione di estendersi fino al footer

altrimenti

usare un piccola immagine alta pochi pixel da ripetere verticalmente su tutto il container. Questa immagine deve essere larga quanto la navigazione, e implicitamente introduce una condizione: la colonna di navigazione dovrà per forza essere dimensionata in pixel

come ottenere un background che si ripete verticalmente lungo tutto il container

div#container{
    background: url(/rightcol.jpg) repeat-y top right
    }

21 Layout a due colonne con posizionamento assoluto

non consente di avere la colonna di navigazione più lunga della colonna dei contenuti se vogliamo avere un footer a larghezza piena

 

HTML

CSS

la navigazione deve essere preceduta dai contenuti

il container viene dichiarato position:relativeper consentire il posizionamento al suo interno

Il div dei contenuti lascia spazio sulla destra per la navigazione

permette al footer di disporsi a fondo pagina riprendendosiil flusso degli elementi

la navigazione è posizionata assolutamente

<body>
    <div id="container">
        <div id="header"></div>
        <div id="content"></div>
        <div id="navigation"></div>
        <div id="footer"></div>
    </div>
</body>

div#container{
    position: relative;
    }

div#content{
    margin-right: 200px;
    }

div#navigation{
    position: absolute;
    top: 80px;/*l' altezza dell' header*/
    right: 0;
    width: 180px;  /*un po' di meno per evitare l' uso del padding*/
    }

22 Layout a due colonne fluidi

Le versioni fluide presentano un indubbio vantaggio: sono già pronte per la stampa. Hanno uno svantaggio rispetto alle versioni fisse: stringendo al limite la finestra del browser il testo delle due colonne si sovrappone, fino a far scivolare la navigazione parzialmente sotto i contenuti nel caso della versione con la proprietà float.

proprietà min-width

non è supportata da Internet Explorer, nè nella versione 5.x nè nella 6. Ha effetto invece sui browser Gecko e Opera

div#container{
    min-width: 600px;
    }

Per Internet Explorer

è una soluzione propretaria e non standard

è un espressione condizionale ternaria che dice ad Internet Explorer: se la larghezza della finestra del browser è maggiore di 600 pixels, dai al container tutta la larghezza possibile, altrimenti assegna al container una larghezza di 600 pixels

div#container{
    width:expression(document.body.clientwidth < 600 ? "600px" : "auto" );
    }

·        header

·        navigazione

·        contenuti

·        sezione extra

·        footer

23 Layout a tre colonne: introduzione

la sezione dei contenuti dovrebbe essere la più corposa, e quindi la colonna centrale la più lunga.

la versione a tre colonne con i float rispetto all'analogo con posizionamenti ha il pregio di non imporre vincoli sulla lunghezza relativa delle colonne in presenza del footer. D'altra parte, vincola l'ordine di codifica dell'HTML.

la tendenza è avere le due colonne laterali a larghezza fissa e la colonna centrale fluida. Le due colonne generalmente si aggirano attorno ai 150-200 pixels di larghezza ciascuna

Per ottenere colonne laterali elastiche, basterà dimensionare il font-size del body in percentuale e dimensionare le colonne laterali e i margini della colonna centrale in em: questa tecnica non può andar bene, però, con layout che usano immagini di background.

Per la scelta della larghezza totale, c'è da dire che un layout a tre colonne si presenta generalmente fluido, a larghezza totale, occupa cioè in ampiezza tutta la larghezza della finestra del browser

25 Dettagli da non trascurare

Internet Explorer non lo consente per caratteri dimensionati in pixels. Usare quindi una misura relativa è una scelta più attenta verso l'utente

dimensionamento in em accordato con il dimensionamento relativo dei font

margini e padding orizzontali di un elemento, questi dovrebbero essere concordi con l'unità di misura della sua dimensione orizzontale: se per esempio abbiamo dimensionato le colonne laterali in pixel, margini e padding dovrebbero essere espressi in pixel

<body>
    <div id="container">
        <div id="header"></div>
        <div id="navigation"></div>
        <div id="extra"></div>
        <div id="content"></div>
        <div id="footer"></div>
    </div>
</body>

26 Layout a tre colonne con float

Le due colonnedevonoprecedere il contenuto nel codice HTML