Obs! 1. InledningDen här sidan berättar om hur man styr alla de boxar som förekommer i ett HTML-dokument. Genom att lära sig förstå vad en box är och hur boxar påverkar varandra, kan man få större insikt i hur HTML och andra markeringsspråk fungerar. Jag har framförallt hämtat informationen från CSS2-specifikationens åttonde kapitel. Nästa sida kommer också att fördjupa det jag skriver i denna introduktion till boxar. 2. Vad är en box?En box kan t.ex vara ett en tabell eller tabellcell. För att göra det här resonemanget så enkelt som möjligt, utgår jag fortsättningsvis ifrån en tabellcell.
En box består av en content area (innehåll), padding (stoppning), border (ramar) och utanför den margins eller marginaler (som är ett lika bra svenskt ord). Avståndet mellan texten, bilden, eller det innehåll (content) man lagt in i tabellcellen, och ramen runt tabellcellen, kallas för padding. Utanför paddingen hittar man först en border eller tabellram, samt utanför den en marginal. Egentligen skall marginalerna endast finnas utanför hela tabellen, men aldrig inne i den. Det kan man bl.a läsa om i HTML 4.0-specifikationen, i kapitel 11.3.3. Dessvärre tolkar emellertid vissa av webbläsarna boxmodellen lite olika och lägger in en marginal för tabellcellerna. Då räcker det inte med att bara skriva: <TABLE cellspacing="0" cellpadding="0" border="0"> För att ta bort mellanrummet mellan t.ex bilder som skall ligga tätt ihop. Bilderna får då nämligen ett litet avstånd mellan sig. Man måste därför lägga till några attribut, som egentligen inte borde behövts och resultatet blir t.ex detta: <TABLE cellspacing="0" cellpadding="0" border="0" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0"> Något av detta skrev jag om på min sida om tabeller >> I stylesheets kan man på ett enklare sätt ställa in värdena för de olika delarna av en box, för var och en av kanterna på boxen. Man kan dessutom ställa in färger, mönster och lite till. Det skall vi titta på så småningom. Om ett värde sätts till noll, t.ex för en border, kommer den inte att ta någon plats. Men det betyder inte att den inte längre finns. För webbläsaren existerar den fortfarande, även om den inte visas på skärmen. Därför bör man ha schemat ovanför ganska klart för sig innan man på allvar börjar arbeta med boxar. 3. När används boxar?Ett enkelt svar på frågan i rubriken är att boxar alltid används! Så gott som alla element i HTML skapar boxar, t.ex när man bestämmer värden för tabeller och tabellceller, för listor, för hela dokument, för enskilda dokument, länkar, osv. Här är ett exempel på hur en sådan bestämning kan se ut: H1.special {
Rubriken hämtas in i dokumentet som vanligt: <H1 class="special"> Här kommer rubriken </H1> Titta på exemplet i praktiken >> 4. MarginVi skall nu titta lite närmare på vilka möjligheter som finns i CSS2. Margin är en egenskap som används för att bestämma marginalernas bredd. Man kan skriva kommandot pålige olika sätt: margin-top
margin-right
margin-bottom
margin-left
margin
Man får som vanligt använda i stort sett vilka värden man vill. Enheterna är också de vanliga: px - pixlar
Man kan också använda procent för relativa värden: H1 { margin: 10px }
Vad händer om två boxar hamnar bredvid varandra? Slås då marginalerna ihop eller behåller de sina respektive storlekar? I CSS2-specifikationens kapitel 8.3.1 beskrivs fenomenet med orden marginaler som kollapsar (collapsing margins). Där kan man läsa att marginalerna bara kollapsar om boxarna ligger bredvid varandra (=vertikala marginaler), men aldrig kollapsar om de ligger ovanför varandra (=horisontella marginaler). Kollapsen består i att marginalerna tar ut varandra. Har två boxar som ligger bredvid varandra var sin 10 pixlar bred marginal, blir den totala marginalen mellan dem också 10 pixlar. Ligger de däremot över och under varandra, blir marginalen 20 pixlar. Det finns självklart alltid några undantag och det är t.ex om boxarna ligger positionerade, något jag återkommer till på senare sidor. 5. PaddingInställningarna för paddingen, t.ex avståndet mellan texten inne i en tabellcell och tabellcellens kant eller ram, görs på exakt samma sätt och med samma värden som för marginalerna: padding-top
6. BorderRamarna går också att styra och man kan göra en rad olika inställningar. Dessa känner du igen från avsnitten ovan: border-top-width
Värdena är dock något annorlunda än för marginalerna och paddingen: thin, medium, thick eller ett siffervärde, som man lämpligen anger i antalet pixlar. Förutom bredden på ramen kan man även ange färgen och stilen: border-top-color
Dessa fungerar likadant som för border-width. Värdena är de vanliga färgvärdena, dvs antingen en färgkod med hexadecimaler eller ett nyckelord: #FF0000 eller red. border-top-style
Även dessa har samma syntax som de tidigare, men värdena skiljer sig något åt. Här följer en lista på de olika alternativen: none - ingen
Det finns möjligheter att kombinera de olika värdena: border-style: solid dashed skapar en enfärgad övre och undre linje och en streckad vänster- och högerram. Nedan har jag skrivit ner ett exempel på en väldigt exakt styrning. Normalt har man dock inte så specifika krav utan väljer förmodligen en enklare layout: H1.ram {
|