| Frames av Kevin Yank ([email protected]) 27 September 1998 |
![]() |
Videreg�ende
N� som du vet hvordan du skal lage frames, er det p� tide � l�re hvordan du skal bruke dem. Denne seksjonen vil l�re hvordan frames innvirker p� m�ten linkene p� sida di fungerer. Deretter skal vi bruke det vi har l�rt til � lage en Web site som anvender en velkjent "menu bar" layout. F�r 'frames' gjorde sin entr�, var det � finne dokumentet som skulle hentes inn det eneste en Web programmerer trengte � bekymre seg om. Med 'frames' har det dukket opp et nytt problem - Hvilken frame b�r dokumentet lastes inn i? Enhver med urlite kjennskap til HTML vet at man oppretter en hypertekstlenke ved � anvende tag'en <A> sammen med HREF attributtet. <A HREF="newdoc.html">...</A>
I utgangspunktet vil newdoc.html bli lastet inn i frame'n der du klikket p� linken. Noen ganger er dette akkurat det du �nsker. Men, hva om du har laget en side med to frames en som inneholder en meny som kan laste dokumenter inn i den andre? I det tilfellet vil du �nske at linkene i meny frame'n er innstilt p� hovedframe'n. Det f�rste du m� gj�re for � oppn� det er � gi dine frames names. Som forklart i det forrige kapittelet, gj�r du dette ved hjelp av NAME attributtet til <FRAME> tag'en. I v�rt eksempel er det greitt � navngi framene v�re menu og main (main=hoved) som vist her:
<FRAMESET COLS="75,*" FRAMEBORDER=0>
For s� � f� alle linkene i menu frame'n til � laste inn dokumentene i main frame'n, m� vi bruke TARGET attributtet til <BASE> tag'en i HEAD delen til ourmenu.html, som er fila som er lastet inn i v�r menu frame.
<HTML>
"Okey, dette er vel og bra," sier du. "Men hva om jeg �nsker at forskjellige linker i en enkelt fil skal laste dokumenter inn i ulike framer?" Det er ikke noe problem! <A> tag'en st�tter ogs� et TARGET attributt som overstyrer samtlige TARGET du m�tte ha spesifisert med <BASE> tag'en.
<A HREF="newdoc.html" TARGET="main">...</A>
Bruker du kodingen ovenfor, kan du bare glemme <BASE> tag'en og plassere TARGET p� alle linkene dine. Men, med mindre du ikke har et klart definert m�l for linkene dine, kan du jo spare litt plass ved � bruke <BASE> tag'en �verst i fila. Siden du ikke alltid �nsker at en link skal laste dokument inn til dine egne frame'r, er det flere spesielle TARGETs du kan bruke. Disse kan brukes enten med <BASE> eller <A HREF> tag'er, og m� skrives inn n�yaktig slik de presenteres her, da de skiller mellom store og sm� bokstaver (case sensitive).
Laster linkm�let til den frame'n som ligger 'over' den aktive, dvs. 'the parent' til den aktive. Enkelt sagt slettes frameset'et som omgir den frame'n der du har linken, og laster inn m�ldokumentet der. Forskjellen p� _parent og _top er kun merkbar dersom du har nested framesets, der du �nsker � laste inn m�ldokumentet i neste oppadg�ende niv� i n�stingen uten � slette eventuelle andre "ytre" frameset. I et enkelt, ikke-nested (n�stet) frameset gj�r _parent og _top det samme. N� som vi har dekket det grunnleggende mht. bruk av frames, skal vi kombinere alt vi har l�rt i forbindelse med at vi gjennomg�r et konkret eksempel. Som de fleste har sett p� Webben, er det sv�rt vanlig � ha en layout der en bruker et menyfelt nedover p� venstresiden av skjermen. I mange slike tilfelle er dette menyfeltet plassert inni en frame slik at man kan scrolle seg gjennom hovedinnholdet p� siden uten � miste menyen av syne. Som vanlig begynner vi med � definere frameset'et v�rt. Vi kaller fila som inneholder frameset'et for index.html, og viser med det at dette er den f�rste fila som blir lastet n�r noen kommer til sida v�r. Akkurat som enhver frameset fil inneholder heller ikke denne noen <BODY> tag, men bruker i stedet <FRAMESET>, <FRAME>, og <NOFRAMES> tag'er til � definere layouten.
<HTML>
Her er det flere ting � kommentere. Vi har brukt FRAMEBORDER=0 i <FRAMESET> tag'en for � skjule de 3D rammene som opprinnelig skiller frames'ene. I mange tilfelle vil dette f� en framesbasert side til � virke mer elegant. Vi har brukt NAME attributtet til <FRAME> tag'en til � gi hver av frames'ene et passende navn. Dette er nyttig n�r vi senere skal definere linker med dertil h�rende m�ldokument. Legg ogs� merke til NORESIZE attributtet i v�r f�rste <FRAME> tag.Dette forhindrer brukeren fra � endre bredden p� menyfeltet (-frame'n), og opprettholder den layouten vi har bestemt. Vi trenger ikke � spesifisere NORESIZE for main frame'n fordi dette g�r automatisk n�r vi bruker NORESIZE for meny frane'n. Vi har alts� to frames. Det er ganske logisk at dersom vi hindrer brukeren i � endre bredden p� den ene, vil han/hun heller ikke kunne endre bredden p� den andre. Til slutt har vi brukt <NOFRAMES> tag'en til � s�rge for en velkomstmelding til brukere med browsere som ikke st�tter frames. Siden vi ikke �nsker � lage en ekstra versjon av v�r site for slike brukere, legger vi ganske enkelt inn en link til den samme fila som vi �nsker � laste inn i v�r main frame ved start. I den fila kan vi ha et lite linke-sett, f.eks. nederst p� sida. Deretter �nsker vi � lage menyen v�r. Som det fremkommer av frameset'et v�rt, vil menyen ligge i mainmenu.html fila. Dette er da en helt normal HTML fil. Vi trenger der en <TITLE> tag. Dette er fordi frames ikke har tittelfelt.
<HTML>
Det som det er viktig � merke seg her, er <BASE> tag'en som vi har brukt for � spesifisere det generelle m�let for linkene i denne fila. Enkelt og greitt f�r den alle linkene i fila til � laste sine m�lfiler inn i main frame'n. Alt som gjenst�r er � sette opp hovedsidene til site'n. Disse skriver vi n�yatig som om det ikke eksisterte noen frames i det hele tatt. Det er ingen grunn til � bruke <BASE> tag'en, fordi vi �nsker at linkene i alle sidene som lastes inn i main-framen, skal lastes inn i den samme main-framen. Pass p� at du husker p� brukere som ikke takler frames, og f�lgelig har et sett navigasjonsmuligheter p� samtlige sider. Jeg har n� s�rget for det du trenger til � lage en ok site. Bruk linkene under til � sjekke resultatet, og bruk gjerne koden til � lage din egen site.
|