[next][previous][contents]

9. Frames

Omdiskuterade, vissa hatar dem, vissa vill inte vara utam dem - Frames. De går i princip ut på att sidan byggs upp av flera HTML-dokument istället för ett. Browsern delas m.h.a. ett huvuddokument in i ett gäng frames, och ett HTML-dokument laddas i varje.

Eftersom jag inte vill göra en massa hemsidor här i howto'n kommer jag använda tables för att åskådliggöra hur ett källdokument bygger upp ett frameset. Sättet att bygga tables är ganska likt principen för att bygga framesets, fast den tidigare är mer flexibel.

Nyttan med frames är förstås att man kan arbeta med mycket mindre dokument - ett dokument som ska stå för brödtexten behöver inte innehålla mycket mer än just texten, arbetar man med tables måste varje HTML-dokument innehålla hela layouten, med allt vad det innebär när man ska göra ändringar o.s.v.

Personligen tycker jag att frames kan förstöra mycket av känslan på en sida. Det känns mycket bättre att scrolla en enda lång sida, byggd på tables, än att scrolla en smal frame. På sätt och vis känns det naturligare med tables, som om man scrollar ett stort, obrutet papper. Fast gör man t.ex. ett bildarkiv kan frames vara praktiska, man kan lägga klickbara thumbnails till vänster, som visar bilden i full skala till höger när man klickar på thumbnailen.

Ett mycket enkelt exempel på hur en index.html kan se ut som skapar ett frameset:


<HTML>
<HEAD><TITLE>
The title
</TITLE></HEAD>

<FRAMESET ROWS=*,68 FRAMEBORDER=0 FRAMESPACING=0 BORDER=0>
	<FRAME SRC="main.html" NORESIZE NAME="main">
	<FRAME SRC="menu.html" SCROLLING=NO MARGINHEIGHT=0>
</FRAMESET>

<NOFRAMES>
Den här texten syns för att du inte har en browser som klarar av frames. Skaffa en
eller skäll på mig som är ignorant.
</NOFRAMES>
</HTML>

Ger resultatet:

The title
main.html
menu.html

De olika FRAMEBORDER, FRAMESPACING och BORDER är nödvändiga för att Netscape och Internet Explorer har sina olika. * i en frameset betyder "resten av det tillgängliga utrymmet", och det går att använda uttryck som ROWS=*,2*, för att göra en frameset där de två framesen delar på tillgängligt utrymme, och den undre är dubbelt så stor som den övre. Procentsatser går också bra, likaså pixelvärden. Så en rad som COLS=100,*,20% ska fungera, även om den är lite jobbig.

Det går också att nesta framesets. Istället för en FRAME, går det bra att peta in en till frameset, med nya frames i. Ett vettigt förslag är ju i så fall om det första framesetet delade fönstret i rader, att den andra delar den i kolumner. Inte mycket nytta med det annars...

En sak som många glömmer använda är SCROLLING-växeln. Den går att ställa antingen till YES, NO eller AUTO. Ska inte framen kunna scrollas är det lika bra att man sätter SCROLLING=NO, så att den aldrig gör det av misstag heller.

Använd gärna frames begränsat, då kan de fungera.
En motvikt mot att frames ger små filer, är att när man surfar går det mesta av tiden inte åt att ladda ned stora HTML-filer. HTML-filerna är oftast relativt mycket små, och det som tar tid är att skicka requests för alla olika filer som ska ned. Alltså något som talar för användning av tables.


[next][previous][contents]