TAG <div> e CSS
Ricalcare la grgilia di impaginazione
PRIMA PARTE: XHTML
UNA STRUTTURA PER I CONTENUTI
• Oltre a caratterizzare i contenuti (titoli, paragrafi, liste,
collegamenti), il linguaggio di marcatura ha il compito di
realizzare la struttura in cui inserire i contenuti stessi
• Per raggruppare elementi da trattare come un oggetto
unico, l’elemento chiave è il tag <div>
• Il tag <div> è un contenitore generico.
PRIMA PARTE: IL VISUAL FORMATTING MODEL
IL FLUSSO
• I diversi box sono inseriti nel così detto “flusso”
• I box a livello di blocco (compresi i box anonimi) si
dispongono uno di seguito all’altro in verticale,
distanziandosi in base ai margini
• I box in linea (compresi i box anonimi) si
dispongono orizzontalmente uno di seguito
all’altro, su una o più linee a seconda dello spazio.
• La loro spaziatura orizzontale è determinata
anche da margini, bordi e padding.
La spaziatura verticale è determinata solo
dall’interlinea (line-height)
p { border:1px solid #00C; }
em{ margin:2em;border:1px solid #C00 }
strong {
border:1px solid #0C0;
padding:0.7em;
}
Modello visuale di CSS – flusso verticale
• La visualizzazione di un documento con CSS avviene identificando lo spazio di
visualizzazione di ciascun elemento del documento.
• Il flusso di dati è sempre dall’alto verso il basso
• Ogni elemento è definito da una scatola all'interno del quale sta il contenuto. Le
scatole sono in relazione alle altre come segue:
• Le scatole degli elementi contenuti stanno dentro alla scatole dell'elemento genitore.
• Flusso normale di tipo blocco: le scatole sono poste l'una sopra l'altra in successione
verticale (come paragrafi).
• L’elemento che contiene le varie scatole, assume la dimensione massima data dalla somma
delle dimenzioni degli elementi in esso contentui
• La posizione di ogni elemento è relativa agli elementi vicini e agli elementi che lo
contengono.
Modello visuale di CSS – Box Model
• Flusso normale di tipo inline: le scatole sono poste l'una accanto all'altra in successione
orizzontale (come parole della stessa riga)
• Gli elementi stanno tutti uno accanto all’altro su una linea orizontale.
• La posizione di ogni elemento è relativa agli elementi vicini e agli elementi che lo
contengono.
• Si utilizza molto per orientare le voci di un menu, realizzato con una lista non odinata ( <ul>
e rispettivi <li>)
• Di solito, per un menu orizzontale, si dichiara una lista non ordinata
• Si dichiarano le voci di menu (“home”, “chi siamo”, “dove”, “contatti”) come dei list item.
• Si associa ad un elemento li e ul il rispettivo selettore con la property display:inline;
li a {
color: white;
display:inline;
padding:10px;
font-weight: bold;
height: 40px;
line-height: 50px;
text-decoration: none;
}
Modello visuale di CSS – Box Model
• Flusso di tipo float: le scatole sono poste all'interno del contenitore e poi spostate
all'estrema sinistra o destra della scatola, lasciando che le altre scatole vi girino intorno.
• La posizione di ogni elemento è relativa agli elementi vicini e agli elementi che lo
contengono.
• Dichiarando un elemento come “float”, è come se lo si staccasse dal normale flusso di
lettura dei blocchi dall’alto verso il basso e lo si stesse posizionando sulla destra o sulla
sinistra del foglio.
Positioning dei blocchi
• Alcune proprietà controllano il tipo di posizionamento e di scatola
• Position: valore; è la proprietà fondamentale per la gestione della posizione
degli elementi: determina la modalità di presentazione di un elemento sulla
pagina
I valori con cui è possibile definire la modalità di posizionamento sono
quattro:
•static;
•relative;
•absolute;
•fixed.
Static
• position: static
• È il valore di default, quello predefinito per tutti gli elementi non
posizionati secondo un altro metodo. Rappresenta la posizione
normale che ciascuno di essi occupa nel flusso del documento.
Position: relative
L’elemento viene posizionato relativamente al suo box
contenitore.
In questo caso il box contenitore è rappresentato dal posto che
l’elemento avrebbe occupato nel normale flusso del documento.
La posizione viene impostata con le proprietà top, left, bottom o right.
Nel posizionamento relativo esse non indicano un punto preciso, ma
l’ammontare dello spostamento in senso orizzontale e verticale rispetto al
box contenitore.
In pratica, con il posizionamento relativo (position: relative;), si va a
modificare la posizione naturale di un elemento traslandola
attraverso l’uso di top, left, bottom o right. Un elemento posizionato
relativamente non è rimosso dal flusso della pagina, ma solo
spostato.
La metafora più semplice per comprendere il
funzionamento è immaginare che sui quattro
lati di un elemento posizionato relativamente
ci siano quattro maniglie che si possono
tirare o spingere: un valore positivo equivale
a spingere, mentre un valore negativo
equivale a tirare l’elemento.
Per esempio, se viene specificato left: 30px
significa che l’elemento viene spinto da
sinistra di 30 pixel. Dichiarando invece top: 20px è come se tirassimo l’elemento dal suo
lato superiore, con il conseguente effetto di
traslarlo verso l’alto di 20 pixel.
PRIMA PARTE: IL VISUAL FORMATTING MODEL
POSIZIONAMENTO RELATIVO
• Il posizionamento relativo altera il normale
flusso dei box a livello di blocco
• Attraverso la dichiarazione
‘position:relative’ è possibile definire un
off-set per il posizionamento del blocco
all’interno del flusso
• L’off-set non altera il posizionamento dei blocchi
che seguono e precedono nel flusso il blocco
interessato
• L’off-set è assegnato tramite le proprietà: top,
right, bottom, left.
p#pr {
position:relative;
left:10px;top:20px;
}
p { padding:5px;margin:5px; }
In pratica serve per spostare un po’ I blocchi (div)
rispetto al normale flusso. Ma non si interrompe il
flusso dei blocchi
Absolute
L’elemento, o meglio, il box dell’elemento, viene
rimosso dal flusso del documento ed è
posizionato in base ai valori forniti con le proprietà
top, left, bottom o right.
un elemento assoluto trova il suo containing block.
Per quanto riguarda le proprietà top, left, bottom o
right, si potrebbe pensare che questi valori siano da
intendersi come delle coordinate. In realtà non è
proprio così, ed è più facile pensare i valori che
queste proprietà possono assumere come vere
distanze.
In pratica il box (div) absolute si stacca dal
normale flusso dei box
PRIMA PARTE: IL VISUAL FORMATTING MODEL
POSIZIONAMENTO ASSOLUTO
• Attraverso la dichiarazione position:absolute è possibile posizionare il box in un
punto esatto della pagina indipendentemente dal flusso
• Un blocco posizionato in modo assoluto è del tutto estratto dal flusso e non ha alcuna
influenza sulla posizione degli altri blocchi
• La posizione è stabilita attraverso le proprietà: top, right, bottom, left a partire da
un determinato punto di riferimento iniziale
• Il valore di top indica la distanza tra il limite superiore del blocco posizionato e il limite
superiore del padding del box di riferimento; lo stesso vale per le altre proprietà right,
bottom e left.
• Il box di riferimento è il primo blocco progenitore posizionato in
modo non assoluto o relativo, oppure l’elemento <html>
PRIMA PARTE: IL VISUAL FORMATTING MODEL
POSIZIONAMENTO ASSOLUTO
• Un blocco posizionato in modo assoluto, se non si specifica un valore per la proprietà width,
assume la dimensione necessaria a contenere gli elementi al suo interno
• Un box in linea posizionato in modo assoluto diviene un box a livello di blocco
<p>(1) …</p>
<p id="pa">(2) …</p>
<p>(3) …</p>
p#pa {
position:absolute;
right:5px; bottom:5px;
margin:0;
}
p { margin:10px 10px; }
Position fixed
• Usando questo valore, il box dell’elemento viene sottratto al normale
flusso del documento.
• con fixed il box contenitore è sempre la la finestra principale del
browser.
Absolute VS relative
• Position fa SEMPRE riferimento al contenitore progenitore di un
elemento e serve per spostare un box mantenendo la sua posizione
nel flusso dei box
Absolute sposta un box a partire da un angolo preciso del primo
progenitore non absolute, solitamente il primo relative.
Esempio di fixed
Scarica

lpositioning DIV_relative_absolute_static_fixed e flusso