Argomenti trattati: i layer nell'implementazione di Netscape Navigator.
L'oggetto layer corrisponde a al tag <LAYER></LAYER> dell'HTML, proprio di Netscape Navigator per le versioni 4 e 5. Questo oggetto non è rappresentato su MSIE, né è stato accettato come uno standard.
Il suo utilizzo è pertanto limitato e non funzionerà con browser più recenti o con case produttrici differenti.
Esso può inoltre essere utilizzato attraverso i cascading style sheet,
tramite il tag <DIV></DIV>. E' presente su questo sito un esempio
al riguardo, che tratta anche il posizionamento dinamico degli elementi del
documento.
Il layer, o livello, corrisponde a un blocco nel documento HTML con
caratteristiche proprie, rispetto al resto della pagina, ed è nato per
permettere un maggior dinamismo negli elementi delle pagine HTML, di per sé
statiche.
L'oggetto layer può essere richiamato in più modi attraverso il codice JavaScript:
(......) <STYLE TYPE="text/css"> <!-- #layer1 {position:absolute;top:20px; left:5px;background-color:#CC00EE;border-width:1; border-color:#CC00EE;width:200px;} --> </STYLE> <!-- ogni stile definito nel documento che possegga una posizione relativa o assoluta, sarà visto da Netscape come un livello, ovvero come un layer. Generalmente, ciò equivale a richiamare nel documento un ID in un tag <DIV> o <SPAN> che implementi lo stile considerato. --> <BODY BGCOLOR=white> <DIV ID="layer1"> <H1>Questo è un livello!!!</H1> <P>Questo è un paragrafo in un livello!</P> </DIV> </BODY> (.......) // OPPURE: (......) <BODY> <LAYER ID="layer1" TOP="300" LEFT="100" BGCOLOR=yellow CLASS="mystyle"> <H1>Questo è un livello!!!</H1> <P>Questo è un paragrafo in un livello!</P> </LAYER> </BODY> (......) <!-- attenzione: va notato che un layer può possedere uno stile proprio, altrove definito. --> |
In questo caso, si possono usare le 3 seguenti modalità:
dato il layer mylayer, è possibile accedervi tramite JavaScript con uno di
questi metodi:
- document.layer.mylayer;
- document.layers["mylayer"];
- document.layers[indice_numerico_del_layer_nel documento]; // dove l'indice numerico parte da zero
La posizione di un layer è definita a partire dall'angolo in alto a sinistra
del documento, attraverso gli attributi top e left:
<LAYER ID="layer1" TOP="300"
LEFT="100" BGCOLOR=yellow CLASS="mystyle">
Per definizione, la posizione di un layer è considerata absolute
(assoluta rispetto al resto del documento), ma esiste anche la possibilità di
definirla come relativa rispetto agli altri elementi del documento, quindi relative.
Con questo proposito Netscape ha messo a disposizione l'ilayer
(inflow layer), la cui caratteristica è appunto quella di posizionarsi nel
flusso del documento:
(......) <ILAYER ID=ilayer1> <P>Questo è un paragrafo in un ilayer</P> </ILAYER> <STYLE type="text/css"> <!-- #ilayer1 {position:relative; } --> </STYLE> (......) |
Proprietà ed eventi degli oggetti layer e ilayer:
Proprietà | |
---|---|
position | Viene usata se il livello viene definito tramite il tag <DIV> o <SPAN>: sarà absolute per il layer, relative per l'ilayer |
id | Può corrispondere all'ID nel
CSS che definisce il layer, oppure al nome del tag <LAYER>. Esiste anche un attributo name, generalmente meno utilizzato |
left, top | Corrispondono alla distanza orizzontale e verticale dall'angolo in alto a sinistra del documento che contiene il livello |
pagex, pagey | Corrispondono, solo per il tag <LAYER>, alla posizione dll'angolo in alto a sinistra del livello stesso, piuttosto che del documento che lo include |
src, source-include | Definisce la pagina esterna
cui il livello si collega, ad esempio: src="miohtml.htm". Se si vuole usare un CSS, deve essere invece utilizzato il seguente codice: source-include:url("miohtml.htm"); |
z-index, above, below | z-index definisce la
posizione in "profondità" del livello, come se più pagine si
disponessero l'una sull'altra. Se un layer ha z-index="2", si troverà sovrapposto al layer che ha z-index="1". Si possono usare come valori solamente degli interi positivi. gli attributi above e below possono invece essere utilizzati soltanto con il tag layer, e non hanno corrispondenza nei CSS. Determinano rispettivamente il livello sopra e sotto un livello rispetto a quello immediatamente successivo. |
width, heigth | Specificano la larghezza e l'altezza del livello |
clip | Definisce l'area di
visibilità del livello, come se si trattasse di un sottorettangolo dello
stesso. Si può definire sia nel tag <LAYER> che attraverso i CSS, nel seguente modo: <LAYER CLIP="20,20,50,100"> clip:rect(0,100,100,0); /* per i CSS */ Questo vuol dire che soltanto un frammento rettangolare del livello sarà mostrato e reso disponibile alla visualizzazione. Da notare che, se invece di quattro coordinate ne vengono definite 2, ad esempio: <LAYER CLIP="50,100"> questo equivale a definire : <LAYER CLIP="0,0,50,100"> La posizione va dall'angolo in alto a sinistra dell'area all'angolo in basso a destra della stessa. |
visibility | Corrisponde alla visibilità
del livello, e può essere richiamata sia dai CSS che attraverso il codice
JavaScript e direttamente dal tag <LAYER>. Può assumere i seguenti valori: 1) INHERIT: il layer eredita la proprietà visibility dal documento o dal livello che lo contiene, questo è il valore di default; 2) SHOW: il layer è visibile; 3)HIDE: il layer non è visibile, ma occupa ugualmente lo spazio e la posizione ad esso assegnata tramite codice; |
bgcolor, background-color | Corrisponde al colore di sfondo del documento, definito rispettivamente tramite il tag <LAYER> e tramite il CSS |
background, background-image | Corrisponde all'immagine di sfondo del documento, definita rispettivamente tramite il tag <LAYER> e tramite il CSS |
Per i browser che non supportano i layers è possibile definire il tag:
<NOLAYER></NOLAYER>,
attraverso il quale è possibile una gestione differenziata del browser.
Certamente una delle caratteristiche di maggior effetto dell'oggetto layer è
quella di permettere il movimento di sezioni del documento. Per fare questo, è
possibile utilizzare le proprietà e i metodi JavaScript appositamente forniti dallo stesso
oggetto.
Molte delle proprietà, come si può vedere, corrispondono direttamente
a quelle dell'oggetto come definto tramite il tag <LAYER> o tramite i CSS
e non sono spiegate in quanto discusse discusse sopra:
Proprietà: | |
---|---|
document | il document contenuto nel layer |
name | il nome del layer (non usato: generalmente si usa id) |
left e top | |
pageX e pageY | |
zIndex | |
visibility | |
clip.top clip.right clip.left clip.bottom clip.width e clip.height |
Rispetto a quanto spiegato precedentemente, si
aggiungono clip.width e clip.heigth, rispettivamente equivalenti a: clip.rigth=clip.left + mio_valore; clip.bottom=clip.top + mio_valore; |
background | |
bgColor | |
siblingAbove | l'oggetto layer superiore a quello considerato, o null se l'oggetto è quello superiore |
siblingBelow | l'oggetto layer inferiore a quello considerato, o null se l'oggetto è quello inferiore |
above | |
below | |
parentLayer | il documento o il layer che contiene il livello considerato |
src |
I metodi invece, permettono di spostare e ridimensionare il livello:
Metodi: | |
---|---|
moveBy(x,y) | Sposta secondo una posizione assoluta il livello considerato |
moveTo(x,y) | Sposta il livello secondo una posizione assoluta, o relativa secondo la proprietà position del layer o ilayer considerato, come se venissero settate le proprietà top e left |
moveToAbsolute(x,y) | Sposta il livello nella pagina, considerata come window, indipendentemente dal livello o dal frame o dal documento che lo contiene |
resizeby(width, height) | Ridimensiona il livello |
resizeTo(width, heigth) | Ridimensiona il livello |
moveAbove(altro_layer) | Sposta il layer sopra altro_layer |
moveBelow(altro_layer) | Sposta il layer sotto altro_layer |
load(src, width) | carica nel layer un differente documento HTML, e ne ridimensiona contemporaneamente la proprietà width, ovvero la larghezza |
Esempi di applicazione dei metodi potrebbero essere:
document.mylayer.moveTo(200,300);
document.layers["mylayer"].moveBelow("upper_layer");
E' importante ricordare che l'oggetto layer non è più disponibile nelle versioni di Navigator dalla 6 in poi (vedi gli approfondimenti); l'implementazione del browser si è invece orientata verso le specifiche del W3C.