| Frames By Kevin Yank ([email protected]) 27 September 1998 |
![]() |
Basic Frames
I denne seksjonen vil vi begynne med � lage et helt grunnleggende sett med vinduer (frameset). Vi skal s� modifisere noen av egenskapene for � f� dem til � se ut og virke slik vi �nsker. Det overrasker ofte folk hvor enkelt det er � sette opp en frames-basert Webside. Enhver rektangul�r seksjon du �nsker � dele browservinduet opp i kalles en frame. For � definere det settet med frames du vil skal vises, trenger du bare � skrive en spesiell HTML fil som definerer st�rrelsen, posisjonen, og f�rstegangsinnholdet til hver frame. Deretter m� du skrive separate HTML filer som skal bestemme innholdet i hver frame, akkurat p� samme m�te som du ville gj�re til vanlig n�r du skriver for hele browservinduet. Ikke bekymre deg om dette ikke sier deg stort s� langt... Jeg kommer tilbake til disse sakene i detalj. La oss s� langt konsentrere oss om den HTML fila som definerer oppsettet av frames (vinduer). Denne fila kan vi enkelt kalle framesettet (engelsk: frameset), og den kan se ut som f�lger:
<HTML>
Legg merke til at denne HTML fila ikke inneholder en <BODY> tag. Merk ogs� bruken av tre nye tag's i denne fila:
<FRAMESET> tag'en overtar plassen til <BODY> tag'en i en "vanlig" HTML fil, og brukes til � gi informasjon om det settet med frames som skal fremkomme i browser vinduet. Under denne tag'en blir det bestemt hvordan vinduet skal deles opp, hvor mange frames det skal v�re, etc. Enhver informasjon vedr�rende det settet med frames vi vil ha, spesifiseres alts� her. La oss ta et konkret eksempel. Tenk deg at du �nsker � lage en Web side som er delt horisontalt p� tvers av midten av browser vinduet. Det vil alts� si at du �nsker to frames, som hver skal bruke 50% av den vertikale plassen i vinduet. Det er viktig � tenke seg frames som deler av den totalt tilgjengelige plassen, fordi det er nettopp det som er utgangspunktet for bruken av <FRAMESET> tag'er:
<FRAMESET ROWS="50%,*">
Dette forteller ganske enkelt browseren: Jeg �nsker et frameset som deler opp vinduet i rader. Av den tilgjengelige plassen skal den f�rste frame'n bruke 50%, og den andre skal bruke det som m�tte v�re igjen.. Legg spesielt merke til at asterisken ("*") st�r for "det som m�tte v�re igjen". mer om dette senere. For � plassere skillet vertikalt (nedover) p� siden i steden, ville du bare skrive f�lgende:
<FRAMESET COLS="50%,*">
Merk deg at HTML tolker "COLS" som "columns". Det betyr at COLUMNS="50%,*" ikke vil fungere! Som du har gjettet <FRAME> tag'en s�rger for spesifisert informasjon til hver enkelt frame. Du m� legge inn det antallet <FRAME> tag'er som samsvarer med antallet frames du spesifiserte med <FRAMESET> tag'en. I v�r sv�rt enkle eksempel vil denne tag'en kun bli brukt til � fortelle browseren hvilken HTML fil den skal laste inn i hver frame:
<FRAME SRC="topframe.html">
S� den f�rste (top) frame i v�rt frameset vil lastes opp med topframe.html som 'innmat', mens den andre (bottom) frame vil inneholde botframe.html. Tilslutt f�lger <NOFRAMES> tag'en <FRAMESET> tag'en, og brukes til � spesifisere det som skal vises til brukere som har browsere som ikke kan h�ndtere frames. Selv om det har blitt sv�rt uvanlig, finnes det fortsatt mange utdanningsinstitusjoner som tillater studentene adgang til internett p� tekstbaserte terminaler. De Web-browserne som brukes i denne sammenheng, f.eks. Lynx, er vanligvis ikke i stand til � vise frames.
<NOFRAMES>
M�ten <NOFRAMES> tag'en virker p�, er � si til enhver browser som ikke st�tter frames: "Ikke vis dette." Siden alle Web browsere som ikke st�tter frames vil v�re uvitende om tag'ene <FRAMESET> og <FRAME>, vil de simpelthen ignorere dem og kun vise teksten i mellom tag'ene. I eksemplet ovenfor har jeg lagt inn en lenke til en versjon av site'n som ikke anvender frames. Selv om det kanskje ikke er helt n�dvendig, er det god praksis � inkludere en melding til brukere av browsere som ikke leser frames at site'n din ikke er tilgjengelig. Du kan jo eventuelt legge inn en oppfordring om � laste ned en ny versjon. Sl�r vi alt dette sammen, s� har vi v�rt enkle oppsett med to frames. Som nevnt ovenfor, blir <FRAMESET> tag'en brukt til � bestemme informasjon om hvordan vinduet skal deles opp i frames. Dette blir gjort ved bruk av ROWS og COLS attributtene til � definere hvorledes henholdsvis radene og kolonnene skal inndeles. Disse inndelingene kan bestemmes p� tre m�ter: prosentvis, i antall pixtler, og som forholdstall. Disse tre metodene kan enkelt vises ved noen f� eksempler. <FRAMESET COLS="50,*,*">
I dette eksemplet vil vinduet bli delt opp i tre kolonner; det f�rste vil bruke en bredde p� 50 pixtler. Den andre og tredje framen vil hver bruke halvparten av den gjenv�rende plassen. <FRAMESET COLS="50%,*,20%">
Dette eksemplet definerer tre kolonner som henholdsvis benytter 50%, 30% og 20% av vinduet. Den f�rste og tredje har den prosentvise dekningsgraden definert, mens den andre bruker de gjenv�rende 30% av vinduet. <FRAMESET ROWS="3*,1*,2*">
Denne gangen vil vinduet deles opp i rader i stedet for kolonner. Den f�rste framen vil bruke halvparten av vinduet, den andre en seksdel, og den siste vil bruke en tredel av vinduet. Dette kan sikkert virke litt forvirrende umiddelbart, men tenk p� det hele som forholdstall. Vinduet er delt opp i 6 like deler (3+1+2=6). Den f�rste framen bruker tre av dem (tre seksdeler er lik en halv), den andre bruker en del (dvs. en seksdel), og den siste framen vil bruke de gjenv�rende to delene (to seksdeler er lik en tredel). <FRAMESET ROWS="30,50%,2*,1*">
Denne gangen vil det v�re fire framesrader. Den f�rste framen vil bruke 30 pikstler av h�yden p� vinduet. Resten fordeles p� de gjenv�rende tre. Den andre framen vil bruke 50% av den totale h�yden p� browser vinduet. Den tredje og fjerde framen bruker resten av den plassen som er igjen i forholdet 2:1. Dette betyr at den andre av disse to vil bruke dobbelt s� mye plass som den andre. Generelt sett anbefales det ikke � blande tre ulike metoder slik det er gjort her. I slike tilfelle anbefaler jeg vanligvis nested (n�stede) framesets for � bedre leselighet og oversiktlighet. Mer om dette senere. Du st�r fritt til enten � bruke ROWS eller COLS attributter hver for seg, eller sammen, for � bestemme oppsettett:
<FRAMESET ROWS="60,50%,*" COLS="1*,2*,3*">
Dersom du trenger mer fleksibilitet i oppsettet ditt, kan du benytte en teknikk som kalles nested framesets. Som navnet tilsier, inneb�rer dette at du putter framesett inni framesett. Om du f.eks. �nsker er en 50 pixtel bred menyframe vertikalt p� den venstre siden av siden, samtidig som du vil ha en 30 pixtel h�y tittel frame p� tvers av toppen p� siden, kunne du gj�re slik:
<FRAMESET COLS="50,*">
Legg merke til hvordan den 'indre' <FRAMESET> tag'en legges der en <FRAME> tag vanligvis skulle st�. Du oppretter s� mange frames du �nsker med 'nested framesets', og du kan til og med definere nye framesett inne i framesett som st�r inne i framesett, som st�r inne i framesett, etc.! I tillegg til ROWS og COLS, s� er det flere andre attributter til <FRAMESET> tag'en som tillater deg � p�virke utseendet til et framesett:
Eksperimenter med disse mulighetene selv, men pass p� at du velger l�sninger som er kj�rbare for flest mulig browsere slik at folk kan f� tilgang til den viktigste delen av site'n din innholdet. Som du sikkert er klar over n�, s� er hovedfunksjonen til <FRAME> tag'en � bestemme oppstartinnholdet for hver frame i framesettet ditt. Liksom <FRAMESET> tag'en, godtar den ogs� flere andre attributter som tillater deg � endre m�ten de enkelte frame'ene fungerer p�. Dersom ikke annet er nevnt, virker disse attributtene fom. Netscape 2, og IE3
|