Tabeller
Tabeller är knepiga saker, bland annat pga
att webbläsare har olika tolkningar. Men med
tabeller kan du uppnå det bästa resultatet
vad gäller utformning av dina hemsidor. Med
lite övning kan du skapa snygga och
snabbladdade webbsidor.
Introduktion
Nu för tiden är det vanligt att man använder tabeller på hemsidor, och om du har besökt
något stort företags webbplats är det mer än troligt att du stött på tabeller.
Tabeller består precis som i tryckt material av kolumner och rader. I skärningspunkten mellan en rad och
en kolumn uppstår en cell. Kolumner går lodrätt och rader vågrätt.

Bild 5.1 En tabell med fyra celler fördelade över två kolumner och två rader
Med hjälp av tabeller kan man skapa avancerade utformningar med text och bilder.
Något som vore helt omöjligt om man bara har text- och bildmärken att tillgå. Innan de
stora webbläsarna hanterade tabeller var enda möjligheten att spalta upp sin text att använda
ett icke proportionellt teckensnitt, t.ex.
Courier. Eftersom alla bokstäver och tecken då är lika breda kan man använda mellanslag
för att fylla ut avståndet mellan spalterna. I Courier ser tabellen ut så här:
Namn Matcher Poäng
Max 12 15
Per 12 13
Johan 12 9
Björn 11 8
De flesta webbläsare använder teckensnittet Courier om du definierar text
med märket <PRE>. Text inom märket <PRE> får sitt utseende (teckensnitt och
storlek) från webbläsarens standard för icke proportionella teckensnitt. I Netscape
(4.5) ställs standard- teckensnitten in i Redigera > Inställningar > Utseende >
Teckensnitt. I Internet Explorer (4.0) görs inställningen i Visa > Internet-alternativ och
knappen Teckensnitt.
Om den som öppnar och läser sidan i sin webbläsare mot förmodan
inte skulle ha Courier utan ett proportionellt teckensnitt, t.ex. Garamond eller Times, kommer tabellen
att kollapsa:
Namn Matcher Poäng
Max 12 15
Per 12 13
Johan 12 9
Björn 11 8
Ser inte så kul ut va? Nej, tänkte väl det. Förutom att indragen
inte fungerar och att tecknen är olika breda så är 10 punkter i Times mindre än 10 punkter
i Courier. Texten blir helt enkelt mindre. Och det är dessutom inte möjligt att lägga in bilder
i tabellen. Den här metoden fungerar bra för den klassiska användningen av tabeller
(sportresultat och annan information).
Just Courier finns installerad som standard på både PC och Mac så om du ser
till att använda det teckensnittet bör det inte vara några problem att tillverka en
tabell på det här viset.
I takt med att det kommer mer sofistikerade sätt att hantera utformningen av sidans
innehåll, till exempel CSS och
dynamisk HTML, kommer tabellens betydelse antagligen
att minska, men till dess att alla webbläsare hanterar nymodigheterna är tabellen nog den smidigaste
lösningen. Så nu sätter vi igång.
Vår första tabell
Så hur tillverkar man en tabell då? Det är egentligen ganska enkelt.
Koden nedanför skapar tabellen du ser i Bild 5.2.
Exempel 5-1 "En busenkel tabell"
<FONT FACE="Tempus Sans ITC" COLOR="purple" SIZE="4">
<BR>
En busenkel tabell.<BR><BR>
<TABLE BORDER="1">
<TR>
<TD>
Cell 1
</TD>
<TD>
Cell 2
</TD>
</TR>
<TR>
<TD>
Cell 3
</TD>
<TD>
Cell 4
</TD>
</TR>
</TABLE>
<BR>
Slut på den busenkla tabellen.

Bild 5.2
En enkel tabell
Ta för vana att alltid utrusta tabellrader och -celler med ett avslutande märke
(</TR> och </TD>). Det finns två anledningar till detta. För det första finns
det webbläsare som inte visar tabellen korrekt om man inte avslutar rader och
celler korrekt. För det andra så behövs dessa märken om du vill visa en tabell inuti
en annan tabell. Dessutom blir koden enklare att tolka om du senare behöver gå
in och ändra i den.
Teckensnitt och tabeller
Som du ser i bild 5.2 används inte samma teckensnitt för tabellen och
resten av sidan. Det är webbläsarens standardteckensnitt som används. Det är en
egenhet för bland annat Netscape, i Internet Explorer används senast angivna teckensnittsattribut
även i tabeller. Eftersom många av oss använder andra webbläsare än IE
förutsätter går jag igenom den "krångligare" metoden att ange teckensnitt
för tabeller.
Teckensnitt anges på cellnivå, i direkt anslutning till aktuell text, men
är inte en del av tabellens definition:
Exempel 5-2 "Tabeller och teckensnitt"
..
<TD>
<FONT FACE="Helvetica" COLOR="red">Leksands IF
</TD>
<TD>
Malmö IF
</TD>
..
Leksands IF kommer att vara rött och visas med teckensnittet Helvetica. Malmö
IF kommer däremot att visas med standardteckensnittet (gäller Netscape), se nedan.

Bild 5.3
Teckensnitt anges inom varje <TD>-märke (cell)
Med de nya metoderna för hierarkiska fomatmallar (CSS) kan du ange
teckensnitt på ett enklare sätt, men till dess att alla större webbläsare
förbättrar teckensnittshanteringen för tabeller är mitt råd att du
använder metoden ovan.
En teknik som jag använder för att göra det enklare att använda
teckensnitt i tabeller är att göra kolumner som består av stora celler. Istället
för tre kolumner med 10 celler i varje (där teckensnittet måste anges för varje cell),
gör jag tre stora celler där jag delar raderna med det vanliga <BR>-märket. Den
här metoden fungerar bra så länge varje informationsenhet är en rad lång och
du inte vill visa cellramar.
Tabellens beståndsdelar
<TABLE>
Du börjar bygga en tabell med märket <TABLE>. En väldigt enkel tabell behöver
inte mer än så, men du kan även ange olika attribut för märket.
Border
Det här attributet avgör om tabellen ska omges av en synlig ram eller ej.
Jag tycker att de ramar som sätts runt en tabell är gräsligt fula så jag sätter
ofta värdet till noll:
BORDER="0"
Om du vill ha en ram runt din tabell anger du ett numeriskt värde från 1 och uppåt. Du kan inte
ange decimaler eftersom värdet är lika med bredd i bildpunkter. Det finns ingen egentlig begränsning av
hur bred ramen får vara, men om du gör ramen bredare än 3-4 bildpunkter kommer du att avleda
betraktarens uppmärksamhet, se nedan.

Bild 5.4
Tabeller med BORDER satt till 0, 1, 5 respektive 20
Olika webbläsare behandlar avsaknaden av attributet BORDER på olika sätt.
Ta gärna för vana att uttryckligen ange om tabellen ska ha synlig ram eller ej
genom att sätta BORDER till noll eller ett annat numeriskt värde.
Width
Om du inte anger en bredd på tabellen anpassas den efter innehållet, eller efter bredden
på dina celler. I händelse av konflikt (om du anger bredden på en tabell till 400 men har celler
som är 500 breda tillsammans) så "vinner" <TABLE>-märkets breddangivelse.
Du kan ställa in WIDTH i bildpunkter eller som en procentsats.
WIDTH="400"
WIDTH="50%"
Bildpunkter anges alltid som ett absolut värde. Om du anger att tabellen ska vara
400 punkter bred så blir den 400 punkter bred. Procent anges i förhållande till
webbläsarfönstrets bredd. Detta ger först och främst olika resultat på skärmar
med olika storlek, tabellen blir avsevärt mycket smalare på en 14- än på en
21-tumsskärm. Det kan vara en nackdel eftersom du inte kan styra hur bred tabellen ska vara. Å
andra sidan kan du alltid vara säker på att hela tabellen syns på skärmen oavsett hur
stor den är om du anger tabellens bredd till 100%. En tabell där bredden anges som bildpunkter
riskerar att bli för bred på de allra minsta skärmarna.
Vanligtvis anger man som mest att tabellen ska vara 100% bred, men om du har synnerligen goda skäl kan
du givetvis ange större procentsatser. Då visas en bläddringslist längst ner i
fönstret. Längre fram, i designavsnittet, förklarar jag varför man i 9 fall av 10
bör undvika att sidan måste bläddras i sidled.
Du kan aldrig ange en procentsats som gör tabellen smalaren än en cells innehåll. Text kan
flödas om så att det står ett eller ett par ord per rad, men cellen blir aldrig smalare
än det längsta ordet. Detsamma gäller givetvis bilder också.
Jag utformar mina sidor så att tabellerna fungerar på en 14- till 15-tums skärm (ca 640 x 480
punkter) just av ovan nämnda anledning. Eftersom jag vill ha fullständig kontroll över bredden
på mina tabeller anger jag alltid bredden i bildpunkter (488 närmare bestämt).

Bild 5.5
Tabeller angivna som 50, 75 respektive 100 procent av skärmbredden.
Height
Parat med WIDTH finns attributet HEIGHT. Du kan ange tabellhöjden som en procent av
fönstrets höjd, eller en fast höjd som bildpunkter
<TABLE HEIGHT="200">
<TABLE HEIGHT="75%">
Cellspacing
Attributet Cellspacing bestämmer hur stort avståndet ska vara mellan celler och den omgivande
ramen samt mellan celler (både lodrätt och vågrätt). Värdet på Cellspacing
har betydelse även om du satt BORDER="0", se nedan. Cellspacing anges alltid i bildpunkter.

Bild 5.6
Cellspacing satt till 0, 1, 5 och 20 bildpunkter
Cellpadding
Cellpadding används för att öka eller minska avståndet mellan innehållet i en cell
(text till exempel) och cellens ramkant. Avståndet ökas symmetriskt i alla fyra riktningarna.
Mycket användbart om du vill öka avståndet mellan den vänstra ramkanten och text i
cellen. Observera att Cellpadding "stjäl" utrymme från cellens totala bredd. Om du
angivit att cellen ska vara 100 bildpunkter bred och sätter Cellpadding till 10 har du bara 80
bildpunkter kvar för text.

Bild 5.7
Cellpadding satt till 0, 1, 5 och 20 bildpunkter
Bgcolor
Om du läst tidigare avsnitt känner du igen det här attributet. Det används för att ange en
bakgrundfärg, i det här fallet för tabellen. Ange antingen ett hexadecimalt värde eller namnet
på en färg (på engelska).
BGCOLOR="#336633"
BGCOLOR="blue"
Det finns ett antal färgnamn som de vanligaste webbläsarna accepterar. Jag har
sammanställt en lista som du kan studera eller skriva ut.

Bild 5.8
Tabeller med olika bakgrundsfärg
Background
Med attributet Background kan du ange en bakgrundsbild för tabellen, t.ex. en GIF eller JPEG.
Men var försiktig med vad du väljer för bild eftersom ett alltför "vildvuxet"
mönster gör det svårt att läsa tabellens text. Så här anropar du bilden star.gif
(som inte är särskilt väl lämpad som bakgrundsbild måste jag tillägga):
<TABLE BACKGROUND="star.gif">

Bild 5.9
Bakgrundsbilden star.gif
Align
Attributet Align anger var på sidan tabellen ska placeras. Du kan ange left, center eller right. Satsen:
<TABLE ALIGN="right">
placerar tabellen till höger på sidan.

Bild 5.10
ALIGN="left", "center" och "right"
Webbläsare har förutom de attribut jag tagit upp egna attribut. Internet
Explorer har till exempel attributen Frame och Rules som avgör hur ramen runt
tabellen och linjer mellan celler ska se ut.
<CAPTION>
Om du använder en tabell i dess klassiska bemärkelse, för att presentera en mängd data,
är det mycket möjligt att du vill ge tabellen en rubrik (caption). Sån tur då att det
finns ett märke som ordnar just detta. Sätt in märket efter <TABLE>, t.ex:
..
<TABLE WIDTH="75%">
<CAPTION>Tabellrubrik</CAPTION>
..
Du kan ange Caption var som helst innanför <TABLE>-definitionen men det
är logiskt att placera rubrikdefinitionen så högt upp som möjligt. Då kan
det se ut så här:

Bild 5.11
Märket <CAPTION>
En intressant detalj är att värdet på Cellpadding även påverkar avståndet
mellan rubriken och tabellen.
<TR>
OK, då ger vi oss på nästa nödvändiga märke, <TR>. Märket
är en förkortning av Table Row vilket betyder tabellrad. En tabellrad kan innehålla en
eller flera celler.
..
<TR>
<TD>Cell 1
<TD>Cell 2
</TR>
..
Du behöver inte ha lika många celler på alla rader. Tabellen blir
så många celler bred som den tabellrad med flest celler, se Bild 5.12.

Bild 5.12
En tabell med rader med olika många celler
I bilden ovan har första raden 3 celler, andra raden 2 celler och tredje raden 1 cell.
Om man bara anger en cell för en rad kommer den cellen att hamna i kolumnen längst till vänster
i tabellen. Om du istället vill att cellen ska placeras i en annan kolumn anger du först en eller
flera tomma celler, så här:
..
<TD>
</TD>
<TD>
Cell x
</TD>
..
Liksom många andra märken kan du utrusta <TR> med attribut.
Align
Align syftar i det här fallet på innehållet i enskilda celler inom den aktuella tabellraden.
Som vanligt kan du använda värdena "left", "center" eller "right".
Om du i definitionen för en cell, <TD>, anger ett annat värde på Align
åsidosätts Align-värdet som anges i <TR>-märket. Så här
använder du attributet:
<TR ALIGN="center">
Valign
Attributet Valign (Vertical Alignment) kontrollerar cellers textjustering i höjdled. Det finns tre
alternativ: "top", "middle" och "bottom" (överst, mitten, nederst).
Det här attributet är användbart om celler på samma rad är olika höga.
Om du vill att innehållet i celler på den aktuella raden ska justeras mot cellens övre
kant skriver du:
<TR ALIGN="top">
Bgcolor
För Bgcolor gäller samma som för <TABLE>-märket, se ovan. Det kan se ut
så här:
<TR BGCOLOR="yellow">
Background
För Background gäller samma som för <TABLE>-märket, se ovan. Det kan se ut
så här:
<TR BACKGROUND="star.gif">
<TH>
<TH> är kort för Table Head vilket betyder tabellrubrik. Du kan använda märket
överallt där du skulle använda <TD> men det vanliga är givetvis att använda
<TH> till tabellen första rad. Märket har samma attribut som <TD> så jag går
inte igenom dem här, se <TD> längre ner. När detta skrivs, hösten -99, har <TH>
ingen annan funktion än att centrera texten i cellen och göra den fet. Här följer ett exempel:
<TABLE BORDER="0">
<TR>
<TH>Kolumn 1
<TH>Kolumn 2
<TH>Kolumn 3
</TR>
<TR>
<TD>Cell 1
<TD>Cell 2
<TD>Cell 3
</TR>
</TABLE>

Bild 5.13
En tabell med kolumnrubriker
<TD>
Då är vi framme vid märket som definierar en cell. <TD> är
förkortningen för Table Data (tabelldata) och det märket kan innehålla text, bilder
eller till och med andra tabeller.
I de fall då samma attribut angivits även i <TABLE> eller <TR>
gäller inställningen som finns "närmast" cellinnehållet, d.v.s.
inställningen i märket <TD>. I konstruktionen:
..
<TR ALIGN="left">
<TD ALIGN="right">
Leksands IF
</TD>
</TR>
..
kommer Leksands IF att justeras åt höger eftersom den närmaste
inställningen för ALIGN (i <TD>-märket) lyder "right".
Align
Attributet Align använder du för att justera cellinnehållet i sidled (vågrätt).
Du kan ange värdena "left", "center" eller "right", se Bild 5.14:
<TD ALIGN="center">
Valign
Valign justerar cellinnehållet i höjdled (lodrätt) och du kan ange värdena
"top", "middle" och "bottom" (se Bild 5.14):
<TD VALIGN="top">

Bild 5.14
Cellerna i första raden har justerats i sidled,
cellerna i andra raden har justerats i höjdled
Width
Attributet Width används för att kontrollera bredden på en cell. Du kan ange bredden som ett
fast värde i form av bildpunkter, eller som en procent i relation till hela tabellens bredd.
Alla breddangivelser är beroende av innehållet i de celler som påverkas.
Om du har en 200 bildpunkter bred bild i en cell, kan du inte ange att cellen ska vara 100 punkter bred.
Jo, du kan ange det, men resultatet blir oförutsägbart. Samma sak gäller om du anger en total
procentsumma som överstiger 100%. Tre celler satta till 50% av tabellbredden ger summan 150% och då
blir webbläsaren förvirrad. Så här kan det se ut:
<TD WIDTH="100">
<TD WIDTH="50%">
Av egen erfarenhet vet jag att webbläsare hanterar okända storheter på olika
sätt. Om du har tre celler på en rad och bara anger bredd för en cell kan de andra
två cellerna komma att bli olika breda beroende på vilken webbläsare du har. Tag
därför som vana att alltid ange bredd för samtliga celler på en rad där
du anger bredd för minst en cell.
Ställ bara in bredden för cellerna i en rad. Övriga rader anpassas
nämligen efter dina inställningar. Faktiskt är det en bra metod eftersom du då
inte riskerar att ge celler i samma kolumn olika bredd. Längre ner, under rubrikerna Colspan och
Rowspan, går vi igenom hur man går tillväga för att göra celler i samma
kolumn olika breda.
Height
Height för en cell anges i form av bildpunkter. Om du anger ett värde för Height som är
lägre än innehållet i cellen medger händer ingenting. Då får cellen den
höjd som krävs för att visa innehållet. Exempel:
<TD HEIGHT="100">
Nowrap
Attributet Nowrap betyder att innehållet i cellen ska visas på en och samma rad. Nowrap betyder
ingen radbrytning. Ange Nowrap i <TD>-märket (attributet tilldelas inget värde), se nedan.
<TD NOWRAP>

Bild 5.15
En rad med attributet NOWRAP
Observera att NOWRAP inte fungerar i Netscape om du samtidigt anger cellbredd med
attributet WIDTH.
Bgcolor
För Bgcolor gäller samma som för <TABLE>- och <TR>-märket, se ovan. Det
kan se ut så här:
<TD BGCOLOR="yellow">
Background
För Background gäller samma som för <TABLE>- och <TR>-märket, se ovan. Det
kan se ut så här:
<TD BACKGROUND="star.gif">
Observera att "närhetsprincipen" gäller för Bgcolor och Background. Om du
ställer in något av dessa attribut i ett <TD>-märke åsidosätts
eventuella inställningar i <TABLE> och <TR>.
Colspan
Colspan är ett mycket kraftfullt attribut. Med hjälp av Colspan kan du ange att en cell ska
sträcka sig över mer än en kolumn. Det är samtidigt ett "farligt" attribut
eftersom du måste ha järnkoll på hur din tabell ser ut, hur många kolumner och rader
den består av. Om du anger ett för stort kolumnintervall kommer tabellen att se helknasig ut.
..
<TABLE WIDTH="150">
<TR>
<TD COLSPAN="2" ALIGN="center">
1999
</TD>
</TR>
<TD WIDTH="75">
Män
</TD>
<TD WIDTH="75">
Kvinnor
</TD>
</TR>
</TABLE>
..
Ovanstående ger en tabell med två rader. Den första raden innehåller
bara en cell, medan den andra raden består av två celler, se Bild 5.16 nedan.

Bild 5.16
Tabell där första raden är en cell som sträcker sig över två kolumner
Du kan varva celler som går över flera kolumner med vanliga kolumnbundna celler
som du vill. En minnesregel är att summera värdena för attributet COLSPAN i varje
<TD>-märke i en rad, där avsaknaden av COLSPAN i en cell är ett. Se till att alla
tabellrader är lika långa, d.v.s. har samma antal kolumner.
<TR>
<TD>Cell 1
<TD COLSPAN="3">Cell 2
<TD COLSPAN="2">Cell 3
<TD>Cell 4
<TD COLSPAN="2">Cell 5
</TR>
Ovanstående tabellrad (alla celler inom <TR> och </TR>)
består av 9 kolumner. Nedan finns en bild som visar en något mer avancerad tabell,
med många olika kombinationer.

Bild 5.17
Fyra rader och fem kolumner, med en, tre, fem och tre celler.
Rowspan
Attributet ROWSPAN har samma funktion som COLSPAN fast i höjdled. Med ROWSPAN anger du hur
många rader hög en cell ska vara. Standard är en rad, vilket är samma sak som
ROWSPAN="1". Så här använder du attributet:
..
<TABLE>
<TR>
<TD ROWSPAN="3">Cell 1
<TD ROWSPAN="2">Cell 2
<TD>Cell 3
</TR>
<TR>
<TD>Cell 4
</TR>
<TR>
<TD>Cell 5
<TD>Cell 6
</TR>
</TABLE>
..
Ovanstående kod åstadkommer en cell som är tre rader hög, och en
som två rader hög. Övriga celler är normala. Som du ser i bilden nedan sträcker
sig cellintervall över hela kolumner. Det går till exempel inte att sätta COLSPAN="1,5".

Bild 5.18
Cell satt med COLSPAN="1" respektive "2"
Du kanske undrar vad som händer om man anger ROWSPAN eller COLSPAN
lika med "0"? Ingenting faktiskt. Cellen får samma utseende som om du angivit
intervallet till 1 eller inte använt attributen över huvud taget.
Sammanfattning
Det här kapitlet har handlat hur man tillverkar tabeller. Tabeller är
fantastiskt bra att använda för att ge sin webbsida ett proffsigare utseende. Med tabeller
kan man bryta sig loss från den sekventiella webbsidan genom att man kan blanda bild och text.
Vi har gått igenom de viktigaste märkena, såsom <TABLE>, <TR> och <TD>.
Märken
Här följer en lista över de märken och attribut vi gått igenom i den här lektionen.


Frågor
-
Vilka tre märken behövs minst för att skapa en tabell?
-
Varför bör man vara noggrann med att avsluta alla märken i tabeller?
-
Skapa en tabell med tabellrubriken Tabellnamn, som består av tre
rader med fyra celler i varje.
-
Ange att tabellen ska ha bakgrundsfärgen "blue" men att en av cellerna i
tabellen ska ha bakgrundsbilden "star.gif".
-
Ange att innehållet i en cell ska vara centrerad och justerad mot
cellens övre kant.
-
Skapa en tabell som ser ut enligt nedan genom att använda märkena
<COLSPAN> och <ROWSPAN>.

Svaren på frågorna finns i Bilaga A.
Senast uppdaterad 99-08-09
|