Dreamweaver - Flash - Ultradev - Swish - Photoshop - Html - Php - Php Nuke - Applet java - Gif animate
Home page
Dreamweaver
Flash
Ultradev
Swish
Photoshop
Html
Php
Php Nuke
Applet java
Asp
Javascript
Gif animate
Creare e gestire pagine con Frame (elemento FRAME)

Amati e odiati, utili o inutili, benfatti o pessimi i frames sono strumenti entrati ormai nella consuetudine del web, e perfettamente gestiti da tutti i browser. I detrattori dei frames affermano l'inutilita' di suddividere ulteriormente le pagine web; pagine che in ultima analisi possono risultare poco leggibili. Altri, pensano che i frames possano rendersi utilissimi evitando di caricare le stesse immagini e mantenendo ordinata la struttura e i contenuti del sito. Naturalmente abusare dei frames puo' portare a traguardi di pessima impostazione grafica, giungendo ad un risultato opposto rispetto a quello preventivato.
Un punto certamente a sfavore dei frames e' la loro incompatibilita' con i programmi di navigazione dei non vedenti che davanti a tali strumenti si bloccano, non permettendo la lettura delle pagine.
Una buona soluzione e' quella di creare una versione frame ed una versione senza frame
Come si creano i frames?
Prima di tutto diamo uno sguardo ai comandi HTML per la gestione dei frame.
N2.0 Documento Frame <FRAMESET></FRAMESET> (al posto di <BODY>)
N2.0 altezza in righe <FRAMESET ROWS=,,,></FRAMESET> (pixel o %)
N2.0 altezza in righe <FRAMESET ROWS=*></FRAMESET> (* = misura relativa)
N2.0 larghezza in colonne <FRAMESET COLS=,,,></FRAMESET> (pixel o %)
N2.0 larghezza in colonne <FRAMESET COLS=*></FRAMESET> (* = misura relativa)
N3.0b larghezza della cornice <FRAMESET BORDER=?>
N3.0b cornice <FRAMESET FRAMEBORDER="yes|no">
N3.0b colore della cornice <FRAMESET BORDERCOLOR="#$$$$$$">
N2.0 Definizione del Frame <FRAME> (contenuto di ogni singolo riquadro)
N2.0 documento da visualizzare <FRAME SRC="URL">
N2.0 denominazione del frame <FRAME NAME="***"|_blank|_self|_parent|_top>
N2.0 larghezza dei margini <FRAME MARGINWIDTH=?> (margine destro e sinistro)
N2.0 altezza dei margini <FRAME MARGINHEIGHT=?> (margine alto e basso)
N2.0 barra di scorrimento? <FRAME SCROLLING="YES|NO|AUTO">
N2.0 dimensione non modificabile <FRAME NORESIZE>
N3.0b cornice <FRAME FRAMEBORDER="yes|no">
N3.0b colore della cornice <FRAME BORDERCOLOR="#$$$$$$">
N2.0 contenuto in assenza di frame <NOFRAMES></NOFRAMES> (per i vecchi browsers)


Per creare una pagina divisa in frame e' necessario creare piu' files HTML richiamati da un file principale che e' poi quello che ne permette la gestione. Prima di tutto quindi bisogna impostare questo file "sorgente", e poi successivamente gli altri files che compongono il frame.

Consideriamo di dover creare una finestra divisa in frame come da figura, con un frame in alto fisso (nel quale caricheremo il file "top.htm" da creare a parte)e un frame centrale (nel quale caricheremo il file "central.htm" da creare a parte) il quale cambi a seconda della pagina che si dovra' visualizzare. Come scritto sopra questi due frames devono essere gestiti da un terzo files il quale dovra' richiamarli assegnando loro una parte della pagina. Ecco il codice di questa pagina:


<FRAMESET rows="80,*">
<frame name="alto" src="top.htm">
<frame name="centrale" src="central.htm">
</FRAMESET>


GUARDARE: esempioFRAME1.htm

Come si vede il codice del frame e' racchiuso tra i comandi <FRAMESET></FRAMESET> che si comportano come gli usuali comandi <HTML></HTML>.
La grandezza dei frame (o meglio lo spazio che ognuno di essi deve occupare della pagina) e' stabilita dal comando rows="80,*, che sta a significare che il frame alto (che in questo caso e' una riga, "rows") deve essere di 80 pixels, mentre quel "*" sta a significare che tutto il resto deve essere assegnato al frame centrale. Avremmo potuto esprimere anche in percentuali le grandezze dei frames, in questo modo:
<FRAMESET rows="20%,*">


Impostati i due parametri <FRAMESET></FRAMESET> all'interno di essi si definiscono i nomi e i files da richiamare nei due frames creati. E' necessario dare un nome al frames (name="alto") e indicare il file HTML che dentro al frame dovra' essere caricato (SRC="top.htm"). Si devono quindi previamente creare due files di nome "top.htm" e "central.htm".

Nota come sia importante la posizione all'interno del codice per la corretta interpretazione da parte del browser. Se infatti si invertono gli ordini in questo modo:
<FRAMESET rows="80,*">
<frame name="centrale" src="central.htm">
<frame name="alto" src="top.htm">
</FRAMESET>

Il browser invertira' l'ordine di assegnazione e carichera' il file "central.htm" nel frame superiore e il file "top.htm" nel frame centrale.

GUARDARE: esempioFRAME1inverso.htm

Per creare due frame verticali e' sufficiente sostituire a "rows" il termine "cols":

<FRAMESET cols="100,*">

<frame name="sx" src="sx.htm">
<frame name="centrale" src="central.htm">

</FRAMESET>

GUARDARE: esempioFRAME2.htm


I vecchi browsers non supportavano i frames per cui, nella prospettiva che le pagine vengano visualizzate da uno di questi "vecchi" software, e' utile inserire del codice che avverta della presenza di frames e della impossibilita' da parte del browser di visualizzarle. Ecco il codice da inserire:
<noframe>

<HTML>
<body>

Attenzione. Il tuo browser non supporta l'opzione dei frame. Per visualizzare queste pagine e' necessario scaricare un borwser che supporti tali opzioni. Ti consiglio Netscape 3.0 o superiore.

</body>
</html>

</noframe>


E' possibile adottare contemporaneamente una divisione sia in colonne (cols) che in righe (rows), in modo tale da creare una finestra divisa in piu' frames. Vediamo come si deve operare sul codice HTML del documento a seconda del numero e della posizione dei frames che si intendono creare.
<frameset rows="100,*"> <frame name="alto" src="top.htm"><frameset cols="150,*"> <frame name="sx" src="sx.htm.htm"><frame name="centrale" src="central.htm"> </frameset> </frameset>
GUARDARE: esempioFRAME3.htm

<frameset cols="120,*"> <frame name="sx" src="sx.htm"><frameset rows="100,*"> <frame name="alto" src="top.htm"> <frame name="centrale" src="central.htm"> </frameset> </frameset>

GUARDARE: esempioFRAME4.htm


<frameset cols="120,*"> <frame name="sx" src="sx.htm"><frameset rows="20%,60%,20%,*"> <frame name="alto" src="top.htm"> <frame name="centrale" src="central.htm"> <frame name="basso" src="basso.htm"> </frameset> </frameset>


<frameset cols="75%,25%"> <frameset rows="20%,80%*"> <frame name="alto" src="top.htm"> <frame name="centrale" src="central.htm"> </frameset> <frame name="dx" src="dx.htm"></frameset>

<frameset cols="75%,25%"> <frameset rows="20%,80%"> <frame name="alto" src="top.htm"><frameset cols="20%,80%"> <frame name="sx" src="sx.htm"><frame name="centrale" src="central.htm"> </frameset> </frameset> <frame name="dx" src="dx.htm"></frameset>

<frameset cols="75%,25%"> <frameset rows="20%,80%"> <frame name="alto" src="top.htm"><frame name="centrale" src="central.htm"> </frameset> <frameset rows="24%,76%"> <frame name="top" src="top2.htm"> <frame name="dx" src="dx.htm"> </frameset> </frameset>

<frameset cols="25%,75%"> <frameset rows="80%,20%"> <frame name="alto" src="top.htm"> <frame name="basso" src="basso.htm"> </frameset> <frame name="centrale" src="central.htm"> </frameset>

<frameset rows="20%,60%,20%"> <frame name="alto" src="top.htm"><frame name="centrale" src="central.htm"><frame name="basso" src="basso.htm"> </frameset>

<frameset cols="20%,60%,20%"> <frame name="sx" src="sx.htm"> <frame name="centrale" src="central.htm"><frame name="dx" src="dx.htm"> </frameset>


Per eliminare il bordo grigio dei frames si deve inserire il seguente codice:
<frameset cols="20%,60%,20%" border=0>

Per impedire che i frames vengano ridimensionati dal visitatore:
<frame name="alto" src="top.htm" noresize>

Per eliminare sempre le barre di scorrimento (scrollbars):
<frame name="alto" src="top.htm" scrolling="no">

Per renderle sempre visibili:
<frame name="alto" src="top.htm" scrolling="yes">

Per renderle visibili solo quando servono:
<frame name="alto" src="top.htm" scrolling="auto">

Per regolare la distanza dal contenuto del frame dal margine alto (manginheight) e sinistro e destro (marginwidth):
<frame name="alto" src="top.htm" marginheight=2 marginwidth=5>



Per quanto riguarda i links all'interno dei frames (cioe' come caricare una pagina in una frame diverso da quello in cui si trova il link) si deve far riferimento al nome che in fase di realizzazione abbiamo assegnato ai vari frames. Nome che non si riferisce al file ma a quanto scritto dopo "name=". In questo caso, per esempio:

<frame name="alto" src="top.htm">

il nome assegnato e' "alto".

Consideriamo la seguente pagina divisa in frames:
<frameset cols="20%,60%,20%"> <frame name="sx" src="sx.htm"> <frame name="centrale" src="central.htm"></frameset>

Consideriamo che da un link presente su "SX", dobbiamo caricare un'altra pagina sul frame "Centrale".

Se il link, presente sul frame "SX", fosse semplicemente:

<A HREF="nuova.htm">Clicca</A>

la pagina verrebbe caricata all'interno dello stesso frame (cioe' "SX"), perche' in assenza di comandi adatti il browser capisce di dover caricare la nuova pagina nello stesso frame in cui e' presente il link.

L'esatto codice e':

<A HREF="nuova.htm" TARGET="centrale">Clicca</A>


Altro uso fondamentale del comando <TARGET> e' quello di richiamare un link ad un'altra pagina la quale verra' visualizzata a pieno schermo, eliminando tutti i frame preesistenti.
Ecco il codice:

<A HREF="nuova.htm" TARGET="_parent">Clicca</A>


Se inserisci il codice:

<base target="_top">

in testa al documento HTML tutti i link presenti nella pagine elimineranno i frame esistenti, senza necessita' di inserirli in ogni link.


Un'altra necessita' puo' essere quella di caricare, con un solo click, due o piu' frames (naturalmente la finestra deve essere divisa in almeno tre frames).
Consideriamo una pagina suddivisa come nella figura:
<frameset cols="120,*"> <frame name="sx" src="sx.htm"><frameset rows="100,*"> <frame name="alto2" src="top.htm"> <frame name="centrale3" src="central.htm"> </frameset> </frameset>


La nostra necessita' e' di inserire un solo link nel frame di "SX" che carichi contemporaneamente due pagine diverse nei due frames di destra: "alto" e "centrale". Per fare questo e' necessario inserire qualche riga di codice javascript. La prima parte del codice va inserita tra <HEAD></HEAD>:

<HEAD>
<script language="JavaScript">
<!-- Hiding
function loadtwo(page2, page3) {
parent.alto2.location.href=page2;
parent.centrale3.location.href=page3;
}
// -->
</script>
</HEAD>

Mentre la seconda parte va inserita tra <BODY></BODY> dove si vuole inserire il link:

<BODY>
<FORM NAME="buttons">
<INPUT TYPE="button" VALUE="Clicca"
onClick="loadtwo('nuovo1.htm','nuovo2.htm')">
</FORM>
</BODY>


 


Imposta come pagina iniziale
Aggiungi ai Preferiti
Motore di Ricerca Italiano
  sito segnalato da www.caciara.it il nuovo mega portale
copyright © 1999-2003  All right reserved