7Posizionare gli elementi sulla pagina con i fogli di stile CSS

Transcript

7Posizionare gli elementi sulla pagina con i fogli di stile CSS
7
Posizionare
gli elementi
sulla pagina con
i fogli di stile CSS
Posizionare gli elementi sulla pagina in modo relativo
Posizionare gli elementi in modo assoluto
Impostare il posizionamento 3D (Z-Order) con i fogli di stile
Impostare le dimensioni con il ritaglio
Nascondere gli elementi
Gestire il testo in eccedenza
HTML 4 I Portatili
Il posizionamento convenzionale degli elementi sulla pagina è in grado di
potenziare l’efficacia del linguaggio HTML convenzionale e tradizionale. Allo
stesso modo, utilizzando tabelle complesse (vedi il capitolo 8, “Utilizzare le
tabelle per strutturare le pagine”) è possibile controllare con precisione gli elementi che compongono la struttura della pagina.
Tuttavia, entrambi gli approcci sono soggetti a limitazioni non ancora facilmente superabili. Al contrario, il posizionamento basato sui fogli di stile può essere
utilizzato per inserire con precisione gli elementi sulla pagina.
Inoltre, questo tipo di posizionamento consente agli oggetti di sovrapporsi tra
loro – simulando un effetto 3D – o addirittura di sparire e ricomparire. Questi
fattori efficaci rendono il posizionamento con i fogli di stile CSS la scelta
migliore per gli sviluppatori.
Il posizionamento basato sui fogli di stile si basa sull’inserimento degli elementi
in una casella, che sarà poi sistemata a sua volta sulla pagina. Questa casella
prende il nome di casella di associazione. Le caselle associate vengono create
con i fogli di stile CSS utilizzando i tag <DIV> e <SPAN> negli stili in linea e i
selettori in quelli incorporati e collegati (vedi il capitolo 4, “Fogli di stile CSS”).
Perfino un’intestazione, come H2, crea una casella invisibile dietro il testo in
cui verrà inserito. È infatti questa invisibile casella a essere posizionata, non il
testo vero e proprio.
■
Posizionare gli elementi sulla pagina in modo relativo
Il posizionamento relativo viene eseguito combinando la proprietà position
con il valore relative (relativo). In seguito, puoi effettuare una selezione tra
più attributi di posizionamento, come TOP (in alto), BOTTOM (in basso), LEFT (a
sinistra), RIGHT (a destra) o altro. Specifica quindi un valore numerico seguito
da un’unità di misura. Digitando 25 px, l’oggetto viene posizionato a una
distanza relativa pari a 25 pixel dall’ultimo elemento sulla pagina.
1. Seleziona un selettore in un foglio di stile incorporato o collegato.
2. Rientra di alcuni spazi, per esempio 5. Quindi, digita la proprietà position
(7.1).
7.1
<STYLE>
.h1 {
position:
</STYLE>
114
7: Posizionare gli elementi sulla pagina con i fogli di stile CSS
3. Adesso, aggiungi il valore relative e termina la dichiarazione con un punto
e virgola (7.2).
7.2
<STYLE>
.h1 {
position: relative;
</STYLE>
4. Spostati alla riga seguente e rientra di nuovo di alcuni spazi.
5. Aggiungi la proprietà top seguita dal valore associato. Termina la dichiara-
zione con un punto e virgola (7.3).
7.3
<STYLE>
.h1 {
position: relative;
top: 0px;
</STYLE>
Puoi utilizzare questa tecnica anche con gli stili in linea. In questo caso,
inserisci semplicemente ogni dichiarazione nell’attributo style del tag di tua
scelta. Tutte le dichiarazioni devono essere inserite sulla stessa riga, come
avviene con i fogli di stile incorporati o collegati.
6. Spostati ancora alla riga seguente e aggiungi la proprietà left seguita dal
valore associato; ricordati di terminare la dichiarazione (7.4).
7.4
<STYLE>
.h1 {
position: relative;
top: 0px;
left: 250px;
</STYLE>
7. Vai a capo un’altra volta e concludi il gruppo di regole inserendo una paren-
tesi graffa chiusa (7.5).
115
HTML 4 I Portatili
7.5
<STYLE>
.h1 {
position: relative;
top: 0px;
left: 250px;
}
</STYLE>
Questo tipo di posizionamento può essere utilizzato anche con le immagini.
Non applicando alcun foglio di stile, la grafica viene inserita nella posizione
predefinita (7.6). Utilizzando invece uno stile, come mostrato nella figura 7.3,
l’immagine si sposta nella nuova posizione (7.7).
7.6
7.7
116
7: Posizionare gli elementi sulla pagina con i fogli di stile CSS
La principale limitazione incontrata utilizzando il posizionamento basato sui
fogli di stile è la mancanza di compatibilità e di supporto nei browser. Tali
limitazioni restringono per il momento l’applicazione di questo approccio.
Tuttavia, l’elevato livello di efficacia offerto dal metodo in oggetto stimola gli
sviluppatori a continuare lo studio e – quando appropriato – l’utilizzo dei
fogli di stile CSS nel posizionamento degli elementi.
■
Posizionare gli elementi in modo assoluto
Il posizionamento assoluto inserisce la casella relativa a un tag o selettore specifico sul bordo della finestra del browser. Il risultato ottenuto è più complesso di
quello offerto dal posizionamento relativo. Se hai utilizzato un foglio di stile per
definire la posizione di un selettore H1, tutte le intestazioni di livello uno verranno inserite nella stessa posizione assoluta.
Puoi però creare regole da applicare ai tag in linea, in quanto vengono tutti
gestiti singolarmente. A tal fine, avrai bisogno di combinare la proprietà position con il valore absolute (assoluto) e di concludere la dichiarazione della
posizione specificando un valore per l’attributo style.
1. Per creare un ID, inserisci il simbolo # e digita una descrizione come faresti
per creare una classe (7.8).
7.8
<STYLE>
#offset
</STYLE>
2. Inserisci una parentesi graffa e passa alla riga seguente.
3. Digita la dichiarazione di posizione absolute (7.9).
7.9
<STYLE>
#offset {
position: absolute;
</STYLE>
117
HTML 4 I Portatili
4. Posizionati sulla riga seguente e aggiungi la dichiarazione.
5. Aggiungi altre dichiarazioni in modo da completare l’insieme di regole (7.10).
7.10
<STYLE>
#offset {
position: absolute;
top: 200px;
left: 300px;
}
</STYLE>
Il posizionamento assoluto o relativo può essere applicato a testo (come
illustra questo capitolo), immagini e altri elementi quali animazioni multimediali.
6. Individua il tag che desideri associare alla posizione.
7. Aggiungi l’attributo id (7.11).
7.11
<BODY>
<DIV id=>
</BODY>
8. Digita un valore corrispondente al nome dell’attributo ID creato nel foglio
di stile (7.12).
7.12
<BODY>
<DIV id=”offset”>
</BODY>
9. Verifica il risultato nel browser (7.13).
118
7: Posizionare gli elementi sulla pagina con i fogli di stile CSS
7.13
Nell’esempio, l’immagine è stata posizionata a una distanza assoluta pari a 200 pixel dalla parte superiore della finestra del browser e 300 pixel dal lato sinistro.
Sebbene il posizionamento assoluto e relativo siano supportati dai browser
della generazione 4.0, è importante precisare che Internet Explorer e
Netscape impostano gli assi x e y su posizioni differenti. Per questo motivo,
potresti rilevare alcune differenze in merito al posizionamento degli elementi aprendo la pagina in entrambi i browser.
Puoi utilizzare gli ID come base di uno stile in linea che sarà poi richiamato
utilizzando la proprietà id. Questa proprietà è una parte fissa dei fogli di
stile, sebbene il suo valore sia costituito da parole composte e descrittive,
quali “offset” o “rightside”. Come avviene con le classi, dovresti essere in
grado di comprendere i valori ID in modo da identificare costantemente le
loro azioni durante il posizionamento degli oggetti sulla pagina.
■
Impostare il posizionamento 3D (Z-Order) con i fogli di stile
Il posizionamento è principalmente un processo geometrico. L’asse orizzontale
viene indicato come asse x, mentre quello verticale è indicato come asse y.
Esiste un terzo asse, l’asse z, reso disponibile in HTML grazie al posizionamento assoluto. Mentre l’asse x definisce il posizionamento orizzontale degli ele119
HTML 4 I Portatili
menti e l’asse y quello verticale, l’asse z posiziona gli elementi lungo una terza
dimensione, offrendo alla struttura un senso di altezza, larghezza e profondità.
Per posizionare gli elementi lungo gli assi x e y, puoi utilizzare metodi convenzionali; tuttavia, senza i fogli di stile, sarebbe impossibile includere l’asse z, o
“Z-Order”.
Il posizionamento lungo l’asse z è reso possibile combinando la proprietà zcon un valore numerico. Per avere un’idea di come operi questo approccio, inserirai in modo assoluto due elementi nella stessa dimensione e utilizzerai
l’asse z per farli apparire entrambi sulla pagina.
index
1. In un foglio di stile collegato o incorporato, aggiungi una classe denominata
front.
2. Inserisci uno spazio e la parentesi graffa aperta; quindi, spostati sulla riga
seguente e aggiungi la dichiarazione di posizione assoluta.
3. Aggiungi le dichiarazioni per la posizione degli elementi e per altre proprietà, per esempio il colore (7.14).
7.14
<STYLE>
.front {
position: absolute;
top: 200px;
left: 300px;
color: white;
background-color: black;
</STYLE>
Queste dichiarazioni indicano misure standard lungo gli assi x e y.
4. Per posizionare l’elemento in base alla profondità della pagina, aggiungi la
proprietà z-index seguita da un valore numerico. Per esempio, puoi posizionare un’immagine lungo gli assi x e y e definire in seguito un valore numerico per posizionarla anche lungo l’asse z. Per ottenere un senso di profondità
più evidente, puoi utilizzare questo valore anche per posizionare gli altri elementi sulla pagina (7.15).
120
7: Posizionare gli elementi sulla pagina con i fogli di stile CSS
7.15
<STYLE>
.front {
position: absolute;
top: 200px;
left: 300px;
color: white;
background-color: black;
z-index: 2;
</STYLE>
5. Termina la regola con una parentesi graffa chiusa; posizionati quindi sulla riga
seguente e aggiungi una nuova classe, questa volta denominandola back (7.16).
7.16
<STYLE>
.front {
position: absolute;
top: 200px;
left: 300px;
color: white;
background-color: black;
z-index: 2;
}
.back {
</STYLE>
6. Inserisci uno spazio e la parentesi graffa aperta; spostati quindi sulla riga
seguente e aggiungi la dichiarazione di posizione assoluta.
I fogli di stile ti consentono di utilizzare diverse unità di misura. Al posto dei
pixel, prova a impiegare punti (pt), percentuali (%), pollici (in), centimetri
(cm) o em (em). Molti sviluppatori preferiscono ricorrere ai pixel in quanto
anche la risoluzione dello schermo adotta la stessa unità di misura.
7. Aggiungi le stesse dichiarazioni per le posizioni indicate nella classe prece-
dente. Eventualmente, specifica anche altre proprietà (7.17).
121
HTML 4 I Portatili
7.17
<STYLE>
.front {
position: absolute;
top: 200px;
left: 300px;
color: white;
background-color: black;
z-index: 2;
}
.back {
position: absolute;
top: 200px;
left: 300px;
color: white;
background-color: purple;
</STYLE>
8. Inserisci la proprietà z-index seguita da un valore numerico più piccolo;
chiudi quindi la regola (7.18).
9. Nello schema HTML, individua l’elemento da inserire nella posizione frontale e, utilizzando l’attributo di classe, definisci il valore front.
10. Adesso, individua l’elemento da inserire nella posizione back e, utilizzando
l’attributo class, definisci il valore back (7.19).
11. Visualizza il risultato in un browser compatibile con i fogli di stile CSS (7.20).
Noterai che l’elemento inserito nella posizione front appare in primo piano,
mentre quello disposto nella posizione back sembra essere più distante dall’utente.
Utilizzando la proprietà z-index per definire il posizionamento lungo l’asse
z, molti sviluppatori riescono a scrivere il codice pensando in termini tridimensionali. Con un adeguato supporto da parte del browser, questo significa essere in grado di creare strutture con un senso di profondità, senza
dover ricorrere a elementi grafici.
122
7: Posizionare gli elementi sulla pagina con i fogli di stile CSS
7.18
<STYLE>
.front {
position: absolute;
top: 200px;
left: 300px;
color: white;
background-color: black;
z-index: 2;
}
.back {
position: absolute;
top: 200px;
left: 300px;
color: white;
background-color: purple;
z-index: 1;
}
</STYLE>
7.19
<BODY>
<DIV class=”back”>
Non so quale sarà il vostro destino, ma una cosa è certa: quelli
che tra voi saranno davvero felici sono coloro che hanno cercato
e sono riusciti a essere utili.
</DIV>
<DIV class=”front”>
Gli scopi servono come principi attorno a cui organizzare la
propria vita.
</DIV>
</BODY>
123
HTML 4 I Portatili
7.20
Sebbene questi due elementi siano stati posizionati alla stessa distanza assoluta rispetto agli assi x e y,
puoi notare parti distinte di ognuno di essi (evidenziate da diverse tonalità di colore) in quanto vengono
visualizzati lungo l’asse z.
Se utilizzi la versione 4.0 di Netscape Navigator, devi fare molta attenzione
a quali tag HTML utilizzare per posizionare gli elementi lungo l’asse z. Per
andare sul sicuro, limitati ai tag SPAN e DIV. Un altro approccio che potresti
seguire implica l’impiego del tag <LAYER> per mandare a capo gli altri tag in
esso contenuti. Tuttavia, questo tag è stato creato appositamente per
Netscape; di conseguenza, non viene considerato parte dello standard
HTML 4.0.
■
Impostare le dimensioni con il ritaglio
Il ritaglio è un effetto speciale di posizionamento. Se desiderassi creare una
casella di associazione più grande delle informazioni in essa contenute, potresti
definirne le dimensioni e utilizzare quindi la proprietà clip per impostare quelle effettive dell’elemento.
124
7: Posizionare gli elementi sulla pagina con i fogli di stile CSS
Per esempio, questa tecnica può essere utilizzata per aggiungere spazio vuoto
attorno a un’immagine. Sebbene quest’ultima sia inclusa nell’area di ritaglio, il
browser farà riferimento alla casella di associazione, e non al riquadro ritagliato,
per posizionare gli altri elementi sulla pagina.
1. Seleziona un selettore e crea un foglio di stile che comprenda diverse regole,
tra cui quelle per il posizionamento.
2. Aggiungi la proprietà clip.
3. Assegna un valore a questa proprietà utilizzando dimensioni più piccole di
quelle della casella effettivamente posizionata (7.21). In questo caso, otterrai
come risultato un’area di ritaglio circondata da angoli aventi posizione assoluta (7.22).
7.21
<STYLE>
.P {
position: absolute;
top: 20px;
left: 20px;
height: 150px;
color: white;
background-color: black;
clip: rect(25px, 125px, 125px, 25px)
}
</STYLE>
Tutto ciò che non rientra nella sezione ritagliata, non verrà visualizzato. Tuttavia, per risalire alle dimensioni originali della bounding box potrai esaminare gli altri elementi della pagina.
Per ottenere effetti interessanti, ritaglia le immagini già posizionate. Se desideri che la fotografia inserita mostri solamente gli occhi della persona fotografata, puoi inserire gli occhi nell’area di ritaglio. Ricorri a filtri o ad altre
tecniche per mostrare il resto del volto durante un’animazione.
125
HTML 4 I Portatili
7.22
Questo paragrafo non viene visualizzato in quanto sono stati ritagliati i bordi.
■
Nascondere gli elementi
Un altro effetto di posizionamento è nascondere una casella di associazione
dopo averla creata. Utilizza questo approccio per creare spazio vuoto in posizioni specifiche. Per nascondere un elemento, definisci il selettore, specifica la
proprietà visibility e aggiungi l’attributo hidden per ottenere l’effetto desiderato.
1. Crea una classe e aggiungi una dichiarazione che specifichi la posizione o la
dimensione.
2. Inserisci la proprietà visibility.
3. Aggiungi il valore hidden e chiudi il gruppo di regole (7.23). Visualizza il
risultato nel browser (7.24).
126
7: Posizionare gli elementi sulla pagina con i fogli di stile CSS
7.23
<STYLE>
.hidden {
position: absolute;
top: 200px;
left: 200px;
visibility: hidden;
}
</STYLE>
7.24
Questa divertente citazione di Steven Wright appare nella parte inferiore della pagina poiché viene preceduta da altre due citazioni, rese entrambe nascoste con la dichiarazione visibility: hidden.
Un utilizzo interessante di questa tecnica è posizionare una casella di associazione sopra altre caselle già inserite utilizzando l’attributo z-index. Potrai
così nascondere porzioni di altre caselle creando strutture geometriche.
Come avviene con il ritaglio, questa tecnica è applicabile anche alle immagini.
127
HTML 4 I Portatili
Se il foglio di stile non funzionasse, controlla la sintassi scritta e verifica la
versione del tuo browser. Se ancora non riuscissi a ottenere il risultato desiderato, significa probabilmente che si è verificato un problema di incompatibilità. Questo ti consente di capire che il posizionamento deve ancora essere perfezionato prima di diventare applicabile.
■
Gestire il testo in eccedenza
Immagina la situazione opposta del ritaglio. Le informazioni che possiedi eccedono i confini della casella di associazione che hai inserito sulla pagina.
Per risolvere questo problema, utilizza la proprietà overflow. I valori disponibili sono: visible (consente di visualizzare le informazioni che eccedono i limiti
della casella), hidden (nasconde le informazioni in eccedenza e dispone in modo
corretto gli elementi circostanti) e scroll (ritaglia le informazioni in eccedenza
e inserisce due barre di scorrimento per consentire la visualizzazione del contenuto rimanente).
1. Seleziona un selettore e aggiungi una dichiarazione a tua scelta.
2. Digita la proprietà overflow.
3. Aggiungi il valore che preferisci e chiudi il gruppo di regole (7.25).
7.25
<STYLE>
P {
position: absolute;
top: 200px;
left: 200px;
color: white;
background-color: black;
overflow: scroll;
}
</STYLE>
4. Visualizza il risultato nel browser (7.26).
128
7: Posizionare gli elementi sulla pagina con i fogli di stile CSS
7.26
Pur essendo legale, il valore scroll non è supportato da Netscape 4.0. Di
conseguenza, questo dimostra che Internet Explorer 5.0 per Windows 98
offre – nel momento in cui è stato scritto questo libro – il miglior supporto ai
fogli di stile.
129