Provläs boken!

Max räckvidd med HTML & CSS – webbguruns smartaste stilknep av Tommy Olsson 336 sidor, illustrerad, häftad utkom i november 2008 ISBN: 978-91-972705-2-6

Ur innehållet

Omslagets framsida...... 2 Omslagets baksida...... 3 Innehållsförteckning...... 5 Förord av Roger Johansson...... 11 Kapitel 3: Stilmallar...... 13 Bilaga A: Elementreferens för HTML 4.01 Strict...... 91 Sakregister...... 97 Köpställen och kontakt...... 113

Förlaget påminner om att varje form av kopi- ering eller annat mångfaldigande av text och bild ur följande utdrag är förbjuden enligt la- gen om upphovsrätt. ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page v --- #5

✐ ✐

INNEHÅLL

Förord xi  Introduktion  . Vem, när, hur, var, varför?......  Vem bör läsa den här boken? ......  Hur läser man boken lämpligast? ......  Vad behöver man för att följa med i bokens exempel? ......  . De tre skikten......  Innehåll: HTML......  Presentation: CSS ......  Interaktion: JavaScript ......  . Glasnost – den öppna dörrens politik ......  Funktionshinder ......  Tekniska hinder ......  Tillgänglighet på webben ......  Myter och vanföreställningar ......  Med användaren i centrum ......   Ett webbdokuments anatomi  . För protokollets skull ......  . Som man frågar får man svar ......  . Hur ettor och nollor blir till bokstäver ......  ASCII ......  ISO  ......  Unicode och UTF- ......  Deklarera rätt teckenkodning ......  . HTML – en revolution ......  Länkar ......  . Välj mellan tre smaker ......  Att sniffa dokumenttyper ......  Validering ...... 

v

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 5 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page vi --- #6

✐ ✐

. Bland taggar och element ......  Ett HTML-dokuments skelett ......  Kommentarer ......  Specialtecken ......  . Vad har en webbsida i huvudet? ......  Lägg inte bort titlarna ......  Externa resurser ......  Information om information......  Relativitetsteori ......  Exempel......  . Det är kroppen som räknas......  Kroppsfixerad?......  Vanliga attribut ......  I stort och smått ......  Vad är meningen med HTML? ......  Det elementäraste ......  Neutralitet......  Bilder och multimedia ......  Listor ......  Tabeller ......  Formulär ......  Citat och hänvisningar ......  Smått och gott......  Skript ......   Stilmallar  . Varför finns CSS? ......  Nivåer, inte versioner ......  Att lära om från layouttabeller till CSS ......  . Fågel, fisk eller mittemellan? ......  Externa stilmallar......  Interna stilmallar ......  Inline-stilregler......  . Begrepp att begripa ......  Hur långt då? ......  Tänk på procenten ......  I klartext ......  Färger......  Identifikativt......  Gå någon annanstans ......  . Ett selektivt urval ......  Enkla selektorer ......  Kombinatorer ...... 

vi INNEHÅLL

✐ 6 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page vii --- #7

✐ ✐

Pseudoklasser ......  Pseudoelement ......  Gruppering ......  . Arv och kaskad ......  Arvsanlag ......  En kaskad av regler ......  . Typografisk kontroll ......  Vilken typ! ......  Full kontroll (nästan) ......  Avancerat finlir......  . Layoutkontroll ......  Rektanglarnas underbara värld ......  Att flyta ovanpå ......  En fin position ......  Pest eller kolera ......  . Specifik CSS ......  Listor ......  Tabeller ......  Genererat innehåll ......  . På papperet ......  Änkor och horungar ......  Sidbrytningar ......  . @-regler ......  Teckenkodning ......  Import ......  Medier och mediefrågor ......  Utskriftsmarginaler ......  Namnrymder ......  Teckensnitt ......  . Hack ......  Villkorliga kommentarer ......  Ett stjärnhack ......  Hack för IE/Win ......  Has det layout? ......  Mac-hack ......  Hacka inte i onödan ......   Skript  . Historiskt......  . Kort översikt för programmerare ......  Satser och block ......  Variabler ......  Vektorer...... 

INNEHÅLL vii

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 7 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page viii --- #8

✐ ✐

Objekt ......  Funktioner ......  Prototyper......  En arvsfråga ......  Räckvidd ......  Villkor......  Slingor ......  . Här eller där? ......  . Vi och DOM......  Dokumentobjektmodellen ......  Att hitta rätt nod ......  . Lite försynt så där ......  . Händelserikt ......  Händelsehanterare ......  Händelselyssnare ......  . Grekiska krigare, fotbollslag och fönsterputs ......   Konsten att skapa bra webbdokument  . Det var INTE bättre förr ......  . Degradering kontra förbättring......  . Inifrån och ut ......  Den visuella metoden ......  Den strukturella metoden ......  Resultatet ......   Mission:Impossible  . Uppdraget ......  . Planeringen ......  . Etapp : Mallbygge och startsida ......  Grundstrukturen i HTML ......  Sidhuvudet ......  Huvudinnehållet ......  Relaterat innehåll ......  Navigeringen ......  Sidfoten......  . Etapp : Design ......  Sidhuvudet tar form ......  Vi erövrar Mittens Rike ......  Vi inflikar flikar ......  Sidfoten......  Att få det att se bra ut på papperet ......  Och så var det … ......  En mall blir till ...... 

viii INNEHÅLL

✐ 8 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page ix --- #9

✐ ✐

. Implementation ......  Sidan ”Våra tjänster” ......  Sidan ”Priser” ......  Sidan ”Kontakta oss” ......  . Finputsning ......  . Debriefing ......  Kravställning......  Tester ......  Dynamiska sidor ......   Tillbaka till framtiden  . Ex-HTML ......  Vad är XHTML?......  Vad skiljer det från HTML?......  Skillnader som berör CSS ......  Skillnader som berör JavaScript ......  Är det något att ha? ......  Vad skiljer XHTML . från XHTML .? ......  . Vad händer nu? ......  HTML, XHTML ......  CSS ......  Den semantiska webben ......  . Ja men … ......  A Elementreferens för HTML . Strict  B Attributreferens för HTML . Strict  C Selektorreferens för CSS .  D Egenskapsreferens för CSS . 

INNEHÅLL ix

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 9 ✐

✐ ✐ 10 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page xi --- #11

✐ ✐

FÖRORD

Webbens framgång och genomslag på några få år har, tillsammans med hem- mens och arbetsplatsernas datorisering och internetuppkoppling, inneburit en informationsrevolution. Det är lättare och snabbare än någonsin att hitta information om allt man kan tänka sig (och ganska mycket som man absolut inte kan tänka sig). Men det gäller tyvärr inte alltid för alla människor. I alldeles för många fall är viktig eller intressant information på de webbplatser vi besöker förbe- hållna människor som inte har några funktionshinder eller som använder den vanligaste webbläsaren på det vanligaste operativsystemet. För övriga besö- kare, till exempel den som är synskadad, rörelsehindrad, färgblind, eller helt enkelt använder en mindre vanlig webbläsare eller ett alternativt operativsy- stem, kan informationen vara svår eller till och med omöjlig att ta del av. Det borde inte vara så, men det har blivit så eftersom många webbdesig- ners och webbutvecklare har lärt sig formge och programmera webbplatser med metoder som gör att deras webbplatser inte får den räckvidd de borde ha. Ett sätt att minska förekomsten av otillgängliga webbplatser är utbildning; att nå ut till webbdesigners och webbutvecklare med information om bättre metoder. Det kan man göra med hjälp av böcker, och det finns ett allt stör- re utbud av böcker som beskriver modern och tillgänglig webbdesign och -utveckling. Problemet är att de oftast bara finns på engelska. Därför har jag länge saknat en bok om modern och tillgänglighetsinrik- tad webbutveckling på svenska. Det var med glädje jag fick beskedet att just Tommy Olsson arbetade med att skriva just en sådan bok. Tommy har länge varit en av de i mina ögon mest framstående och ihärdiga kämparna för en bättre webb som kan användas av alla, och det var ett nöje att samarbeta med honom vid arbetet med  års utgåva av Vägledningen -timmarswebben. Tommy har skrivit ett stort antal lysande artiklar, publicerade bland annat på hans blogg The Autistic Cuckoo och på webbplatsen Sitepoint.com, som be- skriver komplicerade ämnen på ett enkelt sätt. Med dessa artiklar och boken The Ultimate CSS Reference i bakhuvudet förväntar jag mig inget mindre än att Tommy med Max räckvidd med HTML och CSS på ett välstrukturerat och pe-

xi

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 11 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page xii --- #12

✐ ✐

dagogiskt sätt når ut till nya och gamla webbdesigners och webbutvecklare, och förklarar hur man skapar webbplatser som inte stänger ute människor. För den som har väntat med att lära sig modern HTML och CSS i brist på en bra svensk bok i ämnet är väntan nu – äntligen – över.

Roger Johansson www.bereastreet.com

✐ 12 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 57 --- #69

✐ ✐

STILMALLAR

CSS står för Cascading Style Sheets där ”kaskaden” är  ett centralt begrepp som ger oss stor frihet i hur vi ska- par våra stilmallar. CSS är ett språk som låter oss tala om hur ett webbdokument ska presenteras. I det här kapitlet kommer vi att gå igenom CSS i detalj.

Det finns inga kompletta exempel i det här kapitlet, eftersom boken då skulle bli alldeles för tjock (och dyr). Vi kommer att se gott om exempel på CSS i praktiken senare i boken, men experimentera gärna medan du läser det här kapitlet också. Skapa ett HTML-dokument med diverse olika element i, och pröva att tillämpa de olika egenskaperna för att se hur de fungerar. Vi måste dessvärre lära oss en hel del nya begrepp, men det sägs ju att kun- skap inte är tungt att bära.

. Varför finns CSS?

I begynnelsen var HTML. Webbläsaren bestämde hur innehållet skulle pre- senteras och det var inte meningen att författaren ens skulle försöka påverka. När författarna fick sällskap av formgivare ställdes andra krav på möjligheter att styra layout och typografi. Till en början försökte man åstadkomma det ge- nom att lägga till nya elementtyper i HTML; elementtyper som inte uttryckte vad innehållet var, utan bara hur det skulle se ut. Att blanda presentationskontroll med innehållet visade sig vara en olämp- lig lösning, eftersom det blev ohanterligt att underhålla. Varje gång man ville byta design på en webbplats var man tvungen att redigera HTML-koden för varenda sida – och det kunde handla om tusentals sidor! Skarpa hjärnor arbetade på olika håll för att komma på ett bättre sätt. Netscape, som var marknadsledande i mitten av -talet, lanserade ett stil-

Dock bara av personer som aldrig gjort storfynd på bokrean.



✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 13 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 58 --- #70

✐ ✐

mallsspråk baserat på JavaScript, men det slog aldrig riktigt igenom. I stället var det CSS, utvecklat av norrmännen Bert Bos och Håkon Wium Lie, som eta- blerade sig som det ledande, och sedermera det enda, språket för stilmallar. Med CSS kan vi skapa en separat stilmall som kontrollerar presentationen för en hel webbplats, oavsett hur många sidor den innehåller. Vill vi byta de- sign behöver vi (i teorin) bara ändra i stilmallen och så slår ändringarna ige- nom på varenda sida. Vinsten ur underhållssynpunkt går inte att överskatta. Även om en total omdesign kanske inte inträffar så ofta, är det inte alls ovanligt att man vill göra mindre, men genomgående förändringar av presen- tationen. Kanske h2-rubrikerna är en aning för stora, eller kanske betonade element skulle göra sig bättre i fetstil än som kursiva. En sådan ändring gör vi på  sekunder i en extern stilmall, medan det kan röra sig om flera veckors jobb på en stor webbplats där typografin styrs av föråldrade -taggar. En annan stor fördel med CSS jämfört med presentationskod är att vi kan ange olika CSS-regler för olika medier. Vi kan alltså styra hur sidorna ska se ut vid utskrift på papper, utan att behöva skapa särskilda ”utskriftsvänliga” sidor. Vi kan definiera en stilmall för mobila enheter med små bildskärmar, som skulle vara svåra att använda mot en webbplats med tre eller fyra spalter på varje sida. Även för användaren innebär CSS stora fördelar, eftersom en extern stil- mall lagras i webbläsarens cache och bara behöver hämtas en enda gång per webbplats. Eftersom HTML-koden blir mycket magrare utan alla presenta- tionselement går det snabbare att hämta sidorna. Det här innebär också fördelar för den som äger webbplatsen. Eftersom mindre data behöver skickas till varje användare minskar behovet av band- bredd, vilket i sin tur medför lägre kostnader.

Nivåer, inte versioner CSS finns, till skillnad från HTML, inte i flera olika versioner. I stället talar man om nivåer. Varje ny nivå lägger till nya finesser ovanpå de föregående nivåerna. Den första specifikationen, Cascading Style Sheets Level , eller CSS, gavs ut . Den ger oss möjligheter att styra färger och kantlinjer, marginaler och en del typografi. Det tog tid innan CSS anammades på allvar. Dels dröjde det innan webblä- sarna hade tillräckligt bra stöd för att CSS skulle bli användbart på allvar, dels var många formgivare ovilliga att kasta bort sina surt förvärvade kunskaper om layouttabeller och spacer-bilder för att lära sig något helt nytt. Den första webbläsaren med något som helst stöd för CSS var Internet Ex- plorer . Netscape var sena i starten och tvingades införa ett rudimentärt – och extremt buggigt – CSS-stöd nästan som en eftertanke i version .

 STILMALLAR

✐ 14 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 59 --- #71

✐ ✐

År  kom den efterlängtade Cascading Style Sheets Level  (CSS). Äntligen fanns det möjligheter att styra layout med CSS och det verkade som om himmelriket var nära. Ganska snart förbyttes dock formgivarnas hoppful- la leenden mot irriterade grimaser i takt med den påtagliga avsaknaden av fungerande CSS-stöd i webbläsarna. Netscape hade tvingats tillbaka till ritbordet. Deras missbedömning av hur populärt CSS skull bli gjorde att tog över ledartröjan och Internet Explorer blev den klart mest använda webbläsaren; en position den innehar än i dag. Några år senare försvann Netscape. Den nya version de arbetat på förvand- lades till ett öppen-källkodsprojekt under namnet Mozilla, vilket så småning- om resulterade i den webbläsare vi i dag känner som Firefox. Norska arbetade oförtrutet vidare i skuggan av jätten från Redmond. Deras webbläsare kostade dock pengar, även om det fanns en gratisversion som visade lite reklam, och de kunde aldrig konkurrera med Internet Explorer som följde med varje sålt Windows-system. Tekniskt sett låg Opera långt före huvudkonkurrenten, men det hjälpte föga. Opera var exempelvis den första ”stora” webbläsaren som kunde visa webbsidor i tabbflikar. Numera är även Opera gratis, men för en oförtjänt tynande tillvaro – utom i mobiltelefoner där den är marknadsledande. Opera är oftast först med innovativa finesser som sedan kopieras av till exempel Firefox och Internet Explorer (zoom, kortnum- mer och musgester, för att nämna några). Inte förrän Internet Explorer  för Windows kom () blev det praktiskt möjligt att börja använda CSS för all presentation. Tyvärr slutade Microsoft att utveckla sin webbläsare när IE lanserats; man hade krossat Netscape och var oomstridd herre på täppan, så det fanns ingen kommersiell anledning att lägga ned mer pengar på en gratisprodukt. När Firefox så småningom började ta marknadsandelar på allvar blev Microsoft emellertid tvungna att väcka liv i utvecklarteamet igen. IE rättade en hel del fel som föregångaren dragits med i ett halvt årtionde, och lade även till stöd för fler delar av CSS, men den är fortfarande ljusår efter Opera, Firefox och Apples . Trots det står IE och IE tillsammans för en förkrossande majoritet av marknaden, vilket innebär att vi som bygger webbplatser måste anpassa oss efter deras fel och brister. Det visade sig att delar av CSS var svåra att förverkliga och dessutom fanns det en del brister i specifikationen. Efter några år reviderade därför WC specifikationen och anpassade den efter hur webbläsarna faktiskt fun- gerade. Den reviderade utgåvan heter Cascading Style Sheets Level  Revision , eller CSS. i dagligt tal. Det är den gällande specifikationen, så när man talar om CSS är det CSS. man menar. Arbetet med den tredje nivån, CSS, pågår sedan flera år. Specifikationen är indelad i olika moduler, och tanken är att de ska kunna bli rekommenda-

VARFÖR FINNS CSS? 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 15 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 60 --- #72

✐ ✐

tioner oberoende av varandra. Opera, Firefox och Safari har stöd för vissa delar av CSS, trots att ingen modul ännu har officiell status.

Att lära om från layouttabeller till CSS Från -talets mitt och tio år framåt var det allra vanligaste sättet att kon- trollera webbsidors layout att använda tabeller (table-element) i HTML-kod- en. Mer avancerade layouter hade ofta tabeller i tabeller, ibland uppemot nio(!) nivåer. För att skapa ”luft” mellan designelementen använde man van- ligen en transparent GIF-bild i storleken × pixel, som man sedan töjde ut till önskad storlek i webbläsaren. Förutom att det här var ett gravt missbruk av HTML och att det orsakade stora användbarhetsproblem för människor med vissa funktionshinder, var det också ganska omständligt att lära sig. Det var också synnerligen felbenä- get, eftersom en enda missad sluttagg kunde få katastrofala följder för pre- sentationen. Även om CSS i vissa delar är ganska komplext är det i alla fall avsevärt mycket lättare att förstå och att använda. Trots det brukar webbdesigners som är vana vid layouttabeller och transparenta GIF-bilder tycka att CSS är nästin- till oöverstigligt svårt. Hur kan det komma sig? Orsaken är att man behöver tänka på helt olika sätt i de två metoderna. Med layouttabeller är man hänvisad till ett rutnät av rader och kolumner, där innehållet ska placeras i rätt cell. Rutnätet blir det som styr, och innehållet styckas upp efter de krav som rutnätet ställer för att åstadkomma den öns- kade layouten. Följden blir ofta en ologisk ordning på innehållet, vilket ger problem för användare som konsumerar dokumentet linjärt – exempelvis via en skärmläsare. Layoutarbete i CSS är mer ”objektorienterat” (för att använda ett populärt modeord). Här utgår man från innehållet och skapar stilregler för att placera objekten där man vill ha dem. Båda metoderna kräver sitt speciella sätt att tänka. Att skapa en tabellayout med objekttänk är praktiskt taget omöjligt, medan ett rutnätstänk leder till onödigt komplicerad CSS. Att lära om kan alltså vara lite utmanande, men det är inte detsamma som omöjligt. Den som är van att arbeta med layouttabeller kan mycket väl bli en utmärkt CSS-designer. En förutsättning är dock att man är beredd att lämna rutnätet bakom sig.

WC är inget standardiseringsorgan

 STILMALLAR

✐ 16 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 61 --- #73

✐ ✐ . Fågel, fisk eller mittemellan?

Innan vi ger oss i kast med detaljerna i CSS ska vi titta på hur vi kan koppla presentationsregler i CSS till våra HTML-dokument. Det finns tre möjligheter: ◮ externa stilmallar ◮ interna stilmallar ◮ inline-stilregler. En extern stilmall är en separat CSS-fil som länkas till HTML-dokumentet (vi ska strax se hur). Det är det klart bästa sättet, eftersom presentationen då är helt separerad från innehållet och vi har ett enda ställe att ändra på om vi vill modifiera presentationen. En intern stilmall är en uppsättning CSS-regler som anges i ett style-ele- ment i huvudet (head) på ett HTML-dokument. Presentationen är visserligen delvis separerad från innehållet, men den gäller bara för den sidan och vi går miste om fördelarna med caching. Att ange stilregler inline (i ett style-attribut) är vanligtvis inte att rekom- mendera. Det skapar samma hårda koppling mellan presentation och inne- håll som forna tiders presentations-HTML. CSS-koden ligger blandad med HTML-koden och man måste redigera varje HTML-fil för sig.

Externa stilmallar

Vi länkar till en extern stilmall med hjälp av ett link-element i head-delen av ett HTML-dokument. Ett typiskt exempel kan se ut så här:

css"  media="screen,projection">

Attributet rel anger vilken relation den länkade resursen har med doku- mentet; i det här fallet är det en stilmall (stylesheet). Attributet type anger MIME-typen och ska alltid anges som text/css. Attributet href anger URI:n till stilmallen som en dokumentrelativ, rotre- lativ eller absolut URI. Attributet media kan innehålla en kommaseparerad lista av medietyper för att ange att stilmallen bara ska användas för vissa medier. De giltiga medie- typerna i CSS. ser du i tabell .. En extern stilmall kan anges som ”alternativ”, vilket innebär att använda- ren kan välja mellan flera olika stilmallar. Opera och Firefox har stöd för al- ternativa stilmallar, men inte Internet Explorer.

Det borde egentligen vara style sheet, men rel kan innehålla flera blankseparerade värden så man måste skriva ihop det till ett ord.

FÅGEL, FISK ELLER MITTEMELLAN? 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 17 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 62 --- #74

✐ ✐

Medietyp Beskrivning all alla medier braille punktskriftsdisplayer embossed utskrift på brailleskrivare handheld handhållna enheter (mobiltelefoner, m.m.) print utskrift på papper, eller förhandsgranskning på skärmen projection visning via projektor screen grafisk bildskärm speech uppläsning via talsyntes tty textterminaler tv tv-apparater och liknande

Tabell .. Medietyper i CSS.

En stilmall markeras som alternativ genom att man anger ordet alternate i rel-attributet:

En stilmall som inte är alternativ kallas persistent (orubblig). Den tillämpas alltid för de medier den definierats för. En alternativ stilmall som i exemplet ovan kallas preferred (önskad). Den tillämpas såvida inte användaren valt en annan alternativ stilmall. En alternativ stilmall med ett title-attribut tillämpas bara om användaren valt den. Flera alternativa stilmallar kan ha samma title-attribut, och slås då av och på tillsammans. Låt oss se på ett mer avancerat exempel:

 STILMALLAR

✐ 18 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 63 --- #75

✐ ✐

Den första stilmallen, layout.css, är persistent. Den kommer alltid att tilläm- pas, oavsett vad användaren väljer. De två som följer därnäst, default_color.css och default_font.css är preferred. De tillämpas tills användaren säger något annat. Det sista paret, contrast_color.css och contrast_font.css är alternate och tillämpas inte förrän användaren väljer ”Hög kontrast” i webbläsaren. Då stängs default_color.css och default_font.css av och ersätts istället av contrast_color.css och contrast_font.css. Figur . och figur . visar hur man kan välja de alternativa stilmallarna i Opera respektive Firefox.

Figur .. Alternativ stilmall i Opera .

Interna stilmallar

En intern stilmall utgörs av ett style-element i head-delen av ett HTML-doku- ment. Reglerna tillämpas bara i det dokument som innehåller stilmallen. Lik- som för externa stilmallar kan man använda attributet media för att begränsa

Opera använder projection i fullskärmsläge Reserveras, men definieras inte i CSS.. I CSS hette denna medietyp aural.

FÅGEL, FISK ELLER MITTEMELLAN? 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 19 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 64 --- #76

✐ ✐

Figur .. Alternativ stilmall i Firefox .

de medier en intern stilmall tillämpas för. Däremot kan interna stilmallar inte vara alternativa. Interna stilmallar kan vi använda i dokument som av någon anledning ska se annorlunda ut än resten av webbplatsen, eller som innehåller något speci- fikt element som inte finns på någon annan sida (ofta formulärfält). Exemplet nedan visar en intern stilmall med en enda regel.

Inline-stilregler

CSS-deklarationer kan anges för enstaka element med attributet style. Det är nästan aldrig att rekommendera. När man felsöker en CSS-layout kan det möjligen vara användbart att exempelvis sätta en skrikig bakgrundsfärg på ett element för att se dess dimensioner, som i nedanstående exempel.

 ... 

. Begrepp att begripa

Så var vi där igen: det är dags att bekanta oss med en uppsättning termer vi behöver för att kunna diskutera CSS. Figur . visar de viktigaste begreppen som vi kommer att gå igenom i de- talj i det här kapitlet.

 STILMALLAR

✐ 20 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 65 --- #77

✐ ✐

Figur .. Termer i CSS.

 @import url("common.css"); Det här kallas en @-regel (@-rule) och vi återkommer till dem i slutet av @-regel kapitlet. De är direktiv till CSS-tolken.

 p {  margin-bottom:1.5em;  }

Det här är en regel (rule eller rule set), bestående av en selektor (p) och ett regel block avgränsat av { och }. Selektorn anger vilka element regeln gäller för – i selektor det här fallet textstycken. block Blocket innehåller en deklaration, bestående av en egenskap (property)– deklaration margin-bottom – och ett värde – 1.5em – med ett kolon emellan. Deklaratio- egenskap nen säger att de element som matchar selektorn (textstycken) ska ha en bot- värde tenmarginal på , em. Om ett block innehåller flera deklarationer åtskiljs de av semikolon, men det är kutym att sätta ut ett semikolon även om man bara har en deklaration. Egenskaper motsvarar de presentationsaspekter vi kan styra med CSS. Oli- ka egenskaper kan ta olika typer av värden; vissa egenskaper tar till och med mer än ett värde. CSS kan skrivas på ett fritt format, där blanktecken och radbrytningar kan användas efter eget skön (med några få undantag). Ovanstående regel skulle till exempel kunna skrivas så här:

 p{margin-bottom:1.5em} eller så här:

 p  {   margin-bottom : 1.5em ;

BEGREPP ATT BEGRIPA 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 21 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 66 --- #78

✐ ✐

  } Nyckelord, namn på egenskaper och liknande är skiftlägesokänsliga i CSS, men praxis är att enbart använda gemener. Vissa saker utanför CSS kontroll kan dock vara skiftlägeskänsliga. Selektorer är det inte i HTML, men däre- mot i XML och XHTML. Namn på typsnitt kan vara skiftlägeskänsliga i vissa operativsystem. Kommentarer i CSS-koden inleds med ”/*” och avslutas med ”*/”, precis som i många programmeringsspråk. En kommentar kan sträcka sig över flera rader.

 /* En kommentar på en rad */   /*  En kommentar på  flera rader  */ Härnäst ska vi titta lite närmare på de olika typer av värden vi kan använda till olika egenskaper.

Hur långt då?

längd En mycket vanlig typ av värden kallas längd (betecknas i CSS-speci- fikationerna). Den består av ett siffervärde och en enhet – utan blanktecken emellan. Siffervärdet kan vara ett decimaltal, men måste i så fall ha en deci- malpunkt på engelskt maner, inte ett komma. Värdet 1.5em i exemplen ovan är en längd. Det finns ett antal olika längdenheter definierade i CSS. De delas in i rela- tiva enheter och absoluta enheter. De relativa enheterna är em, ex och px. En em motsvarar den aktuella textstorleken (graden), medan en ex är x- höjden i det aktuella teckensnittet. En px är en pixel och räknas som en relativ enhet i det här sammanhanget eftersom den inte motsvarar någon exakt fysisk sträcka. CSS-specifikationen ger en lång, komplicerad förklaring av det hela, men kontentan är att en pixel är relativ med avseende på längden hos betraktarens arm(!) och att en stan- dardpixel är ungefär , mm. Absoluta enheter är mm (millimeter), cm (centimeter), in (inch, tum), pt (points, punkter) och pc (picas). En tum är , mm. En punkt är / tum, eller , mm, och en pica är  punkter = / tum, eller , mm.

Förr motsvarade en em bredden på ett versalt M, därav namnet. En x-höjd är definierad även i typsnitt som inte innehåller ett gement ”x”.

 STILMALLAR

✐ 22 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 67 --- #79

✐ ✐

Figur .. Teckenhöjd och x-höjd.

För presentation på bildskärmen är em oftast den mest lämpliga enheten. Px är användbart för exempelvis dimensionen på bilder och för bredden på kantlinjer, men det är olämpligt att ange dimensioner i pixel för element som ska innehålla text, eftersom användaren kan ändra textstorleken i webbläsa- ren. Vid utskrift på papper är em fortfarande gångbart, men även de absoluta enheterna. Px bör man helst undvika vid utskrift, även om CSS-specifikationen säger att de ska räknas om automatiskt vid utskrift på högupplösande skriva- re. För längdvärden som är  (noll) är det tillåtet – och till och med rekom- menderat – att utelämna enheten.

Tänk på procenten Vissa typer av värden kan uttryckas i procent, med ett siffervärde följt av ett %-tecken (utan blanktecken emellan). Ett procentvärde är per definition relativt mot någonting. Exakt vad pro- centen refererar till varierar dock från egenskap till egenskap.

I klartext Vissa värden ska anges som strängar, alltså som text. En sträng omges av citat- tecken ("text") eller apostrofer ('text'). Specialtecken kan ”skyddas” genom att man skriver ett bakvänt snedstreck framför tecknet. Exempelvis, om man behöver använda en apostrof inuti en sträng som omges av apostrofer: 'O\'Brien'. Det bakvända snedstrecket används också för att infoga tecken som in- te går att mata in från tangentbordet, eller som inte kan representeras med den teckenkodning man sparar CSS-filen i. Det ska då följas av – hexa- decimala siffror som anger tecknets kodposition i standardteckenkodningen ISO/IEC  (Unicode). Ett copyrighttecken (©) kan till exempel anges som \a9. Ett blanktecken efter en sådan konstruktion (som kallas escape) ignoreras, vilket man kan utnyttja om tecknet ska följas av en siffra eller någon av bokstä- verna a–f (som är giltiga hexadecimala ”siffror”). Texten ”©” kan alltså skrivas som \a9 2008.

BEGREPP ATT BEGRIPA 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 23 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 68 --- #80

✐ ✐

Om man vill ha ett blanktecken efter en escape måste man alltså skriva två blanktecken, eftersom det första ignoreras.

Färger

Färgvärden kan anges på flera olika sätt. Dels finns ett antal nyckelord (red, green, blue, etc.), men alla webbläsare stödjer inte alla färgnyckelord. Nyckelordet transparent är viktigt, eftersom det anger en genomskinlig ”färg” som inte kan uttryckas med någon av de andra metoderna. Det vanligaste formatet för färger är hexadecimal RGB, vilket inleds med ett #-tecken som sedan följs av antingen  eller  hexadecimala siffror. Färgen #ff0080 anger att R-värdet (rött) är FF (), G-värdet (grönt) är  och B-värdet (blått) är  (). En ganska gräll cerise, alltså. Färgvärden med  siffror är ett kortare skrivsätt för motsvarande -ställiga värde där varje siffra dubbleras; #fc9 är alltså detsamma som #ffcc99. Dessa kortformer räknas numera som ”webbsäkra” färger och jag brukar använda -ställig notation så ofta jag kan. Färgvärden kan också anges som RGB med en funktionsnotation, till exem- pel rgb(255, 0, 128). Observera att värdena ska anges decimalt, inte hexa- decimalt. De ska ligga in intervallet –. Det går även att ange värdena i procent, som rgb(100%, 0%, 50%).

Identifikativt Nyckelord och identifierare i CSS ser ut som strängar, men får inte omges av citattecken eller apostrofer.

 color:green; /* korrekt */   color:"green"; /* fel */

Gå någon annanstans Vissa värden är URI:er. Dessa skrivs med en funktionsnotation, till exempel url("bg.png"). Citattecknen är inte obligatoriska, men vissa tecken måste skyddas om man inte använder dem, så det är vanligtvis bäst att skriva ut dem. En URI kan som vanligt vara dokumentrelativ, rotrelativ eller absolut. En relativ URI i en extern stilmall är relativ i förhållande till stilmallen, inte till HTML-dokumentet som länkar till stilmallen.

Notera att funktionen är url(), inte uri() IE/Mac hanterar inte URI-värden med apostrofer, utan bara med citattecken.

 STILMALLAR

✐ 24 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 69 --- #81

✐ ✐ . Ett selektivt urval

En selektor anger vilka element som deklarationerna i ett regelblock ska tilläm- selektor pas för. Den kan bestå av en kedja av delar, där varje del kallas en enkel selek- tor (namnet till trots kan de vara nog så komplicerade). Mellan två delar finns enkel selektor alltid en kombinator som uttrycker hur delarna förhåller sig till varandra. kombinator Kedjan kan avslutas med ett pseudoelement; ett begrepp som förklaras ne- pseudoelement dan. En selektor kan allstå bestå av en enda ”enkel” selektor. Den kan också be- stå av ett godtyckligt antal enkla selektorer med kombinatorer emellan. Dess- utom kan den avslutas med ett pseudoelement.

Enkla selektorer En enkel selektor börjar med en typselektor eller med en explicit eller implicit typselektor universalselektor. En typselektor matchar en elementtyp (till exempel abbr, p universalselektor eller table i HTML). Universalselektorn är en asterisk (*) och matchar alla element. Den kan vara implicit (underförstådd) om den enkla selektorn in- nehåller andra komponenter, såsom id- eller attributselektorer. Enda gången universalselektorn måste skrivas ut är alltså om den står helt ensam. Efter typselektorn eller universalselektorn kan en enkel selektor innehålla id-selektorer, klasselektorer, attributselektorer och pseudoklasser.

Id-selektorer En id-selektor består av ett #-tecken följt av en identifierare, och matchar det element som har den angivna identiteten. I HTML motsvarar det id-attributet. Eftersom ett id måste vara unikt brukar man inte ange någon typselektor framför, utan använda en implicit universalselektor.

 #nav {...}  *#nav {...} De två selektorerna ovan betyder samma sak. I den första är universalse- lektorn implicit, i den andra är den explicit. Om du läser andras stilmallar kan du stöta på båda varianterna, men när du skriver egen kod bör du välja en variant och hålla dig till den. Jag rekommenderar att utelämna universal- selektorn. Det går naturligtvis att använda en typselektor också, och det finns fall då det är användbart. Netscape  stödjer dock inte id-selektorer med en typse- lektor framför. Observera att id-selektorer är skiftlägeskänsliga i HTML, eftersom id-attri- butet är det.

ETT SELEKTIVT URVAL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 25 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 70 --- #82

✐ ✐

Klasselektorer En klasselektor består av en punkt följd av en identifierare, och matchar al- la element som tillhör den angivna klassen. I HTML motsvarar det class- attributet.

 .message {...}

Ovanstående selektor (som är *.message med en implicit universalselek- tor) matchar alla element som tillhör klassen message, exempelvis dessa:

...

...
... Däremot matchar selektorn inte något av följande element:

...
    ...

Den formella definitionen för klasselektorn ”.C” är att den matchar alla ele- ment vars class-attribut är en blankseparerad lista av ord, varav ett är exakt ”C”. Observera att klasselektorer är skiftlägeskänsliga i HTML, eftersom class- attributet är det.

Attributselektorer En attributselektor omges av hakparenteser (”[” och ”]”) och matchar ett namn- givet attribut. Internet Explorer  och tidigare stödjer inte attributselektorer. Attributnamnen är skiftlägesokänsliga i HTML, men inte i XML. Värdena kan vara antingen eller i HTML, beroende på attribut. I XML är dock värdena alltid skiftlägeskänsliga.

 abbr[title] {...} Den enklaste formen innehåller bara ett attributnamn, och matchar då al- la element för vilka detta attribut är angivet. Exemplet ovan matchar alla för- kortningar (abbr-element) med ett title-attribut, oavsett vilket värde attri- butet har.

 input[type="text"] {...} En attributselektor kan även matcha element där attributet har ett specifikt värde. Exemplet ovan matchar textfält – input-element med type="text". Opera, Firefox och Safari stödjer också tre attributselektorer från CSS, som kan vara användbara:

 a[href^="http://"] {...}

 STILMALLAR

✐ 26 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 71 --- #83

✐ ✐

 img[src$=".png"] {...}  [id*="foo"] {...}

Den första (^=) matchar länkar vars href-attribut börjar med ”http://”. Den andra ($=) matchar bilder vars src-attribut slutar med ”.png”. Den tredje (*=) matchar alla element vars id-attribut innehåller ”foo”. Observera att attributselektorer bara matchar attribut som är angivna i HTML-koden. Vissa attribut har ju standardvärden som används om attribu- tet utelämnas (till exempel method-attributet för form-element), men dessa matchas inte av en attributselektor. Observera också att [id="nav"] inte är helt ekvivalent med #nav. De mat- char visserligen samma element, men det är skillnad i specificitet – ett be- grepp vi återkommer till. Det finns ett par andra varianter av attributselektorer som inte används så ofta.

 [lang|="en"] {...}  [class~="message"] {...}

Den första matchar ett lang-attribut som börjar med ”en” och eventuellt följs av ett bindestreck och mer text. Den är tänkt att användas just för lang- attribut, där språkangivelsen till exempel kan vara ”en-GB” för brittisk eng- elska, ”en-CA” för kanadensisk engelska, ”en-US” för amerikansk engelska, och så vidare. Se även pseudoklassen :lang() nedan. Den andra selektorn är ekvivalent med .message, men kan teoretiskt an- vändas även för andra attribut än class.

Kombinatorer En selektor kan bestå av flera enkla selektorer åtskilda av kombinatorer. En kombinator anger hur selektorerna förhåller sig till varandra. Den vanligaste kombinatorn kallas descendant combinator och utgörs av ett blanktecken. X Y anger att elementet som matchas av Y är ett underordnat element till elementet som matchas av X.

  • Första elementet
  • Andra elementet 
    1. Underelement 1
    2. Underelement 2
  • Tredje elementet
  • 

ETT SELEKTIVT URVAL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 27 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 72 --- #84

✐ ✐

Selektorn ul li matchar alla fem li-elementen i exemplet ovan; såväl de tre som är direkt underordnade ul-elementet (barn) som de två som hör till ol-elementet (barnbarnsbarn). Kombinatorn ”>” kallas child combinator. X>Y anger att elementet som mat- chas av Y är ett direkt underordnat element (barn) till elementet som matchas av X. Selektorn ul>li matchar alltså de tre listelement som är direkt underord- nade ul-elementet i exemplet ovan, men inte de två som hör till ol-elementet. Internet Explorer  och äldre stödjer inte denna kombinator. Kombinatorn ”+” kallas adjacent sibling combinator. X+Y anger att elemen- tet som matchas av Y är ett syskon till elementet som matchas av X, och att det inte finns något element mellan dem; de är intilliggande (adjacent). Internet Explorer  och äldre stödjer inte denna kombinator. CSS definierar kombinatorn ”~”, sibling combinator. X~Y fungerar ungefär som X+Y, men tillåter att det finns andra element mellan X och Y. X och Y mås- te vara syskon och Y måste komma efter X i HTML-koden. Internet Explorer  och äldre stödjer inte denna kombinator.

Rubrik

Första stycket.

Andra stycket.

Tredje stycket.

Selektorn h2+p matchar det första stycket, men inte det tredje efter som det inte är intilliggande relativt rubriken. Selektorn h2~p matchar det första och det tredje stycket. Ingen av selektorerna matchar det andra stycket, eftersom det inte är ett syskonelement till rubriken, utan ett syskonbarn.

Pseudoklasser

Pseudoklasser kan liknas vid de klasser vi kan ange med class-attributet i HTML, men de anges aldrig i koden utan ”inträffar” automatiskt. Två ofta använda pseudoklasser är :link och :visited, som betecknar obesökta respektive besökta länkar. De är ömsesidigt uteslutande; en länk är alltså antingen obesökt eller besökt. Pseudoklassen :focus betecknar ett element (vanligen en länk eller ett for- mulärfält) som har fokus, det vill säga reagerar på tangenttryckningar. Ett for- mulärfält kan få fokus när användaren klickar på det eller navigerar till det via tangentbordet (med Tabb i de flesta webbläsare). En länk får fokus när användaren tabbat till den. Internet Explorer  och äldre stödjer inte :focus. Pseudoklassen :hover betecknar ett element som muspekaren befinner sig över. I Internet Explorer  och äldre stöds den bara för länkar (a-element med ett href-attribut).

 STILMALLAR

✐ 28 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 73 --- #85

✐ ✐

Pseudoklassen :active betecknar ett element medan det ”aktiveras”, allt- så från det att musknappen eller returtangenten trycks ned tills dess att den släpps upp. I Internet Explorer  och äldre stöds den bara för länkar (a-element med ett href-attribut). I version  och äldre tillämpas den dessutom (felak- tigt) för tangentbordsfokus. Pseudoklasserna :focus, :hover och :active är inte ömsesidigt uteslutan- de, utan kan förekomma samtidigt. De kan också kombineras med antingen :link eller :visited när det gäller länkar. De fem pseudoklasser jag nämnt ovan kallas dynamiska pseudoklasser, ef- tersom de appliceras på olika element beroende på vad användaren gör på sidan. Det är mycket vanligt att man vill styra presentationen för dessa pseudo- klasser, särskilt när det gäller länkar. Ordningen på reglerna har då stor bety- delse för resultatet. Det finns ingen ordning som är rätt eller fel, utan det beror helt på vad man vill åstadkomma. Följande ordning torde dock ge önskvärt resultat i de flesta fall:

 a:link {...}  a:visited {...}  a:focus {...}  a:hover {...}  a:active {...}

:link och :visited bör anges först, eftersom de styr hur länkar ser ut i största allmänhet. Därefter är det lämpligt att ange :focus och :hover, medan :active bör komma sist för att ge någon verkan. Det går även att kombinera pseudoklasserna om man vill detaljstyra pre- sentationen. Exempelvis, om man vill ha olika utseende på obesökta och besökta länkar när muspekaren befinner sig över dem:

 a:link:hover {...}  a:visited:hover {...}

Pseudoklassen :lang() kan vi använda om vi vill ha olika stilregler för oli- ka språk. Den tar en språkkod som argument, till exempel :lang(en-US) för amerikansk engelska eller :lang(en) för alla engelska dialekter. Det finns en del skillnader jämfört med attributselektorn [lang|="en"]. Den matchar ett element som har attributet lang="en" (eller lang="en-US", etc.). Pseudoklassen :lang(en) matchar dock ett element där språket är eng- elska; språket behöver inte nödvändigtvis vara angivet för just det elementet, utan kan ha specificerats för ett överordnat element. Ett användningsområde för den här pseudoklassen är när man vill ange olika citattecken för q-elementet för olika språk:

Det stöds dock inte i Internet Explorer  och äldre.

ETT SELEKTIVT URVAL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 29 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 74 --- #86

✐ ✐

 :lang(en) q {...}  :lang(fr) q {...}  :lang(sv) q {...}

Pseudoklassen :first-child matchar ett element som är det första under- ordnade elementet till sin förälder.

Frukter

  • Äpplen
  • Päron
  • Apelsiner

I ovanstående lista skulle selektorn li:first-child alltså matcha listele- mentet ”Äpplen”. Observera att :first-child matchar ett element som är det första under- elementet; den anger alltså inte det första underelementet till ett annat ele- ment. Selektorn ul:first-child skulle inte matcha någonting i ovanstående exempel. I CSS finns en hel uppsättning nya pseudoklasser, varav en hel del redan fungerar i moderna webbläsare. De stöds dock inte av äldre webbläsare, så man bör inte förlita sig på dem på publika webbplatser. Pseudoklassen :last-child i CSS fungerar i analogi med :first-child i CSS; den matchar alltså ett element som är det allra sista underordnade elementet till sin förälder. Varianterna :first-of-type och :last-of-type matchar det första respektive sista underelementet av angiven elementtyp, så p:first-of-type matchar det första stycket i ett element. Specifikationen för CSS anger dessutom pseudoklasserna :nth-child(), :nth-last-child(), :nth-of-type() och :nth-last-of-type(). Alla fyra tar ett argument på formen an+b, där a och b är heltal. Om a eller b är noll kan de utelämnas (a också om det är ett). Båda värdena kan vara negativa. Webbläsaren sätter n=, , , , … och pseudoklassen matchar de unde- relement som har ordningsnumren som ges av uttrycket an+b för varje värde på n. Första underelementet har ordningsnummer . Pseudoklasserna :nth-child(N) och :nth-of-type(N) matchar underele- ment som har N- syskon före sig. Pseudoklasserna :nth-last-child(N) och :nth-last-of-type(N) matchar underelement som har N- syskon efter sig. Pseudoklassen :nth-child(2n+1) matchar alltså underelement med ord- ningsnumren , , , , …; :nth-child(3n-1) matchar ordningsnumren , , , , …; :nth-child(-n+4) matchar de fyra första underelementen och :nth-child(n+2) matchar alla underelement utom det första. Argumentet kan också anges som odd (synonym för 2n+1) eller even (sy- nonym för 2n).

 STILMALLAR

✐ 30 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 75 --- #87

✐ ✐

Dessa pseudoklasser gör det enkelt att skapa zebrarandiga tabeller utan att behöva sätta klasser i HTML-koden:

 tr:nth-child(odd) td {background-color:#cfc}  tr:nth-child(even) td {background-color:#fff}

Andra pseudoklasser i CSS är :only-child och :only-of-type, som mat- char element som är det enda underelementet till sin förälder; :root som matchar rotelementet (html); :empty som matchar alla tomma element och :target som matchar ett element som är målet för en fragmentidentifierare. Det finns också några pseudoklasser i CSS som kan användas för att mat- cha formulärfält. :enabled och :disabled matchar fält som är klickbara re- spektive utgråade, medan :checked matchar kryssrutor och radioknappar som är ”valda”. CSS definierar också pseudoklassen :not(), som tar en enkel selektor som argument. Den matchar alla element som inte matchar den enkla se- lektorn. Exempelvis matchar table:not(.result) alla tabeller utom de som har klassen result; *:not(form) matchar alla element utom formulär, och abbr:not([title]) matchar förkortningar utan title-attribut.

Pseudoelement Pseudoelement är element som inte uttryckligen finns i HTML-koden, utan antingen är underförstådda eller genererade via CSS. Pseudoelementet :first-letter är den första bokstaven eller siffran i ett blockelement eller en tabellcell. Vissa skiljetecken, till exempel citattecken, omedelbart före eller efter den första bokstaven eller siffran ingår också. I följande exempel matchar selektorn p:first-letter bokstaven ”H”.

Hej!

Vi kan tänka oss att koden i ovanstående exempel skulle se ut så här med pseudoelementet utskrivet:

Hej!

:first-letter används främst när man vill skapa en anfang (begynnelse- bokstav som är större än efterföljande text). Om den första bokstaven ligger i ett underordnat blockelement matchar :first-letter ändå.

Hej!

I ovanstående exempel matchar selektorn div:first-letter bokstaven ”H”.

ETT SELEKTIVT URVAL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 31 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 76 --- #88

✐ ✐

Figur .. Exempel på anfang.

Pseudoelementet :first-line matchar den första textraden i elementet. Vilka tecken det motsvarar kan bero på textstorleken eller bredden på webb- läsarfönstret. Liksom för :first-letter kan texten befinna sig i ett under- ordnat blockelement.

Pseudoelement är element som inte uttryckligen finns i  HTML-koden, utan antingen är underförstådda eller genererade  via CSS.

Låt säga att vi har följande CSS-regel:

 p:first-line {text-transform:uppercase} Regeln säger att första textraden i varje stycke ska omvandlas till versaler. Texten kanske visas så här:

Figur .. Resultatet av text-transform:uppercase i ett bredare fönster.

I ett smalare fönster kan den visas så här i stället:

Figur .. Resultatet av text-transform:uppercase i ett smalare fönster.

Pseudoelementen :before och :after anger innehåll som genererats med hjälp av CSS, vilket vi kommer att återkomma till senare i det här kapitlet. Inte helt oväntat anger :before innehåll som genererats före ett element och :after anger innehåll som genererats efter ett element. Exemplet nedan visar en regel som lägger till texten ”(SLUT)” efter ett element med klassen last.

 .last:after {content:"(SLUT)"}

 STILMALLAR

✐ 32 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 77 --- #89

✐ ✐

I CSS använder man två kolon framför pseudoelement, för att skilja dem från pseudoklasser, alltså ::first-letter, etc. CSS definierar också pseu- doelementet ::selection, som matchar text som användaren markerat, till exempel i en textruta:

 textarea::selection {...}

Gruppering Ibland vill man ange samma deklarationer för flera olika selektorer, och då är det bekvämt att använda gruppering för att slippa upprepa deklarationsbloc- ket. Selektorer grupperas med kommatecken:

 td, th {text-align:left} Exemplet gör texten vänsterjusterad i såväl dataceller som rubrikceller. Det är ekvivalent med följande två regler:

 td {text-align:left}  th {text-align:left} Varje selektor i gruppen är självständig och oberoende av de övriga. Om vi vill begränsa ovanstående regel till tabeller med klassen result måste vi skriva så här:

 .result td, .result th {text-align:left} Om vi i stället skriver som i exemplet nedan får regeln en helt annan bety- delse.

 .result td, th {text-align:left} Denna regel är ekvivalent med följande:

 .result td {text-align:left}  th {text-align:left} Den påverkar alltså alla rubrikceller, inte bara de som hör till tabeller med klassen result.

. Arv och kaskad

Arv och kaskad är två mycket centrala begrepp i CSS. Båda är hyfsat enkla att förstå, men deras inverkan i en komplicerad stilmall kan ändå vara besvärlig att reda ut. Hjälpmedel som Dragonfly för Opera (inbyggt fr.o.m. version .) eller Firebug för Firefox är till stor hjälp.

http://www.opera.com/products/dragonfly/ http://www.getfirebug.com/

ARV OCH KASKAD 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 33 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 78 --- #90

✐ ✐

I grova drag kan man säga att arv har med HTML-koden att göra, medan kaskaden rör CSS-reglerna. De två mekanismerna i samverkan styr vilka CSS- deklarationer som tillämpas på varje element i HTML-dokumentet.

Arvsanlag För varje egenskap som definieras i CSS-specifikationen finns det ett initialt initialt värde värde som egenskapen har om inget annat sägs. Vissa CSS-egenskaper, men inte alla, går i arv från ett element till dess un- derordnade element. De egenskaper som ärvs är sådana som det är troligt att de ska vara desamma även för underordnade element, som förgrundsfärg, teckensnitt och radavstånd. Egenskaper som marginaler och kantlinjer ärvs inte, eftersom det inte är sannolikt att ett underordnat element ska ha samma marginaler som sin förälder. Bakgrundsfärger ärvs inte, men det initiala värdet för background-color- egenskapen är alltid transparent (genomskinlig). Vi kan begära att ett underordnat element ska ärva en viss egenskap från sin förälder, med hjälp av nyckelordet inherit (ärv). Det stöds dock inte av Internet Explorer  och äldre.

 p a {color:inherit} Arv i CSS fungerar ungefär som arv i genetiken. Blåögda föräldrar får barn med blå ögon; om förgrundsfärgen för stycken är satt till blå kommer texten i förkortningar och andra underordnade element att vara blå. I CSS kan vi emellertid genmanipulera friskt och ändra de egenskaper vi vill. beräknade värdet Det värde som ärvs är oftast, men inte alltid, det beräknade värdet. Anta att vi har följande CSS-regel i vår stilmall:

 div {font-size:150%}

För varje div-element beräknar webbläsaren vilken faktisk storlek texten ska ha, och det är detta beräknade värde som ärvs av underordnade element.

Ett stycke.

Stor text
Om basstorleken för text är px kommer den beräknade textstorleken för det yttre div-elementet att bli px. Det underordnade p-elementet ärver allt- så värdet px. Det inre div-elementet ärver också värdet px, men eftersom selektorn matchar även det elementet tillämpas regeln en gång till. Texten blir alltså % av px, eller px.

 STILMALLAR

✐ 34 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 79 --- #91

✐ ✐

Arvsmekanismen gör livet mycket lättare för oss, eftersom vi kan ange egen- skaper som förgrundsfärg och teckensnitt för ett element högt upp i struktu- ren, exempelvis html eller body, och låta dem ärvas av alla underordnade ele- ment i dokumentet. Utan arv skulle vi behöva specificera dessa egenskaper för varje elementtyp, vilket skulle bli ohållbart i längden.

En kaskad av regler Som vi sett tidigare är selektorer ett slags mönster, och deklarationerna i en regel tillämpas på alla element som matchar selektorn. Men vad händer om ett element matchar flera olika selektorer? Om reglerna innehåller deklara- tioner för samma egenskaper, men med olika värden, får vi en konflikt. Kas- kaden är den mekanism som reder ut vilken deklaration som ska tillämpas när det uppstår konflikter. Anta till exempel att vi har följande två regler i vår stilmall:

 #special {color:blue}  p {color:green} Vilken färg får texten i följande stycke?

Ett speciellt stycke.

Det kommer du att kunna räkna ut efter att ha läst det här avsnittet. (För den otålige kan jag avslöja att texten blir blå.) Kaskaden utgår från tre olika kriterier: . hur viktig deklarationen är . hur specifik selektorn är . i vilken ordning deklarationerna kommer. En viktig deklaration vinner alltid över en som är mindre viktig. Om två de- klarationer är lika viktiga vinner den som deklarerats för den mest specifika selektorn. Om deklarationerna är lika viktiga och selektorerna är lika specifi- ka vinner den som angivits sist.

Viktigt och mindre viktigt Det första kriteriet är alltså hur ”viktig” deklarationen är. Det beror på två saker: var den är angiven och om den är markerad som extra viktig. Vikten delas in i fem grader; från minst till mest viktig: . webbläsarens inbyggda stilmall . normala deklarationer i användarens stilmall . normala deklarationer i författarens stilmall

ARV OCH KASKAD 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 35 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 80 --- #92

✐ ✐

. viktiga deklarationer i författarens stilmall . viktiga deklarationer i användarens stilmall. En webbläsare har en inbyggd stilmall, en user agent style sheet, som styr hur olika HTML-element presenteras. Den räknas som minst viktig, och reglerna i den används bara om varken användaren eller författaren säger något annat. Författarens stilmall är den vi skriver när vi designar sidan, alltså det vi normalt menar när vi säger ”stilmall”. Vissa webbläsare låter också användaren definiera en egen stilmall, som kallas user style sheet. Den är främst tänkt för människor med särskilda behov, exempelvis på grund av något funktionshinder. En person med nedsatt syn kan till exempel ha en användarstilmall som gör texten större. Vi kan markera en deklaration som extra viktig genom att skriva in tillägget !important efter värdet. Ett exempel:

 .special {  color:red !important;  font-size:120%;  }

Regeln säger att texten i element med klassen special ska vara % av den normala textstorleken och att den ska vara röd. Färgdeklarationen är markerad som extra viktig, vilket innebär att den inte kan skrivas över av nå- gon normal deklaration. Jag rekommenderar inte att du använder !important-deklarationer i onö- dan, eftersom de brukar leda till att stilmallen blir svår att underhålla. Viktiga deklarationer i användarens stilmall har högst vikt, så användare med speciella behov markerar ofta sina regler med !important för att de alltid ska tillämpas.

Specificitet

Om vi undviker att trassla in oss i !important-deklarationer behöver vi nästan aldrig bekymra oss om vikten hos våra deklarationer. De kan ersättas av regler i en användarstilmall, men det varken kan eller bör vi göra något åt. Däremot är det ytterst viktigt att vi förstår begreppet specificitet, eftersom det är något som alla CSS-författare förr eller senare får problem med. Specificiteten kommer in i bilden när vi har en konflikt, alltså två eller flera deklarationer för samma egenskap i ett element, förutsatt att deklarationerna är lika viktiga (vilket de vanligtvis är). Begreppet specificitet anger hur specifik en viss selektor är. Ju mer specifik selektor, desto högre vikt får deklarationen.

 STILMALLAR

✐ 36 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 81 --- #93

✐ ✐

Specificiteten kan vi beräkna med enkla medel. Den består av fyra kom- ponenter som brukar betecknas a, b, c och d, där a är mest signifikant och d minst. Värdet för a är  om deklarationen är angiven i ett style-attribut, och  om den är angiven i en extern eller intern stilmall. Värdet för b är antalet id-selektorer i selektorn. Värdet för c är antalet klasselektorer, attributselektorer och pseudoklasser i selektorn. Värdet för d är antalet typselektorer och pseudoelement i selektorn. Av detta kan vi se att deklarationer som anges i style-attribut i HTML- koden alltid vinner över deklarationer i externa CSS-filer eller interna stil- mallar (style-element). Vi ser också att id-selektorer har hög specificitet. En id-selektor matchar ju högst ett element, så den är mycket specifik. Observera också att universalselektorn (*) och kombinatorer inte påverkar specificiteten. Tabell . visar några exempel på selektorer och deras specificitet.

Selektor a b c d p     .result     #special     [id="special"]     a.external:hover     #nav li a:link:before    

Tabell .. Exempel på specificitet

Om vi ser tillbaka på exemplet i början av avsnittet kan vi nu beräkna de två selektorernas specificitet:

 #special {color:blue}  p {color:green}

Den första selektorn, #special, har specificiteten ,,,. Den andra, p, har specificiteten ,,,. Eftersom man jämför siffrorna från vänster till hö- ger ser vi att ,,, är avsevärt mer specifik än ,,,. Alltså är det deklara- tionen för #special som vinner, och texten blir blå. Här ser vi också skillnaden mellan en id-selektor och en attributselektor som refererar till ett id-attribut. #special har specificiteten ,,,, medan [id="special"] bara har specificiteten ,,,.

ARV OCH KASKAD 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 37 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 82 --- #94

✐ ✐

Om du lägger till en regel i en stilmall och den inte ger något resultat är det mest troliga att du har en regel med en mer specifik selektor som deklarerar samma egenskaper.

En ordningsfråga Om vi har en konflikt mellan deklarationer som är lika viktiga och där selek- torerna har samma specificitet, är det ordningen som styr vilken som kommer att tillämpas. Den deklaration som står sist vinner över de som kommer före. Deklarationerna kan förekomma i samma stilmall eller i olika stilmallar, men det är den som kommer sist som vinner. Låt säga att vi har följande två regler i vår stilmall:

 .book {color:blue}  .foreign {color:green} Vilken färg får texten i följande hänvisning?

Les mots Ingen av deklarationerna är viktigare än den andra. Båda selektorerna har samma specificitet (,,,). Därför är det den sista deklarationen som vin- ner, och texten blir grön.

. Typografisk kontroll

Avsikten med CSS var i första hand att ersätta de elementtyper och attribut i HTML som bara hade med presentation att göra. HTML . innehöll till ex- empel elementtypen font för att ändra teckensnitt och textstorlek. Med CSS kan vi nu göra allt som font-elementet kunde, och mycket mer därtill.

Vilken typ!

Egenskapen font-family låter oss ange vilket teckensnitt vi vill använda. Ef- tersom vi aldrig kan veta om ett visst teckensnitt finns installerat på använ- darens dator kan vi ange värdet som en kommaseparerad lista. Webbläsaren väljer det första teckensnittet i listan som den har tillgång till. CSS definierar också några generella teckensnitt, som visas i tabell .. Webbläsaren mappar dessa mot installerade teckensnitt, och brukar låta an- vändaren ändra inställningarna. Man bör alltid avsluta teckensnittslistan med ett generellt teckensnitt. (Och eftersom ett generellt teckensnitt alltid ger träff är det meningslöst att ange fler teckensnitt efteråt.) Teckensnittsnamn som innehåller blanktecken eller andra icke-alfanume- riska tecken bör omges av citattecken. Två exempel på typiska deklarationer:

 STILMALLAR

✐ 38 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 83 --- #95

✐ ✐

Namn Beskrivning Exempel serif antikva Times sans-serif linjär Verdana monospace ickeproportionellt Courier cursive kursivt skript Brush Script MT fantasy dekorativ URW Chancery

Tabell .. Generella teckensnitt

 font-family:Georgia,Times,"Times New Roman",serif;  font-family:Helvetica,Verdana,Arial,sans-serif; Notera att båda deklarationerna avslutas med ett generellt teckensnitts- namn.

Textstorlek

Egenskapen font-size anger textstorleken (graden). Den kan anges som en absolut eller relativ storlek, som en längd eller som ett procentvärde. De absoluta storlekarna är: ◮ xx-small ◮ x-small ◮ small ◮ medium ◮ large ◮ x-large ◮ xx-large Trots namnet är dessa värden inte kopplade till några exakta, absoluta stor- lekar. CSS-specifikationen säger bara att varje värde måste vara mindre än eller lika stort som det efterföljande. Webbläsarna bör garantera att en ab- solut storlek aldrig blir mindre än px, vilket är den minsta storlek som kan representera gemena latinska bokstäver. De relativa storlekarna är två till antalet: ◮ smaller ◮ larger Kallas även T-shirtstorlekar.

TYPOGRAFISK KONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 39 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 84 --- #96

✐ ✐

De gör texten mindre respektive större än den ärvda storleken, vanligen med en faktor på ,. Om textstorleken anges som en längd (mätetal plus enhet) finns det några saker att tänka på. Enheten em är synnerligen väl lämpad för textstorlekar, då em motsvarar den ärvda storleken. .em anger alltså en storlek som är  procent större än den ärvda, medan .em anger en -procentig minskning av graden. Fysiska enheter som mm (millimeter) och pt (punkter) är inte lämpliga för visning på bildskärm, men kan mycket väl användas vid utskrift på papper. Enheten px (pixel) kan vid första anblicken förefalla lämplig för bildskärms- visning, men det är den inte. Internet Explorer låter nämligen inte använda- ren ändra textstorleken om den är angiven i px eller i någon fysisk storlek. Det är i och för sig logiskt, men ger problem för många användare. Ett procentvärde för font-size fungerar på motsvarande sätt som en längd angiven med em. % motsvarar den ärvda storleken (em), % är , gånger större (.em) och % är  procent mindre (.em). Min rekommendation är att använda em eller procent. Basstorleken, exempelvis för html-elementet, bör anges i procent, för att kringgå en känd bugg i Internet Explorer som annars gör em-baserade värden mindre än em mikroskopiska. En basstorlek i procent anger storleken i för- hållande till webbläsarens standardstorlek. I de flesta moderna webbläsare är det px, men användaren kan ändra det. em motsvarar alltså den ”aktuella” textstorleken, oavsett vilka inställning- ar användaren gjort i sin webbläsare. Det finns ingen koppling mellan em och px, även om många låtsas som om det gör det. Ett vanligt ”tips” är att sät- ta basstorleken till ,% för att em ska motsvara px, men det finns inga garantier för att det fungerar. Dessutom är px för litet för att använda för löpande text. Egentligen vore det enda rätta att alltid sätta basstorleken till %, för att respektera användarens inställningar. Problemet är bara att ytterst få använ- dare ändrar basstorleken, och de flesta teckensnitt blir lite väl stora i px. Personligen väljer jag ofta en basstorlek på ,%, vilket motsvarar px i de flesta webbläsare.

Svärta

Egenskapen font-weight styr svärtan hos texten. Värdet kan anges som , , , …, , eller med något av nyckelorden normal, bold, bolder eller lighter. Nyckelordet normal motsvarar , medan bold (fet) är en synonym för . De flesta teckensnitt hos en normal användare finns bara som normal och fet.

 STILMALLAR

✐ 40 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 85 --- #97

✐ ✐

Det lutar åt kursivstil

Egenskapen font-style anger vilken stil som ska användas för teckensnittet. Värdena kan vara normal, italic eller oblique. Värdet normal representerar vanlig rak text, medan italic anger kursiv stil och oblique anger en lutande stil.

Varianter

Egenskapen font-variant har värdena normal och small-caps (kapitäler). Kapitäler ser ut som versaler, men har samma höjd som gemener. K Figur .. Kapitäler.

Allt på en gång Eftersom man ofta vill ange flera teckensnittsrelaterade egenskaper samtidigt finns en samlingsegenskap (shorthand property) som låter oss göra just det. Den heter kort och gott font och låter oss inte bara ange alla egenskaperna ovan i ett svep, utan ger oss också vissa möjligheter som inte går att åstadkom- ma med de enskilda egenskaperna. Värdet för font är antingen teckensnittsegenskaper, ett systemteckensnitt eller nyckelordet inherit. Det allra vanligaste är att man anger ett antal egenskaper för teckensnittet. Först kan man ange stil, variant och/eller svärta. Därefter anger man graden, eventuellt följd av ett ”/” och det önskade radavståndet. Till sist anger man teckensnitten. Storleken (graden) och teckensnittet är alltså obligatoriska, de övriga egen- skaperna kan man utelämna. De får då sitt initiala värde, som är normal.

 font:100% Helvetica,Verdana,Arial,sans-serif;  font:italic bold 1.2em/1.5 Georgia,serif; Ett systemteckensnitt är ett nyckelord, som sätter alla egenskaperna på samma gång. Det är användbart om man vill representera något med samma utseende som i webbläsaren eller operativsystemet.

 font:menu; De tillåtna värdena visas i tabell ..

TYPOGRAFISK KONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 41 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 86 --- #98

✐ ✐

Värde Beskrivning caption text i knappar icon text under ikoner menu text i menyer message-box text i dialogrutor small-caption text i ”små” kontroller status-bar text i statusraden

Tabell .. Systemteckensnitt

Full kontroll (nästan) CSS ger oss betydligt mer kontroll över typografin än att bara ändra tecken- snittet. Gå inte till överdrift och ändra på allting bara för att det är möjligt. Lär dig gärna lite om typografi innan du ger dig i kast med nedanstående egen- skaper.

Justering

Egenskapen text-align styr textens justering på raden. Värdet kan vara left (vänsterjusterad), right (högerjusterad), center (centrerad) eller justify (vänster- och högerjusterad). Löpande text bör vara vänsterjusterad, eftersom det ger bäst läsbarhet. Un- dertryck helst impulser att använda text-align:justify. Det kanske ser till- talande ut i romaner och tidskrifter, men fungerar sällan särskilt bra på skär- men. Det kan också göra texten svårare att läsa för användare med vissa typer av dyslexi, då det kan uppstå så kallade ”vita floder” genom texten.

 #sidebar h3 {text-align:right}  #nav li {text-align:center}

Indrag I tryck är det vanligt att man inte har något mellanrum mellan styckena, utan att man i stället använder ett indrag på första raden i varje stycke. Egenskapen text-indent styr indraget. Värdet kan vara en längd eller ett procentvärde som refererar till bredden på det block som innehåller texten. Negativa värden är tillåtna och kan användas för att skapa hängande indrag. På webben är det bättre för läsbarheten att använda mellanrum mellan styckena än att enbart ha indrag. Det går förstås att kombinera båda meto- derna. Indraget bör då helst anges som en längd med enheten em.

 STILMALLAR

✐ 42 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 87 --- #99

✐ ✐

 p.hanging {  padding-left:1.5em;  text-indent:-1.5em;  }

Transformering

Egenskapen text-transform styr hur texten ska transformeras innan den pre- senteras. Värdena kan vara none, uppercase, lowercase eller capitalize. Värdena uppercase och lowercase omvandlar texten till versaler respekti- ve gemener. Värdet capitalize är sällan användbart för svenska webbplatser, men kan möjligen användas för rubriker på engelskspråkiga webbplatser. Det omvand- lar första bokstaven i varje ord till en versal. Notera dock att det inte omvand- lar övriga tecken till gemener. Olika webbläsare har olika uppfattning om vad som menas med ”ord”. Ex- empelvis kan ordet ”storm-swept” med text-transform:capitalize visas an- tingen som ”Storm-swept” eller som ”Storm-Swept”.

 h1 {text-transform:uppercase}

Dekoration

Egenskapen text-decoration kan ta ett eller flera av följande värden: blink, line-through, overline eller underline. Värdet kan också anges som none. Värdet blink stöds inte av alla webbläsare, och bör definitivt inte användas i vilket fall som helst. Blinkande innehåll är extremt störande, och kan till och med vara farligt för personer med vissa typer av epilepsi. Värdena line-through, overline och underline ger en linje genom, över respektive under texten. En dekoration som angivits för ett element kan inte ”stängas av” av ett un- derordnat element. Ett vanligt användningsområde för den här egenskapen är att ta bort un- derstrykningen från länkar i en meny:

 #nav a {text-decoration:none}  #nav a:hover {text-decoration:overline underline} Däremot är det inte att rekommendera att ta bort understrykningen från länkar i löpande text, eftersom många datorovana användare då inte uppfat- tar att länkarna är klickbara länkar. Att använda en annan färg hjälper inte heller, eftersom inte alla kan uppfatta alla färger.

TYPOGRAFISK KONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 43 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 88 --- #100

✐ ✐ Avancerat finlir Egenskaperna i det här avsnittet ger oss ännu större kontroll över typografin, men de bör användas måttfullt. Om du inte har goda kunskaper om typografi bör du förmodligen oftast låta bli dem.

Radavstånd

Egenskapen line-height anger radavståndet: avståndet mellan två baslinjer – den tänkta linje som bokstäverna står på (se figur .). Underslängar på gemener går nedanför baslinjen.

Figur .. Baslinje.

Värdet kan anges med nyckelordet normal, som en längd, en numerisk fak- tor eller ett procentvärde. Det har stor betydelse vilken typ av värde man anger, särskilt om elementet har underordnade element med en annan textstorlek. Anges värdet som en längd eller ett procentvärde är det det beräknade värdet som ärvs (procentvärden multipliceras med den aktuella textstorle- ken). Om vi anger line-height som .em eller % och textstorleken är px blir alltså det beräknade värdet px. Underordnade element ärver då line-height:24px, oavsett vilken textstorlek de har. Om vi däremot anger värdet som en numerisk faktor är det den som ärvs. Sätter vi line-height:2.0 kommer texten att visas med dubbelt radavstånd även i underordnade element med en annan textstorlek. Inget av sätten är rätt eller fel, utan det beror helt på vad man vill åstad- komma. Notera att radavståndet också kan anges i egenskapen font, exempelvis

 font:1em/2.0 sans-serif;

Blanka tecken Som blanka tecken räknas mellanslag, tabb, radmatning, sidmatning och vagn- retur (däremot inte fast mellanslag, non-breaking space). Normalt ersätts fle- ra på varandra följande blanka tecken med ett enda mellanslag i ett HTML- dokument, men med egenskapen white-space får vi mer kontroll. Förutom värdet normal finns ytterligare fyra möjliga värden:

Plus inherit, som finns för alla egenskaper.

 STILMALLAR

✐ 44 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 89 --- #101

✐ ✐

Värdet nowrap gör att blanka tecken kollapsar till ett mellanslag, men att radmatningar undertrycks. Text radbryts alltså inte. Värdet pre ger samma presentation som HTML-elementet pre, det vill säga att blanka tecken inte kollapsar och att radbrytning bara sker där det finns radmatningar i texten. Värdet pre-line gör att blanka tecken kollapsar till ett mellanslag. Rad- brytning sker där det förekommer radmatningar i texten, men även för att för- hindra att texten hamnar utanför elementet. Det fungerar alltså som normal, förutom att det även radbryter vid radmatningar i texten. Värdet pre-wrap gör att blanka tecken inte kollapsar. Radbrytning sker som för pre-line. Det fungerar alltså som pre, förutom att det också radbry- ter där det behövs. Stödet för värdena pre-line och pre-wrap är inte alltför utbrett. Dessutom har flera webbläsare begränsningar i vad som går att göra för textarea-ele- ment.

Vertikal justering Som vi kommer att se i nästa avsnitt utgörs varje rad på skärmen eller pap- peret av en rektangel som kallas radbox. Den innehåller i sin tur en eller flera inline-boxar, som genereras av text och inline-element. Egenskapen vertical-align kontrollerar hur en inline-box placeras verti- kalt inom sin radbox. De giltiga nyckelorden och vad de ger för resultat visas i figur .. I figuren visas radboxarna med streckade linjer; radhöjden är större än nor- malt för att skillnaderna mellan de olika värdena ska synas tydligare. Den fär- gade rutan är en liten bild som justerats vertikalt med det värde som står strax före bilden. Värdet baseline är det initiala värdet och innebär att elementet justeras vertikalt så att dess baslinje hamnar på föräldraelementets baslinje. Om ele- mentet inte har någon baslinje, vilket är fallet med bilder som i figur ., justeras dess nederkant mot förälderns baslinje. Värdena sub och super gör att elementets baslinje skiftas nedåt respektive uppåt till en position som är lämpad för ett subskript respektive superskript. Värdet text-bottom justerar elementets nederkant mot nederkanten på teckensnittet. För text-top justeras elementets överkant mot överkanten på teckensnittet. Värdena bottom och top justerar elementet mot motsvarande position i radboxen. Värdet middle justerar elementets vertikala mittpunkt mot en position som ligger en halv x-höjd ovanför förälderns baslinje.

TYPOGRAFISK KONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 45 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 90 --- #102

✐ ✐

Figur .. Vertikal justering.

Värdet för vertical-align kan också anges som en längd eller ett procent- värde, och anger då det avstånd som elementets baslinje ska förskjutas. Pro- centvärden är relativa mot radhöjden.

Spärra och knipa Full typografisk kontroll för att spärra och knipa text har vi inte med CSS, men vi kan ange extra avstånd mellan tecknen (letter-spacing) och mellan orden (word-spacing). Värdena anges som en längd och får vara negativa. Om letter-spacing anges som en längd får webbläsaren inte ändra av- ståndet mellan tecknen för att justera texten vid text-align:justify, utan kan då bara ändra avståndet mellan orden. Ett längdvärde för word-spacing anger ett extra avstånd utöver det norma- la ordmellanrummet. Om du inte har goda kunskaper om typografi rekommenderar jag att du lämnar dessa två egenskaper ifred.

. Layoutkontroll

Den stora nyheten i CSS var möjligheten att styra hela sidans layout på ett sätt som inte var möjligt med CSS. Tyvärr tog det ganska länge innan webb- läsarna infört tillräckligt bra stöd för CSS – särskilt Internet Explorer, som ännu i version  saknar stöd för många viktiga delar av specifikationen. Hu- vudkonkurrenterna Opera, Firefox och Safari ligger dock långt framme, även om ingen av dem är helt felfri.

 STILMALLAR

✐ 46 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 91 --- #103

✐ ✐ Rektanglarnas underbara värld CSS handlar i grund och botten om rektanglar. Varje HTML-element som ska visas för en webbsida genererar en eller flera rektanglar, som går under be- nämningen boxar. boxar På samma sätt som HTML är indelat i blockelement och inline-element har CSS två grundtyper av boxar: blockboxar och inline-boxar. Grundregeln är att blockelement genererar blockboxar och inline-element genererar inline- boxar. När en webbläsare ska visa ett HTML-dokument händer det en hel del bak- om kulisserna. Processen sker i två faser: tolkningsfasen (parsing) och ritfa- sen (rendering). I tolkningsfasen läser och tolkar webbläsaren HTML-koden, och bygger upp ett så kallat DOM-träd. CSS-reglerna tillämpas på DOM-trädet och ska- par en liknande hierarkisk struktur av boxar. I ritfasen ritar webbläsaren boxhierarkin enligt tämligen komplicerade reg- ler. Vi behöver tack och lov inte känna till alla detaljerna, men det kan vara bra att känna till de stora dragen i processen, eftersom det underlättar förstå- elsen för hur vi skriver våra CSS-regler på bästa sätt.

Boxmodellen Först och främst bör vi bekanta oss med den så kallade boxmodellen. Det inne- bär några nya termer – igen – men de är inte så många och bör vara ganska lätta att förstå. Den prickade ramen i figur . motsvarar själva innehållet i elementet, och har bredden (width) em och höjden (height) em. Utanför innehållet finns padding (stoppning) på em. Paddingen omges av en kantlinje med bredden ,em. Utanför kantlinjen finns elementets marginaler; i det här fallet em. CSS-koden för elementet i figur . ser ut så här:

 width:8em;  height:6em;  margin:2em;  padding:1em;  border:0.5em solid #060;  background-color:#ccf; Innehållsrutans prickade kantlinje är tillagd i figuren för att visa var själ- va innehållet finns. Den streckade kantlinjen runt marginalzonen är också tillagd i figuren för att göra den tydligare.

Se kapitel  för detaljer om DOM-trädet.

LAYOUTKONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 47 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 92 --- #104

✐ ✐

Figur .. Boxmodellen.

Vi har alltså angivit elementets bredd som em och dess höjd som em. Den totala bredden för boxen är:  + , +  +  +  + , +  = em Den totala höjden är:  + , +  +  +  + , +  = em Padding, kantlinjer och marginaler läggs alltså till utanpå de dimensioner vi anger för elementet. Internet Explorer för Windows version , och även nyare versioner i ”quirks mode” har dock en helt felaktig boxmodell där de angivna dimensionerna an- vänds för den totala boxen (exklusive marginaler). Innehållets dimensioner blir där alltså det som återstår när kantlinjer och padding subtraherats från de angivna dimensionerna. I vårt exempel skulle innehållet alltså bara bli em brett och höjden skulle bli ynka em.

Rita rektanglar I ritfasen ritar webbläsaren alla de genererade boxarna till utmediet. Det sker på två nivåer: blockboxar ritas på sitt sätt och inuti dem ritas inline-boxarna. Om vi inte säger något annat ritas boxarna i den ordning elementen före- kommer i HTML-koden. Blockboxarna läggs ut vertikalt, den ena efter den andra. Avståndet mellan dem bestäms av eventuella vertikala marginaler. Om innehållen i två på varandra följande blockboxar bara skiljs åt av deras marginaler, det vill säga att ingen padding och inga kantlinjer förekommer

 STILMALLAR

✐ 48 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 93 --- #105

✐ ✐

emellan, kommer marginalerna att kollapsa. Det innebär att de överlappar, och nettoresultatet blir den största av de två. Figur . visar ett exempel på kollapsande marginaler. Den övre boxen har en bottenmarginal på px. Den streckade linjen visar dess totala utbred- ning. Den undre boxen har en toppmarginal på px, och dess utbredning markeras av den prickade linjen.

Figur .. Kollapsande marginaler.

Som du ser överlappar de två marginalerna varandra, så att avståndet mel- lan innehållet i den övre boxen och innehållet i den undre boxen är px, inte px+px. Vertikala marginaler på ett element kan också kollapsa med förälderns marginaler, om de är i kontakt med varandra. Det finns ett antal faktorer utöver padding och kantlinjer som förhindrar att marginaler kollapsar. Vi återkommer till dem efterhand som vi träffar på dem. Inline-boxar läggs ut horisontellt inuti blockboxarna. Riktningen beror på skrivriktningen i dokumentet, men för svenskt vidkommande kan vi lugnt räkna med att de läggs ut från vänster till höger. Varje rad på bildskärmen eller papperet utgörs av en tänkt rektangel som kallas radbox (line box). En väldigt bred inline-box, till exempel texten i ett radbox långt stycke, delas vid behov upp i flera på varandra följande radboxar. Rad- boxar läggs ut uppifrån och ned, utan något avstånd emellan. Själva höjden på radboxen kan vi dock påverka via egenskapen line-height, som vi sett tidigare. En radbox kan också innehålla flera inline-boxar. Deras vertikala justering styrs då, som vi sett, via egenskapen vertical-align. För blockboxen styr egenskapen text-align hur inline-boxarna fördelas horisontellt inom rad- boxen.

Våga välja visningssätt Varje synligt HTML-element genererar alltså en eller flera boxar. Lite förenk- lat kan man säga att blockelement genererar blockboxar, medan inline-ele- ment genererar inline-boxar. Om det behövs kan vi ändra på den saken. Med egenskapen display kan vi styra exakt vilken typ av box som ska genereras för ett visst element.

LAYOUTKONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 49 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 94 --- #106

✐ ✐

Värde Ger resultat none ingen box alls block en blockbox inline en inline-box inline-block en blockbox som läggs ut som en inline-box run-in (se nedan) list-item en blockbox plus en inline-box för en listmarkör table en tabellbox inline-table en tabellbox som läggs ut som en inline-box table-caption en tabellrubrikbox table-column-group en kolumngrupp table-column en tabellkolumn table-header-group en radgrupp för tabellhuvud table-row-group en radgrupp för tabellkropp table-footer-group en radgrupp för tabellfot table-row en tabellrad table-cell en tabellcell

Tabell .. Styr visningen av element med hjälp av egenskapen display.

Boxar av typerna inline-block och inline-table beter sig som inline- boxar på utsidan, men som en blockbox respektive tabell inuti. En run-in-box är främst tänkt att användas för rubriker som visas i början av ett stycke, i stället för på en egen rad ovanför stycket. Den genererar anting- en en blockbox eller en inline-box, beroende på den boxtyp som nästa element har. Reglerna är lite komplicerade, och eftersom stödet för display:run-in är uselt (i skrivande stund är det bara Opera och Safari som stödjer värdet) lämnar vi det därhän. Experimentera gärna själv i Opera eller Safari. De list- och tabellrelaterade display-värdena kommer vi att se närmare på lite senare. Vissa andra egenskaper påverkar värdet på display, vilket vi ska se när vi kommer in på flytande boxar och absolut positionering. Nedanstående exempel gör att listelementen i listan med id="nav" gene- rerar inline-boxar och alltså läggs ut horisontellt.

 #nav li {display:inline}

 STILMALLAR

✐ 50 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 95 --- #107

✐ ✐

När storleken har betydelse

Vi kan ange dimensionerna för en blockbox med egenskaperna width och height. Värdena kan anges som en längd, ett procentvärde eller med nyckelordet auto (som är det initiala värdet). Procentvärden refererar till motsvarande dimension hos det innehållande blocket (containing block), vilket för normala innehållande blocket boxar är den box som genereras av det överordnade blockelementet. Värdet auto innebär att webbläsaren räknar ut värdet för dimensionen ba- serat på andra kända värden, exempelvis marginaler. En bredd eller höjd får naturligtvis inte vara negativ. Kom ihåg att width och height anger dimensionerna för innehållet i ele- mentet; eventuella kantlinjer, marginaler och padding läggs till utöver den angivna storleken. Det är alltså ingen höjdare att sätta width:100% och dess- utom lägga till padding eller kantlinjer. Procentvärden för height kräver att det innehållande blocket har en angi- ven höjd. En procentuell höjd för rotelementet (html) refererar till höjden på webbläsarfönstret eller papperets utskriftsyta. Exemplet nedan sätter dimensionerna för den box som genereras av ele- ment med klassen product.

 .product {  width:100%;  height:4em;  } Boxen fyller ut hela föräldrablockets bredd och höjden är  teckenenheter. Vi kan också ange gränsvärden för dimensionerna, med hjälp av egenska- perna min-width, max-width, min-height och max-height. Värdena är läng- der eller procentvärden. Följande exempel anger att stycken ska generera boxar som är  tecken- enheter breda, men att de inte får bli bredare än det innehållande blocket.

 p {  width:80em;  max-width:100%;  } Nästa exempel anger att elementet ska generera en box som är minst  teckenenheter hög. Om innehållet kräver mer plats än så kommer boxen att bli så hög som det behövs.

 #nav {min-height:12em} Observera att det är meningslöst att ange en dimension och ett gränsvärde med samma måttenhet.

LAYOUTKONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 51 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 96 --- #108

✐ ✐

Internet Explorer version  och tidigare stödjer inte min- och max-varian- terna, men behandlar height som om det vore min-height.

I marginalen Det finns fyra egenskaper som vi kan använda för att ange marginalen på en sida på en box. De heter margin-top, margin-bottom, margin-left och margin-right. Liksom för width kan värdena anges som längder, procentvärden eller med nyckelordet auto. Procentvärden anges relativt det innehållande blockets bredd – även för de vertikala marginalerna! Värdet auto är ekvivalent med  för vertikala marginaler. För horisontella marginaler gör det att marginalen räknas ut automatiskt. Om både vänster- och högermarginalen anges som auto beräknas de så att de blir lika stora. Med andra ord kommer boxen att bli horisontellt centrerad inom det innehållande blocket. Nedanstående exempel gör att sidan anpassar sig till bredden på webblä- sarfönstret, men sätter en minimibredd och en maximibredd. Om fönstret är smalare än minimibredden får vi en horisontell rullist. Om fönstret är bredare än maximibredden kommer sidan att centreras horisontellt i fönstret.

 body {  min-width:20em;  max-width:70em;  margin-left: auto;  margin-right:auto;  } Eftersom det är vanligt att man vill ange marginalerna för flera sidor på ett element finns även en samlingsegenskap som heter margin. Den låter oss ange marginalerna för alla fyra sidorna på en gång, via ett, två, tre eller fyra värden. Om vi anger ett enda värde gäller det för alla sidorna.

 margin:1em; Ovanstående deklaration är alltså ekvivalent med följande:

 margin-top:1em;  margin-bottom:1em;  margin-left:1em;  margin-right:1em; Anger vi fyra värden sätter vi förstås samtliga sidor separat. Ordningen är av stor betydelse: värden anges som top, right, bottom, left; alltså medurs med början från toppen.

 STILMALLAR

✐ 52 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 97 --- #109

✐ ✐

En hjälp för minnet kan vara det engelska ordet TRouBLe. Om man kom- mer ihåg det slipper man trubbel.

 margin:10px 20px 30px 40px; Ovanstående deklaration är alltså ekvivalent med följande:

 margin-top:10px;  margin-right:20px;  margin-bottom:30px;  margin-left:40px; Om vi använder två eller tre värden tillämpas de i TRouBLe-ordning, och de utelämnade värdena kopieras från motstående sida.

 margin:0 auto; Ovanstående är detsamma som:

 margin-top:0;  margin-right:auto;  margin-bottom:0; /* samma som top */  margin-left:auto; /* samma som right */ Eller med tre värden:

 margin:2em 0 1em; Detta är ekvivalent med:

 margin-top:2em;  margin-right:0;  margin-bottom:1em;  margin-left:0; /* samma som right */

En madrasserad cell Padding är, som vi sett, ett slags ”inre” marginal mellan innehållet och en eventuell kantlinje. Till skillnad från marginaler kollapsar aldrig padding, och paddingarean är en del av boxen såtillvida att en bakgrundsfärg eller bak- grundsbild syns därunder. Likheterna med marginaler är stora; det finns fyra specifika egenskaper (padding-top, padding-bottom, padding-left och padding-right) samt en samlingsegenskap (padding). Värdena kan anges som längder eller procentvärden, men nyckelordet auto finns inte för padding. Procentvärden refererar till det innehållande blockets bredd, även för vertikal padding. Samlingsegenskapen padding tar ett, två, tre eller fyra värden i TRouBLe- ordning, precis som margin.

LAYOUTKONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 53 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 98 --- #110

✐ ✐

Exemplet nedan visar hur man kan ange padding för tabellceller med CSS i stället för med det föråldrade HTML-attributet cellpadding.

 td, th {padding:0.5em 1em} Här ser vi att vi har betydligt större kontroll med CSS. Vi kan ange padding- en i teckenenheter (cellpadding bara i pixel) och vi kan dessutom ha olika padding för olika sidor på cellen; i exemplet används ,em vertikal padding och em horisontell padding. En madrasserad cell, helt enkelt.

Utåt kanterna En box kan ha kantlinjer utanför paddingarean. Varje kantlinje kan definieras separat via tre värden: linjebredd, linjetyp och linjefärg. Det går att ange linjebredden för varje enskild kant med egenskaperna border-top-width, border-right-width, och så vidare. Det går också att ange bredderna för alla fyra kantlinjerna med samlingsegenskapen border-width, som tar ett, två, tre eller fyra värden i den vanliga TRouBLe-ordningen. Linjebredden kan anges som en längd eller med något av nyckelorden thin, medium eller thick. Det initiala värdet är medium. CSS-specifikationen definie- rar inga exakta bredder för de tre nyckelorden, utan det är upp till varje webb- läsare att bestämma. Linjetypen (border-top-style, etc.) anges med något av nyckelorden ne- dan. Exempel på de synliga typerna visas i figur ..

Nyckelord Ger resultat none ingen kantlinje hidden dold (se nedan) solid heldragen linje dotted prickad linje dashed streckad linje double dubbel heldragen linje groove D-effekt för inristad linje ridge D-effekt för relieflinje inset D-effekt för nedsänkt box outset D-effekt för upphöjd box

Tabell .. Välj linjetyp med hjälp av nyckelord.

 STILMALLAR

✐ 54 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 99 --- #111

✐ ✐

Egenskaperna heter alltså border-top-style etc, och det finns en sam- lingsegenskap som heter border-style som tar ett, två, tre eller fyra värden i TRouBLe-ordning. Värdet hidden fungerar som none, men det finns en väsentlig skillnad när det gäller tabellceller. Vi återkommer till det när vi tittar närmare på tabell- relaterade CSS-egenskaper. Värdet double ritas som två heldragna linjer, där border-width anger sum- man av linjebredderna och avståndet mellan linjerna. Internet Explorer  och äldre ritar linjer av typen dotted som om de vore dashed om linjebredden är px. Det gör även IE i vissa fall.

Figur .. Exempel på linjetyper.

Linjefärgen anges med border-top-color etc, eller med samlingsegenska- pen border-color. Anger man ingen färg används boxens förgrundsfärg. Det finns fyra samlingsegenskaper där vi kan ange bredd, typ och färg sam- tidigt för en kantlinje. De heter border-top, border-bottom, border-left och border-right.

 border-bottom:1px solid #00f; Ordningen på värdena spelar ingen roll, men jag rekommenderar att du är konsekvent. Själv föredrar jag ordningen i exemplet ovan: bredd, typ, färg. Utelämnar man ett värde sätts det initiala värdet för den egenskapen. Slutligen finns det också en samlingsegenskap, border, som låter oss ange bredd, typ och färg för alla fyra kantlinjerna på en enda gång.

LAYOUTKONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 55 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 100 --- #112

✐ ✐

 border:8px ridge #66f; Om man vill ha likadana kantlinjer på tre sidor, men ingen kantlinje på den fjärde, är det enklast att först använda border och sedan ta bort den fjärde linjen, som i följande exempel.

 border:1px solid #ffca00;  border-left:none;

Värdet none medför automatiskt att linjebredden blir . Vill man ha en annan färg på en kantlinje gör man enklast på liknande sätt, som i följande exempel.

 border:1px solid #000;  border-bottom-color:#fff;

Konturer Kantlinjer påverkar som vi sett boxens dimensioner. Ibland vill man ha en ram runt en box utan att dimensionerna förändras, särskilt om förändringen sker dynamiskt (exempelvis via en pseudoklass som :hover). Då kan man använda en outline (kontur) i stället för en kantlinje. Internet Explorer  och äldre stödjer dock inte konturer. Konturer kan inte anges separat för de fyra sidorna, utan bara för ramen som helhet. Vi kan sätta linjebredd, linjetyp och linjefärg med egenskaper- na outline-width, outline-style och outline-color. Dessutom finns sam- lingsegenskapen outline som motsvarar border. En kontur ritas runt boxen, men påverkar inte boxens dimensioner. En tjock kontur kan alltså skymma annat innehåll som befinner sig nära boxen. Konturer kan vara användbara när man felsöker en CSS-design, för att vi- sa var boxarna befinner sig och hur stora de är. De kan också användas för att ge visuell återkoppling till användaren, till exempel för att indikera det formulärfält som har tangentbordsfokus:

 input[type="text"]:focus {  outline:2px solid yellow;  }

Färger och bakgrunder

Egenskapen color styr förgrundsfärgen i en box, det vill säga färgen på text, textdekorationer och – om inget annat sägs – kantlinjer. Värdet kan anges som ett nyckelord (exempelvis red), hexadecimalt (#f00 eller #ff0000), eller RGB (rgb(255,0,0) eller rgb(100%,0%,0%)). Kantlinjer kan även ha ”färgen” transparent.

 STILMALLAR

✐ 56 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 101 --- #113

✐ ✐

 .warning {color:red} En box har även en bakgrund, som kan ha en färg och en bakgrundsbild. Bakgrunden omfattar innehållet, paddingarean och går även ut under kant- linjen, vilket man kan se om man har kantlinjer med typerna dotted, dashed eller double. Egenskapen background-color styr bakgrundsfärgen. Värdet kan anges på samma sätt som för color, men kan också ha värdet transparent (genom- skinlig), som är det initiala värdet. Man bör som regel ange bakgrundsfärg och förgrundsfärg samtidigt, för att vara säker på att inte råka ut för oläsliga kombinationer.

 .important {background-color:red}  .warning {color:red} Ovanstående regler gör texten omöjlig att läsa i ett stycke som det följande:

Databasen kommer att raderas om  du trycker på OK!

Om de två CSS-reglerna dessutom är deklarerade i separata CSS-filer kan det vara svårt att upptäcka att de inte bör kombineras. Genom att ange både bakgrundsfärg och förgrundsfärg tillsammans elimi- nerar vi åtminstone det problemet.

 .important {  background-color:red;  color:white;  }   .warning {  background-color:yellow;  color:red;  } Enligt kaskadreglerna kommer stycket nu att få röd text på gul bakgrund, eftersom regeln för .warning deklareras sist (de är ju lika viktiga och har sam- ma specificitet). Med egenskapen background-image kan vi ange en bakgrundsbild för box- en. Värdet är en relativ eller absolut URI.

 background-image:url("/images/bg.jpg");

Värdet kan också vara none, vilket är det initiala värdet. En bakgrundsbild kan vara ett mönster som man vill ska upprepas så att det fyller ut hela boxen. Egenskapen background-repeat ger oss möjlighet att upprepa bilden horisontellt (repeat-x), vertikalt (repeat-y) eller både och

LAYOUTKONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 57 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 102 --- #114

✐ ✐

(repeat). Det initiala värdet är repeat, så om vi inte vill att bakgrundsbilden ska upprepas måste vi använda värdet no-repeat. För att kontrollera placeringen av en bakgrundsbild kan vi använda egen- skapen background-position. Den tar ett eller två värden: det första anger den horisontella placeringen och det andra den vertikala. Om bara ett värde anges blir bilden vertikalt centrerad. Värdena kan anges som längder, procentvärden eller nyckelord. En längd anger avståndet mellan boxens vänsterkant eller överkant till bildens väns- terkant respektive överkant. Nyckelorden kan anges som left, center eller right för horisontell place- ring och som top, center eller bottom för vertikal justering. Använder man nyckelord spelar ordningen på värdena ingen roll. Ett procentvärde är lite mer komplicerat. Värdet % innebär att en punkt som ligger % från bildens kant kommer att justeras mot en punkt som ligger % från boxens kant. Värdet % är alltså detsamma som left eller top; vär- det % är detsamma som center och värdet % är detsamma som right eller bottom. Egenskapen background-attachment kan ha värdena scroll eller fixed. Det initiala värdet är scroll, vilket innebär att bakgrundsbilden rullar till- sammans med innehållet i boxen om elementet har en rullist. Värdet fixed gör att bakgrundsbilden är fixerad och innehållet rullar ovanpå den. Slutligen finns samlingsegenskapen background som låter oss ange alla bak- grundsegenskaperna samtidigt.

 background:blue url("/blue.png") repeat-x fixed left top; Kom ihåg att utelämnade värden får det initiala värdet för motsvarande egenskap.

 background:url("/blue.png"); Ovanstående regel är alltså ekvivalent med följande:

 background-color:transparent;  background-image:url("/blue.png");  background-repeat:repeat;  background-attachment:scroll;  background-position:0% 0%;

Konsten att göra sig osynlig I dynamiska layouter vill man ibland visa eller dölja delar av sidan när an- vändaren utför olika åtgärder. Ett vanligt sätt att dölja en box är att sätta display:none med hjälp av JavaScript. Det innebär att elementet och dess underordnade inte längre genererar några boxar alls; boxarna försvinner från

 STILMALLAR

✐ 58 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 103 --- #115

✐ ✐

sidan och det påverkar layouten, då efterföljande boxar flyttas runt för att fyl- la det utrymme som frigjorts. Ibland är detta inte önskvärt, utan man vill tända och släcka boxar utan att sidlayouten påverkas. Egenskapen visibility låter oss göra just det. Det initiala värdet är visible (synlig), men genom att sätta det till hidden (dold) förhindrar vi att boxen visas. Den upptar fortfarande samma utrymme i layouten, men den ritas inte ut. Ett tredje tillåtet värde är collapse, men det kan bara tillämpas på vissa interna tabellobjekt och vi återkommer till det i avsnittet om tabeller. Sätter vi display:none förhindrar vi att elementet genererar en box. Vi för- hindrar också att alla underordnade element genererar några boxar. Det hjäl- per inte att sätta display till något annat värde för en underordnad box; om föräldern inte genererar någon box kan inga underordnade boxar genereras heller. Om vi däremot använder visibility:hidden kan vi göra underordnade boxar synliga genom att sätta visibility:visible för dem. Både display:none och visibility:hidden hindrar vissa skärmläsare att läsa upp innehållet, så de bör användas med urskillning.

Spill inte på duken! Låt säga att vi specificerat bredd och höjd för ett blockelement, men innehållet kräver mer utrymme än våra angivna dimensioner. Vad händer? Normalt kommer innehållet att visas, men det spiller utanför elementets gränser. Med egenskapen overflow kan vi reglera vad som ska hända. Det initiala värdet är visible, som alltså gör spillet synligt. Det kan leda till att det innehåll som spiller utanför elementet hamnar under efterföljande innehåll. Värdet hidden medför att innehåll som spiller utanför elementet inte visas alls. Det finns inget sätt för användaren att komma åt det (förutom att titta på HTML-koden, något som förvånansvärt få normalanvändare uppskattar). Värdet scroll ger rullister på elementet, så att användaren kan komma åt det innehåll som inte ryms inom boxens dimensioner. Värdet auto fungerar som scroll, men visar bara rullisterna om det be- hövs.

 pre.viewport {  width:50em;  height:20em;  overflow:auto;  }

LAYOUTKONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 59 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 104 --- #116

✐ ✐

I exemplet sätter vi overflow:auto för pre-element med klassen viewport. Den genererade boxen är em bred och em hög. Om innehållet inte får plats i boxen visas en eller två rullister. I en box med overflow satt till något annat än visible kollapsar inte mar- ginalerna med marginalerna på underordnade boxar.

Att flyta ovanpå I veckotidningar är det vanligt att man har bilder mitt i artikeltexten, så att texten ”flyter” runt bilden. Det kan vi åstadkomma med CSS också, med hjälp av egenskapen float. Den har funnits ända sedan CSS, just för det ända- målet. På senare år har float dock fått ett nytt, viktigt användningsområde: layouthantering. Egenskapen float kan ta något av värdena none, left eller right. Värdet none är det initiala värdet och innebär att boxen inte flyter alls. Värdena left och right gör boxen flytande till vänster respektive höger. När en box görs flytande lyfts den ut ur det normala dokumentflödet och skiftas så långt det går till vänster eller höger, beroende på float-värdet. In- nehåll i det normala flödet går runt boxen på den motsatta sidan, som i fi- gur .. En flytande box förskjuts åt sidan tills den stöter emot förälderns padding- area, eller tills den krockar med en annan box som flyter i samma riktning. Om det inte finns plats för en flytande box på grund av andra boxar som flyter i samma riktning skiftas boxen nedåt. Den skiftas inte nödvändigtvis nedanför alla tidigare flytande boxar, utan bara så långt det behövs för att den ska få plats, som framgår av figur ..

Figur .. Flytande box.

Den fjärde boxen ryms inte på samma rad som de andra flytande boxarna, så den måste skiftas nedåt. Så snart den går fri från den tredje boxen finns det plats; den behöver inte skiftas nedanför den stora box nummer två. Att sätta float till left eller right får vissa konsekvenser utöver att gö- ra boxen flytande. Boxen blir automatiskt en blockbox, och dess marginaler kollapsar inte med intilliggande element. Flytande boxar lyfts alltså ur det normala dokumentflödet. Det innebär att de inte påverkar den blockbox som är förälder till den; föräldraboxens

 STILMALLAR

✐ 60 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 105 --- #117

✐ ✐

Figur .. En flytande box skiftas nedåt om den inte får plats på raden.

höjd ökar inte för att ge plats åt den flytande boxen. Inte heller efterföljande blockboxar påverkas. Däremot kortas radboxarna av jämte den flytande box- en. Detta framgår av figur ., där det första stycket innehåller en flytande box. Styckena har kantlinjer och bakgrundsfärg som visar att de inte påverkas av den flytande boxen. Däremot ser vi att radboxarna intill den flytande boxen kortats av, så att texten löper vid sidan av den.

Figur .. Flytande boxar påverkar inte blockboxar.

Om man vill att en box ska expandera så att den omsluter alla flytande underordnade boxar finns det flera alternativ. Man kan göra även föräldern flytande, sätta overflow till något annat än visible, eller använda sig av ge- nererat innehåll som vi kommer att se närmare på senare i det här kapitlet. Alla metoderna har sina nackdelar, så ibland måste man helt enkelt lägga till ett extra element i HTML-koden och sätta clear (se nedan) på det. Internet Explorer  och äldre har många märkliga buggar i hanteringen av flytande boxar. Bland annat lägger den alltid till en marginal om px på höger

LAYOUTKONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 61 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 106 --- #118

✐ ✐

sida om en box som flyter till vänster (och på vänster sida om en box som flyter till höger). Om en flytande box har en marginal i den riktning den flyter, och den marginalen snuddar vid förälderns kant, fördubblas marginalen.

Frigång Effekten i figur . är ofta önskvärd, särskilt för bilder i löpande text. Ibland vill man dock inte att exempelvis en rubrik ska visas vid sidan av en flytande bild. Egenskapen clear låter oss ange att en box ska gå fri från flytande boxar. Värdena left och right begränsar frigången till att gälla boxar som flyter i den angivna riktningen, medan both avser alla flytande boxar. Värdet kan också anges som none, vilket är det initiala värdet och anger att boxen inte behöver gå fri från några flytande boxar. Frigången åstadkoms genom att boxen skiftas nedåt tills dess överkant ham- nar nedanför den undre kanten av den flytande boxen. Om boxen har en topp- marginal räknas den från det föregående icke-flytande blockelementet, inte från den flytande boxen. Den skiftas bara så långt ned att den går fri från den flytande boxen, som synes i figur .. Vill vi vara säkra på att få ett visst av- stånd mellan en flytande box och en box med frigång kan vi antingen sätta en bottenmarginal på den flytande boxen eller en toppadding på boxen med frigång. En vanlig layoutlösning för sidor med flera kolumner är att göra kolum- nerna flytande. Vill man ha en sidfot nedanför sätter man bara clear:both på den, så hamnar den nedanför alla kolumner, oavsett vilken som är längst.

Figur .. Exempel på frigång.

 STILMALLAR

✐ 62 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 107 --- #119

✐ ✐

Negativa marginaler på flytande boxar Om vi anger ett negativt värde för en marginal på en flytande box händer in- tressanta saker. En negativ vänstermarginal på en box som flyter till vänster gör att hela boxen skiftas till vänster. Om boxen skiftats nedåt för att den inte fick plats bredvid andra flytande boxar kan en negativ marginal göra att den plötsligt ryms! En negativ högermarginal på en box som flyter till vänster flyttar in margi- nalen inom boxen, så att innehåll till höger om boxen kan överlappa den. Det här låter kanske som rena grekiskan, men det kan faktiskt vara oerhört användbart för vissa typer av layouter. Innan vi kan titta närmare på detaljer- na behöver vi emellertid bekanta oss med ännu en finess i CSS: positione- ring.

Tajta trikåer

Om en normal blockbox har width:auto, vilket är det initiala värdet, beräknas dess bredd utifrån förälderns bredd och eventuella marginaler, padding och kantlinjer. Det gäller inte för flytande boxar; istället beräknas bredden på en flytande box med width:auto utifrån dess innehåll. Boxen blir precis så bred som det behövs, något som kallas shrink-wrapping på engelska, ungefär som plastfolie runt ett paket köttfärs.

En fin position Hittills har vi bara sett boxar som hamnar där de hamnar på grund av det innehåll som kommer före dem, samt flytande boxar som skiftas till vänster eller till höger. CSS ger oss större möjligheter än så. Vi kan faktiskt placera boxar precis var som helst på sidan. Hemligheten heter positionering. positionering Egenskapen position styr om en box är positionerad eller inte. Det initiala värdet är static, vilket innebär att boxen inte är positionerad utan läggs ut i det normala flödet. Värdet relative låter oss skifta boxen horisontellt och/el- ler vertikalt i förhållande till dess ursprungliga position. Värdena absolute och fixed gör att vi kan placera boxen var som helst. Termerna avser boxens placering i förhållande till det normala flödet, inte till webbläsarfönstret. Fem andra egenskaper är intimt förknippade med position: nämligen top, right, bottom, left och z-index. De fyra första har olika innebörd beroende på vilken typ av positionering vi använder, medan z-index styr den vertikala ordningen på överlappande boxar.

LAYOUTKONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 63 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 108 --- #120

✐ ✐

Innehållande block Innan vi kastar oss över positioneringens detaljer finns det ett begrepp vi be- höver förstå: innehållande block (containing block). För statiska boxar, alltså boxar som inte är positionerade, är det innehål- lande blocket alltid närmaste överordnade blockbox. Detsamma gäller för re- lativt positionerade boxar. För absolut positionerade boxar är reglerna lite annorlunda. Där är det in- nehållande blocket den närmast överordnade positionerade boxen. Om det vyn inte finns någon överordnad box som är positionerad är vyn (viewport) inne- hållande block. CSS-specifikationen är lite otydlig, men vi kan anse vyn vara ekvivalent med html-elementet. Boxar med position:fixed har alltid vyn som innehållande block.

Relativt sett

En relativt positionerad box läggs först ut som en vanlig, statisk box. Om top eller bottom har ett värde skilt från noll skiftas sedan boxen vertikalt. Om left eller right har ett värde skilt från noll skiftas boxen horisontellt. Det är viktigt att förstå att det bara är den ritade boxen som flyttas; själ- va elementet upptar fortfarande den ursprungliga platsen och övriga boxar i layouten läggs ut som om den vore kvar där. Om vi anger top:1em kommer boxens överkant att förskjutas em. Den för- skjuts mot den motsatta kanten – alltså nederkanten – så boxen flyttas em nedåt. Värdet left:20px skiftar boxen px åt höger. Ett negativt värde ger en förflyttning i andra riktningen, så bottom:-1em är detsamma som top:1em. Det är med andra ord meningslöst att ange både top och bottom eller både left och right. Däremot är det fullt möjligt att ange en vertikal och en horisontell förflyttning samtidigt, exempelvis top och left. Eftersom det bara är den ritade boxen som flyttas, och övriga boxar beter sig som om den relativt positionerade boxen vore kvar i sin ursprungsposi- tion, kan relativ positionering medföra att boxar överlappar varandra. Om boxen flyttas ett längre avstånd uppstår ett ”hål” i dokumentet där den låg från början. Relativ positionering går att kombinera med flytande boxar: en flytande box kan förflyttas vertikalt och horisontellt. Tillsammans med negativa mar- ginaler ger det mycket intressanta möjligheter för layouter med flera spalter, som vi kommer att se i kapitel . I ett av de viktigaste användningsområdena för position:relative flyttas boxen inte över huvud taget. Målet är då inte att skifta boxen, utan att göra den positionerad. Anledningen har att göra med innehållande block. Positio- nen för ett absolut positionerat block anges relativt dess innehållande block, och det gäller även för procentuella dimensioner. Därför är det ytterst viktigt

 STILMALLAR

✐ 64 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 109 --- #121

✐ ✐

att ha kontroll på vad som är det innehållande blocket när man använder ab- solut positionering. Genom att sätta position:relative på det block vi vill ha som innehållande block för ett absolut positionerat underordnat block får vi full kontroll.

Absolutism En absolut positionerad box lyfts ut ur det normala flödet helt och hållet. Den påverkar varken sin förälder eller efterföljande element; det är som om den inte längre fanns kvar i layouten. Det är inte helt fel att tänka sig att boxen lyfts upp i ett lager ovanför det statiska innehållet, och att de element som kommer efter helt enkelt glider in i det utrymme den tog upp. En absolut positionerad box blir automatiskt en blockbox och den kan inte flyta (det beräknade värdet på float blir none). Dess marginaler kollapsar inte med intilliggande boxars. Egenskaperna top, right, bottom och left anger avståndet mellan boxens respektive kanter och motsvarande kanter på det innehållande blocket. Det innebär alltså att right:1.2em placerar den absolut positionerade boxens hö- gerkant ,em från det innehållande blockets högerkant, inte dess vänster- kant. Det går alltså att ange dimensionerna för en absolut positionerad box med hjälp av de fyra positionsegenskaperna. Vi kan också ange positionen för ett hörn samt en bredd och en höjd. Procentuella värden för positionsegenskaperna eller för width och height är relativa mot det innehållande blocket, vilket inte nödvändigtvis är detsam- ma som föräldern. Såväl Internet Explorer  och äldre som Opera  och äldre använder felaktigt föräldern som utgångspunkt. Det är fullt möjligt att placera en absolut positionerad box helt eller delvis utanför det synliga dokumentet, något som kan användas för strukturellt in- nehåll som behövs för textwebbläsare eller skärmläsare, men inte i en grafisk webbläsare med stöd för CSS.

 .structural {  position:absolute;  left:-999em;  } Eftersom absolut positionerade boxar lyfts ur det normala flödet finns det inget sätt att garantera att efterföljande innehåll placeras nedanför dem, som vi kan göra med clear för att ge frigång från flytande boxar. Absolut positio- nering är därför inte lämpligt för flerspaltslayouter där man vill ha en sidfot med full bredd. Det stöds dock inte av Internet Explorer  och äldre.

LAYOUTKONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 65 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 110 --- #122

✐ ✐

Rör dig inte!

Fast placering – position:fixed – är ett specialfall av absolut positionering där vyn alltid är det innehållande blocket. En fast placerad box behåller sin po- sition i webbläsarfönstret när användaren skrollar dokumentet. Vid utskrift visas en fast placerad box på varje sida. Internet Explorer  och äldre har inte stöd för position:fixed.

Tredje dimensionen Trots att vi vanligen räknar med två dimensioner i ett webbdokument han- terar CSS faktiskt tre. Vi kan visserligen inte ange att en box ska sväva fem centimeter framför bildskärmen, men vi behöver ändå vara medvetna om den tredje dimensionen i vissa fall. I CSS räknas X-axeln horisontellt och Y-axeln vertikalt, med origo i övre vänstra hörnet av skärmen eller papperet. Men det finns också en Z-axel, i rät vinkel mot de andra två. Den löper alltså rakt ut från ritytan. Vi kan inte ange en position längs Z-axeln som en längd eller ett procent- värde, men med egenskapen z-index kan vi styra över ordningsföljden på överlappande, positionerade boxar. Värdet är ett heltal eller nyckelordet auto. lager Boxar ritas i ett antal lager. Nedifrån räknat: . bakgrunder och kantlinjer . underordnade positionerade boxar med negativt index . underordnade blockboxar i det normala flödet . flytande underordnade boxar och deras innehåll . underordnade inline-boxar i det normala flödet . underordnade positionerade boxar vars index är auto eller  . underordnade positionerade boxar med positivt index. kontext Positionerade boxar med z-index angivet som ett heltal skapar en kontext med dessa sju lager, där boxen själv har index . Om det finns flera boxar med samma index är det källkodsordningen som styr. Det är viktigt att komma ihåg att varje kontext är atomär. En box i kontext A kan aldrig placeras mellan boxar i kontext B; bara ovanför eller nedanför dem.

Snabba klipp

Egenskapen clip definierar det synliga området i en positionerad box. Värdet är en rektangel eller nyckelordet auto.

 STILMALLAR

✐ 66 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 111 --- #123

✐ ✐

En rektangel anges med funktionsnotation: rect(top,right,bottom,left). Varje parameter är en längd eller auto. Värdena för top och bottom räknas från boxens överkant. Värdena för left och right beror på skrivriktningen, men för svenskt vidkommande kan vi anta att de räknas från boxens vänsterkant. Ett värde angivet som auto är detsamma som motsvarande kant.

 #tunnel {  position:absolute;  width:500px;  height:300px;  clip:rect(100px, 300px, 200px, 100px);  } Exemplet ovan genererar en absolut positionerad box som är px bred och px hög. Den sista deklarationen avgränsar det synliga området till en rektangel vars övre vänstra hörn är (,) och som är px bred och px hög. Allt innehåll i elementet med id="tunnel" som inte befinner sig inom den angivna rektangeln blir alltså osynligt.

Pest eller kolera Efter all denna teori inställer sig naturligtvis frågan huruvida det är bättre att använda flytande boxar eller absolut positionering för layout av ett webbdo- kument. Dessvärre, om än inte helt oväntat, är svaret att det beror på. Båda metoderna har sina för- och nackdelar. Såväl flytande som absolut positionerade boxar tas ur det normala flödet, vilket innebär att vi oftast behöver se till att det finns plats för dem utan att de hamnar i vägen för annat innehåll. Internet Explorer för Windows innehåller många bisarra buggar när det gäller flytande boxar. De är väl dokumenterade och det finns kända metoder för att kringgå dem, men det går oftast åt några timmars testande och en del svordomar innan allt fungerar. Internet Explorer har också en del besvärande buggar som rör absolut positionering, och där kan det vara svårare att kringgå problemen. Till råga på allt har denna webbläsare vissa buggar som uppträder när man har en absolut positionerad box efter en flytande box…! För en layout med flera spalter, där man vill ha en sidfot med full bredd, är valet enkelt: bara flytande boxar kan komma ifråga, eftersom det generellt inte går att placera en box nedanför en absolut positionerad box med okänd höjd. Behöver man ingen sidfot är det en mer öppen fråga. Med flytande boxar är det mer komplicerat att åstadkomma en presentationsordning som skiljer sig från källkodsordningen. Det är helt enkelt en bedömning man får göra för varje webbplats.

http://positioniseverything.net/

LAYOUTKONTROLL 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 67 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 112 --- #124

✐ ✐

I teorin skulle vi förstås kunna använda de tabellrelaterade värdena för egenskapen display, men i praktiken är det ogenomförbart så länge som In- ternet Explorer  och  har en betydande marknadsandel, eftersom de saknar stöd för dessa värden.

. Specifik CSS

Vissa egenskaper tillämpas bara på vissa typer av boxar, exempelvis sådana som genereras av listelement eller tabeller. I det här avsnittet kommer vi också att titta lite närmare på genererat in- nehåll, eftersom det hör nära ihop med listor och citat.

Listor

En ordnad lista (ol) eller en oordnad lista (ul) genererar en vanlig blockbox. Den har vanligen vissa marginaler eller padding som standard i webbläsarnas inbyggda stilmallar, men egenskapen display har värdet block. Ett listelement (li) i en sådan lista, däremot, har ett alldeles speciellt värde för display, nämligen list-item. En sådan box genererar en blockbox för innehållet, men även en extra box för listmarkören. Placeringen av den extra boxen beror på värdet av en annan egenskap: list-style-position. Om värdet är outside, vilket är det initiala värdet, placeras markörboxen utanför blockboxen. Om läsriktningen är vänster-till- höger hamnar markörboxen till vänster om blockboxen. Det är därför själva listans box har en vänstermarginal (eller padding): för att lämna utrymme för markörboxarna. Den exakta placeringen kan vi inte styra över, och den skiljer sig en aning mellan olika webbläsare. Om värdet är inside blir markörboxen en inline-box allra först i listelemen- tets blockbox. Egenskapen list-style-type styr vilken typ av listmarkör som visas i mar- körboxarna. De giltiga värdena ser du i tabell . och tabell ..

Värde Beskrivning circle en ofylld cirkel disc en fylld cirkel square en fylld kvadrat

Tabell .. Listtyper för oordnade listor

Värdet kan också vara none för att indikera att inga listmarkörer ska ritas ut.

 STILMALLAR

✐ 68 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 113 --- #125

✐ ✐

Värde Beskrivning armenian armenisk numrering decimal decimal numrering decimal-leading-zero tvåsiffrig nollutfylld decimal numrering georgian georgisk numrering lower-alpha, lower-latin gemena latinska bokstäver lower-greek gemena grekiska bokstäver lower-roman gemena romerska siffror upper-alpha, upper-latin versala latinska bokstäver upper-roman versala romerska siffror

Tabell .. Listtyper för ordnade listor

För Internet Explorer  och äldre gäller att de inte stödjer värdena armenian, decimal-leading-zero, georgian och lower-greek. De stödjer inte heller vär- dena lower-latin och upper-latin, men de stödjer de alternativa formerna lower-alpha och upper-alpha. De flesta webbläsare använder disc för oordnade listor och decimal för ordnade listor som standard. Vill man ha en annan listmarkör kan man istället infoga en bild genom att använda egenskapen list-style-image. Värdet är en URI, till exempel:

 list-style-image:url("/css/marker.png"); Eftersom vi inte kan påverka placeringen av listmarkören, förutom att ange om den ska ligga inom eller utom blockboxen, är det oftast bättre att sätta list-style-type:none och använda en vanlig bakgrundsbild för li-elemen- ten i stället. Slutligen finns en samlingsegenskap som låter oss sätta alla tre egenska- perna på en gång. Den heter list-style och tar upp till tre värden i valfri ordning: listtyp, listposition och bild. Om ett värde utelämnas används det initiala värdet för motsvarande egenskap.

 list-style:disc url("ball.png") outside; Det är bra att ange en listtyp även om man använder en bild som markör. Om bilden är oåtkomlig, eller om webbläsaren inte har stöd för bilder, visas då den angivna markörtypen.

SPECIFIK CSS 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 69 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 114 --- #126

✐ ✐ Tabeller Tabeller är komplicerade i HTML, och de är även tämligen komplicerade i CSS. Dels finns det några egenskaper som bara tillämpas för tabeller, dels finns det ett antal värden för mer generella egenskaper som bara är menings- fulla i tabeller. Det är naturligtvis så att många av de här värdena är standardvärden för tabeller och deras underordnade elementtyper i webbläsarnas inbyggda stil- mallar, men det är också fullt möjligt att använda dem på helt andra element för att få dem att bete sig som exempelvis tabellceller. Det här kan vi se som det moderna och acceptabla sättet att använda tabel- ler för layout. Att märka upp innehållet med

och så vidare är förstås alldeles galet om det inte rör sig om tabellinformation. Men att använda CSS för att presentera semantiskt korrekta element i en tabelliknande struktur är en helt annan sak. Du som brukar kika på andras stilmallar höjer kanske på ögonbrynen vid det här laget, förvånad över att du aldrig sett den här fantastiska metoden an- vändas. Orsaken är, som så ofta när det gäller de mer intressanta delarna av CSS, att Internet Explorer  och äldre helt saknar stöd för de tabellrelatera- de display-värdena. Så länge som dessa webbläsare har en icke försumbar andel av marknaden är CSS-tabeller inget annat än en våt dröm för de flesta formgivare på webben. Innan vi går vidare ska vi granska en tabells anatomi och definiera en del begrepp. De flesta av dem är säkert redan bekanta. interna tabellobjekt En tabell kan innehålla ett antal interna tabellobjekt: en ledtext (caption), en eller flera radgrupper samt en eller flera kolumngrupper. En radgrupp be- står av rader och en kolumngrupp består av kolumner. En rad eller kolumn består av celler.

Figur .. Interna tabellobjekt.

I HTML-tabeller finns inte kolumner och kolumngrupper i egentlig me- ning, utan tabeller består av radgrupper, rader och celler. Med CSS går det att kontrollera presentationen av kolumner och kolumngrupper i viss mån.

 STILMALLAR

✐ 70 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 115 --- #127

✐ ✐

För att få en uppfattning om vad de tabellrelaterade display-värdena in- nebär kan vi jämföra dem med de olika elementtyperna i HTML.

HTML CSS table table inline-table

caption table-caption

colgroup table-column-group

col table-column

thead table-header-group

tfoot table-footer-group

tbody table-row-group

tr table-row

th table-cell td

Tabell .. HTML-element och display-värden

Hierarkin av interna tabellobjekt i CSS är lika strikt som den i HTML, men en skillnad är att webbläsaren automatiskt skapar de objekt som behövs för att bibehålla strukturen. Om vi sätter display:table-cell för en box vars förälder inte är av typen table-row, skapar webbläsaren ett radobjekt runt cellobjektet. Den skapar också ett tabellobjekt runt raden, om det behövs. Om vi sätter display:table för en box och en underordnad box inte är en caption, radgrupp, kolumngrupp, rad eller kolumn, skapar webbläsaren ett radobjekt runt den underordnade boxen. Om ett underordnat objekt till ett radobjekt inte är en cell skapas ett cell- objekt automatiskt.

Kolumner och kolumngrupper

På boxar av typen table-column eller table-column-group kan vi bara sätta ett fåtal egenskaper. Vi kan sätta kantlinjer (border, etc.) på dem, men bara i den kollapsande kantlinjemodellen (se nedan). Vi kan också ange bakgrunder (background, etc.) om celler och rader är genomskinliga. Vi kan ange bredden (width).

SPECIFIK CSS 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 71 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 116 --- #128

✐ ✐

Dessutom kan vi sätta visibility till collapse (alla andra värden ignore- ras). Det fungerar som hidden, på så sätt att kolumnen eller kolumngruppen inte ritas ut, men intilliggande kolumner fyller ut det frigjorda utrymmet. Ta- bellens layout i övrigt påverkas dock inte, så webbläsaren behöver inte beräk- na kolumnbredder och liknande på nytt. Stödet för visibility:collapse är dock nästintill obefintligt.

Layoutalgoritmer

En vanlig blockbox med width:auto blir automatiskt lika bred som sin föräl- der – minus eventuella horisontella marginaler. Det gäller inte för tabeller; deras bredd bestäms i stället av innehållet om vi inte sätter en explicit bredd (och även då kan tabellen bli bredare än vad vi angivit, om det behövs). Vi kan emellertid centrera en tabell horisontellt genom att sätta margin-left och margin-right till auto. Det finns två olika algoritmer för att bestämma hur breda tabellens ko- lumner ska vara: en fastbreddsalgoritm och en automatisk. Med egenskapen table-layout kan vi välja algoritm via värdena fixed respektive auto. Det initiala värdet är auto. Fastbreddsalgoritmen förutsätter oftast att man satt en explicit bredd på tabellen, även om webbläsarna får använda den även för tabeller med automatisk bredd (dock inte för inline-table). Kolumnbredderna bestäms i första hand av width-angivelser på kolumn- objekten med fastbreddsalgoritmen. Om det finns kolumner med automatisk bredd tittar webbläsaren på cellerna i första raden och bedömer hur breda kolumnerna behöver vara. Fördelen med fastbreddsalgoritmen är att den är snabb, genom att den inte behöver undersöka varenda cell i tabellen. För tabeller med många rader kan det göra stor skillnad i hur snabbt sidan ritas. Den automatiska algoritmen är mer omständlig och kräver vanligen att webbläsaren går igenom hela tabellen två gånger. I det första passet beräknar den minsta och största tänkbara bredden för varje kolumn, baserat på inne- hållet i de celler som ingår i kolumnen. I det andra passet ritar den ut cellerna, efter att ha bestämt den optimala bredden för varje kolumn. Även för kantlinjer finns det två olika modeller: separata eller kollapsan- de linjer. Egenskapen border-collapse låter oss välja vilken modell som ska användas. Värdena är separate (det initiala värdet) eller collapse. I den separata kantlinjemodellen kan bara cellerna och själva tabellen ha kantlinjer. Rader, radgrupper, kolumner och kolumngrupper kan däremot inte ha några. Kantlinjerna ritas separat runt varje cell, och vi kan styra av- ståndet mellan cellerna med hjälp av egenskapen border-spacing. Den tar ett eller två längdvärden: horisontellt och vertikalt avstånd. Om vi anger ba- ra ett värde används det för båda avstånden.

 STILMALLAR

✐ 72 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 117 --- #129

✐ ✐

Figur . visar samma tabell som i figur ., men med följande tillägg:

 border-collapse:separate;  border-spacing:1em 0.5em; En annan egenskap som bara tillämpas i den separata kantlinjemodellen är empty-cells, som styr huruvida tomma celler ritas ut med kantlinjer och bakgrund. Det initiala värdet är show, men tomma celler kan döljas med vär- det hide. Internet Explorer  och äldre stödjer inte empty-cells och beter sig som om standardvärdet var hide.

Figur .. Separata kantlinjer.

En cell anses vara tom om den inte har något innehåll alls; om den bara innehåller blanktecken, tabbtecken, vagnreturer och radmatningar, eller om den har visibility:hidden. I den kollapsande kantlinjemodellen finns det inget avstånd mellan cel- lerna. I stället överlappar kantlinjerna varandra. Med den här modellen kan även rader, radgrupper, kolumner och kolumngrupper ha kantlinjer, förutom celler och själva tabellen. Det kan alltså vara en hel drös med kantlinjer som överlappar varandra på vissa positioner. CSS-specifikationen anger regler för vilken kantlinje som ska ritas i dessa situationer. Något förenklat kan man säga att det är den mest iögonfallande kantlinjen som visas. Undantaget är om någon av kantlinjerna har border-style:hidden. I så fall har det värdet företräde och ingen kant- linjer visas på den positionen.

Genererat innehåll Det låter kanske lite märkligt att vi kan generera innehåll med hjälp av CSS. Innehållet bör väl finnas i innehållsskiktet (HTML), inte i presentationsskiktet (CSS)? Visst är det så, och det är förstås inte meningen att vi ska använda CSS för att generera något egentligt sidinnehåll. Däremot kan vi generera visst innehåll som bara har med presentationen att göra, exempelvis:

SPECIFIK CSS 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 73 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 118 --- #130

✐ ✐

◮ citattecken kring citat ◮ räknare (automatisk numrering) ◮ listmarkörer ◮ andra typer av markörer.

CSS. medger bara att vi genererar innehåll i pseudoelementen :before och :after. Internet Explorer  och äldre har inget som helst stöd för genere- rat innehåll (inte för de två pseudoelementen heller, för den delen). I Opera fungerar genererat innehåll generellt, inte bara för de två pseudoelementen, vilket ursprungligen definierades i CSS (och troligen återkommer i CSS). För att generera innehåll använder vi egenskapen content. Värdet består av en eller flera komponenter, med blanktecken emellan. En komponent kan vara en sträng, omgiven av citattecken eller apostrofer:

 p.last:after {  content:"[SLUT]";  padding-left:1em;  } Exemplet ovan deklarerar innehållet i ett pseudoelement som genereras ef- ter ett stycke med klassen last. Innehållet i det genererade pseudoelementet är texten ”[SLUT]” och det har en padding om em på vänster sida. Låt säga att vi i har följande element i vårt HTML-dokument:

De levde lyckliga i alla sina dagar.

Det presenterade resultatet blir då som följer:

 De levde lyckliga i alla sina dagar. [SLUT] CSS-specifikationen säger att värdet också kan anges som none eller normal, men stödet i dagens webbläsare är i stort sett obefintligt för dessa nyckelord. Om man behöver ”ångra” en regel kan man i stället använda en tom sträng som värde.

 #special p.last:after {  content:"";  padding-left:0;  } En komponent kan också vara en referens till ett attributvärde, med funk- tionsnotationen attr(). Följande regel skriver ut URI:n inom vinkelhakar ef- ter en länk:

 a:after {  content:" <" attr(href) ">";  }

 STILMALLAR

✐ 74 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 119 --- #131

✐ ✐

Anta att vi har nedanstående länk i vårt dokument:

exempel Regeln ovan, som till exempel kan vara användbar i en stilmall för utskrift på papper, gör att länken presenteras så här:

 exempel

Notera att värdet för content här består av tre komponenter: en sträng, en attributreferens och ytterligare en sträng. Enligt specifikationen kan en komponent också vara en URI med funk- tionsnotationen url(), men mig veterligt finns det ingen webbläsare som stöd- jer det. Meningen är att det genererade innehållet ska utgöras av innehållet i den resurs URI:n anger. Slutligen kan en komponent ange att ett citattecken ska infogas eller vara en referens till en räknare, något vi ska se på härnäst.

Räknare En räknare kan vi använda om vi vill åstadkomma automatisk numrering av räknare vissa typer av element. Ett bekant exempel är listelement (li) i en ordnad lista (ol) som numreras automatiskt av webbläsaren. Med hjälp av räknare och genererat innehåll kan vi påverka den numreringen, exempelvis genom att ändra startvärdet, genom att ha numrering i flera nivåer för listor i listor, eller genom att numrera elementen i fallande ordning. Vi kan också lägga till automatisk numrering av andra elementtyper, som rubriker, stycken, tabellrader, eller vad vi nu vill. Med egenskapen counter-reset kan vi skapa eller återställa räknare. Vär- det består av en eller flera identifierare åtskilda av blanktecken. Identifierarna är helt enkelt de namn vi ger våra räknare. Om vi anger ett heltal efter en iden- tifierare återställs räknaren till det värdet. Anger vi inget värde sätts räknaren till . Egenskapen counter-increment räknar upp en eller flera räknare. Värdet ser ut som för counter-reset, men eventuella heltal anger hur mycket räk- naren ska räknas upp (eller ned, om värdet är negativt). Anges inget värde räknas räknaren upp med . Låt oss se på ett par exempel för att se hur det hela fungerar.

 table {  counter-reset:row;  }   tbody tr {  counter-increment:row;  }

SPECIFIK CSS 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 75 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 120 --- #132

✐ ✐

  tbody td:first-child:before {  content:counter(row) ":";  padding-right:0.5em;  } Den första regeln definierar en räknare med namnet row. En sådan räkna- re skapas för varje tabellelement och initieras till , eftersom vi inte angivit något annat värde. Den andra regeln säger att räknaren ska räknas upp ett steg för varje rad (tr) i tbody. Den tredje regeln infogar räknarvärdet och ett kolon före innehållet i den första datacellen i varje rad. Resultatet blir något i stil med figur .. Funktionsnotationen counter() tar alltså en identifierare – namnet på en räknare – som argument och infogar det aktuella räknarvärdet. Vi kan även ange ett andra argument i form av ett av de giltiga uppräkningsvärdena för list-style-type för att presentera räknarvärdet. Standardvärdet om vi ute- lämnar argumentet är decimal, men vi kan infoga räknarvärdena som ro- merska siffror i exemplet ovan genom att använda counter(row,upper-roman).

Figur .. Enkel räknare.

Nästa exempel visar hur vi kan skapa en numrerad lista i godtyckligt antal nivåer. HTML-koden för listan ser ut så här:

  1. Däggdjur 
    1. Växtätare 
      1. Rådjur
      2. Älg
    2. Rovdjur 
        
      1. Björn
      2.  STILMALLAR

        ✐ 76 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

        ✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 121 --- #133

        ✐ ✐

        

      3. Varg
      4. 
    3. 
  2. 
  3. Fåglar 
      
    1. Finkar 
        
      1. Bofink
      2. 
      3. Grönfink
      4. 
    2. 
    3. Mesar 
        
      1. Blåmes
      2. 
      3. Talgoxe
      4. 
    4. 
  4. 
CSS-reglerna ser ut så här:

 ol {  margin:0;  padding:0;  counter-reset:item;  }   ol ol {  padding-left:1.5em;  }   li {  margin:0;  padding:0;  list-style:none inside;  counter-increment:item;  }   li:before {  content:counters(item, ".");  padding-right:0.5em;  } Den första regeln nollställer marginaler och padding för ordnade listor, och definierar räknaren item. Regel nummer två anger att en underordnad lista ska ha ett visst indrag till vänster.

SPECIFIK CSS 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 77 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 122 --- #134

✐ ✐

Tredje regeln nollställer marginaler och padding för listelement, tar bort listmarkören och anger att räknaren item ska räknas upp för varje element. Om vi tittar på HTML-koden ser vi att listor innehåller andra listor. Hur går det då med våra räknare? Deklarationen counter-reset:item gäller ju för alla ordnade listor – kommer då inte en underordnad lista att nollställa den räknare som skapats av den överordnade listan? Nej, det är så fiffigt inrättat att en räknare som skapas med counter-reset får en räckvidd (scope) som omfattar det element som skapar räknaren samt dess underordnade element. För varje underordnad lista skapas alltså en ny, självständig instans av räknaren item. Den sista regeln infogar räknarvärdena före varje listelement. Här använ- der vi funktionsnotationen counters(), som infogar värdet för alla instanser av den angivna räknaren som existerar i aktuellt scope. Det andra argumentet är en sträng som anger den separator som ska användas mellan varje instans. Liksom för counter() kan vi ange en presentationstyp för räknaren, men stan- dardvärdet är decimal. Resultatet av att tillämpa dessa CSS-regler på HTML-koden i exemplet ser du i figur ..

Figur .. Räknare i flera nivåer.

 STILMALLAR

✐ 78 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 123 --- #135

✐ ✐

Citattecken

Egenskapen content går även att använda för att styra när, hur och var auto- matiska citattecken infogas. Normalt sett är det bara elementtypen q som har automatiska citattecken, men vi kan skapa dem för andra element också. Värdena open-quote och close-quote i egenskapen content infogar ett in- ledande respektive avslutande citattecken. Dessutom ökar respektive mins- kar de den aktuella citatnivån. Värdena no-open-quote och no-close-quote ökar respektive minskar ci- tatnivån, men utan att infoga något citattecken. Egenskapen quotes anger vilka citattecken som ska användas för varje ci- tatnivå. Värdet består av ett eller flera par strängar; varje par anger citatteck- nen för en nivå. Den första strängen i varje par anger det inledande citatteck- net och den andra strängen det avslutande. Vi kan exempelvis definiera citattecken för svenska och brittisk engelska på följande sätt:

 :lang(sv) q {  quotes:"\201d" "\201d" "\bb" "\ab";  }   :lang(en-GB) q {  quotes:"\2018" "\2019" "\201c" "\201d";  } Här anger vi citattecken för två nivåer, med hjälp av character escapes ef- tersom dessa tecken inte är så lätta att åstadkomma från tangentbordet.

CSS är hett nu! Citatet ovan presenteras som ”CSS är »hett« nu!”.

CSS is hot now! Det engelska citatet presenteras som ‘CSS is “hot” now!’. De inbyggda stilmallarna i moderna webbläsare har alltså följande regler för elementtypen q:

 q:before {content:open-quote}  q:after {content:close-quote} Om vi vill presentera blockcitat på amerikanskt maner kan vi använda föl- jande deklarationer:

 blockquote p {quotes:"\201c" "\201d"}  blockquote p:before {content:open-quote}  blockquote p:after {content:no-close-quote}  blockquote p.last:after {content:close-quote}

SPECIFIK CSS 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 79 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 124 --- #136

✐ ✐

Varje stycke i ett blockcitat kommer nu att börja med ett inledande citat- tecken (“) men bara stycket med klassen last avslutas med ett citattecken (”). Notera att stycken som inte har klassen last har ett genererat innehåll efter sig med värdet no-close-quote. Det behövs för att räkna ned citatnivån som ökats av open-quote för varje stycke. Observera att citatnivån enbart styrs av CSS-regler. Den ökas av open-quote och no-open-quote eller minskas av close-quote och no-close-quote. De har ingenting att göra med förekomsten av q- eller blockquote-element i HTML- koden.

. På papperet

Med CSS kan vi definiera presentationen på olika sätt för olika utmedier, utan att behöva skapa särskilda ”utskriftsvänliga” sidor. Förutom de egenskaper vi redan stiftat bekantskap med finns det några som bara tillämpas vid ”sidvis” presentation, vilket normalt innebär utskrift på papper.

Änkor och horungar

Egenskaperna widows och orphans ger oss kontroll över det typograferna kal- lar änkor och horungar. Om en sidbrytning inträffar i ett stycke bör man se till att det inte blir en ensam rad på någon av sidorna. En änka är en ensam slut- rad längst upp på nästa sida, medan en horunge är en ensam begynnelserad längst ned på föregående sida. Värdet för båda egenskaperna är ett heltal, som anger det minsta antalet textrader i ett element som ska bevaras om det behövs en sidbrytning mitt i texten.

 p {  orphans:3;  widows:3;  } Ovanstående regel styr hanteringen av änkor och horungar för stycken. Om en sidbrytning behöver göras i ett stycke och det skulle resultera i att bara en eller två rader blev kvar på den föregående sidan flyttas hela stycket över till nästa sida. Om en sidbrytning skulle ge en eller två rader på nästa sida görs brytningen lite tidigare, så att åtminstone tre rader flyttas över. Den enda webbläsare som i dag har stöd för widows och orphans är Opera.

 STILMALLAR

✐ 80 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 125 --- #137

✐ ✐ Sidbrytningar Tre ytterligare egenskaper ger oss ännu större kontroll över sidbrytningar: page-break-before, page-break-inside och page-break-after. Egenskaperna page-break-before och page-break-after kan ha något av värdena always, auto, avoid, left eller right. Värdet always anger att det alltid ska göras en sidbrytning före respektive efter elementet. Värdena left och right fungerar på samma sätt, men anger att det vid behov ska infogas två sidbrytningar så att nästa sida blir en vänster- respektive högersida. Värdet avoid anger att webbläsaren om möjligt ska undvika att göra en sidbrytning före respektive efter elementet. Värdet auto, som är det initiala värdet, anger att en sidbrytning får före- komma före respektive efter elementet om det behövs. Opera är den enda webbläsare som har stöd för värdena left och right. Firefox  och Safari  har inte heller stöd för avoid. Egenskapen page-break-inside kan ha något av värdena auto eller avoid. Värdet avoid anger att webbläsaren ska undvika att göra en sidbrytning inu- ti elementets genererade box, om det är möjligt. Endast Opera har stöd för denna egenskap.

. @-regler

Som namnet antyder inleds en @-regel alltid med ett snabel-a. De är snarare direktiv till CSS-tolken än regler, men specifikationen kallar dem @-regler (@-rules).

Teckenkodning Precis som för HTML-dokument har det förstås stor betydelse vilken tecken- kodning vi använder för externa CSS-mallar. Webbläsaren måste ju veta hur den ska tolka ettorna och nollorna för att översätta dem till de tecken vi skri- vit. Regeln @charset låter oss deklarera teckenkodningen. Av naturliga skäl måste den stå allra först i CSS-filen, om den förekommer. Regeln följs av en sträng som måste innehålla beteckningen för en teckenkodning i IANA-regist- ret.

 @charset "iso-8859-1"; Det finns dock andra mekanismer för att avgöra teckenkodningen, och det är mycket ovanligt att man ser @charset-regler i verkligheten. Nedanstående

http://www.iana.org/assignments/character-sets

@-REGLER 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 81 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 126 --- #138

✐ ✐

lista visar de olika sätt webbläsaren kan avgöra teckenkodningen för en CSS- fil (i fallande prioritetsordning). . ett charset-attribut i HTTP-headern Content-Type som skickas av webb- servern . ett Unicode-BOM (byte order mark) eller en @charset-regel . ett charset-attribut i den -tagg i HTML-dokumentet som länkar till stilmallen . teckenkodningen för det dokument eller den stilmall som länkar till el- ler importerar stilmallen. I sista hand antar webbläsaren att teckenkodningen är UTF-.

Import

Vi kan importera en CSS-fil in i en annan CSS-fil (eller i ett style-element i HTML).

 @import url("/css/base.css");  @import "colour.css";

Regeln @import följs av en URI med url()-notation, eller som en sträng. Det är också möjligt att ha en kommaseparerad lista av utmedier efter URI:n, för att ange att filen bara ska importeras för vissa utmedier. Det fungerar dock inte i Internet Explorer  och äldre.

 @import url("/colour.css") screen,projection;

@import-regler måste stå före alla andra regler, med undantag av @charset.

Medier och mediefrågor

Regeln @media följs av en kommaseparerad lista av utmedier och ett block avgränsat av {...}. Blocket innehåller vanliga CSS-regler som bara tillämpas för de angivna utmedierna.

 @media screen,projection {  #special {background-color:red}  }   @media print {  #special {border:3pt double #666}  }

@media-regler är ett alternativ till att ha helt separata stilmallar för olika utmedier. Vilket sätt man väljer är i mångt och mycket en smaksak. Ju mindre

 STILMALLAR

✐ 82 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 127 --- #139

✐ ✐

skillnaderna är mellan olika medier, desto fördelaktigare är det att använda @media. Äldre webbläsare har dock inte stöd för @media-regler. Mediefrågor är ett tillägg till @media-regler som definieras i CSS. Opera . och Safari  har partiellt stöd för dem, liksom webbläsare för vissa mobila enheter. Från och med version . har Opera fullt stöd för mediefrågor. Mediefrågor låter oss göra otroligt kraftfulla saker. Vi kan till exempel ha olika layouter i samma stilmall beroende på hur stort webbläsarfönstret är eller hur många färger bildskärmen kan visa. En mediefråga läggs till inom parenteser efter en medietyp i en @media- regel. Nedanstående exempel definierar två spalter för mobila enheter, men bara om displayen är minst em bred.

 @media handheld and (min-width:20em) {  .column {  float:left;  width:50%;  }  } CSS definierar ett antal features vi kan fråga om. Många av dem kan vi också sätta min- eller max- framför för att ange gränsvärden. Eftersom stödet för mediefrågor är ganska bedrövligt går jag inte in på någ- ra närmare detaljer här. Om du är intresserad hittar du mer information hos WC.

Utskriftsmarginaler

Regeln @page låter oss ange extra utskriftsmarginaler utöver de standardmar- ginaler som webbläsaren definierar (och som vi inte har någon kontroll över). Regeln kan följas av en sidselektor, och följs sedan av ett block med mar- ginaldeklarationer. En sidselektor kan vara :left (vänstersida), :right (hö- gersida) eller :first (första sidan). Utelämnar vi sidselektorn gäller regeln för alla sidor. Exemplet nedan sätter en extra toppmarginal på cm för första sidan i utskriften.

 @page :first {  margin-top:10cm;  }

Det är bara Opera som för närvarande har stöd för @page-regler.

http://www.w3.org/TR/css3-mediaqueries/

@-REGLER 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 83 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 128 --- #140

✐ ✐ Namnrymder

Regeln @namespace definieras i CSS och låter oss deklarera en XML-namn- rymd och ett eventuellt prefix vi vill använda för att referera till det. (XML-namnrymder gör det möjligt att ha flera olika element med samma namn. Se kapitel  för mer information.) Nedanstående exempel definierar standardnamnrymden till XHTML och definierar också en egen namnrymd och kopplar den till prefixet foo.

 @namespace "http://www.w3.org/1999/xhtml";  @namespace foo "http://example.com/foo"; För att ange regler för ett element i foo-namnrymden använder vi prefixet följt av ett vertikalt streck:

 foo|bar {font-size:120%} Det motsvarar exempelvis följande XML-element:

Hej! Observera att det är namnrymds-URI:n som ska matcha; prefixet är ovid- kommande. CSS-regeln ovan matchar följande bar-element:

Hej!
Däremot matchar den inte följande bar-element, eftersom det ligger i en annan namnrymd:

Hej!

Teckensnitt

CSS specificerade regeln @font-face, men eftersom ingen webbläsare im- plementerade den riktigt togs den bort från CSS.. Nu gör den comeback i CSS. @font-face låter oss definiera teckensnitt som inte behöver finnas på an- vändarens dator, utan kan laddas ned. Eftersom de flesta kvalitetsteckensnitt är upphovsrättsskyddade och kostar pengar är det här förmodligen av tvivel- aktigt värde, men det är något som många formgivare ropat efter i åratal. Det finns  olika aspekter vi kan ange för ett teckensnitt, men jag kom- mer bara att visa ett enkelt exempel här. Vill du läsa mer rekommenderar jag WC:s sida om teckensnitt.

http://www.w3.org/TR/css3-webfonts/

 STILMALLAR

✐ 84 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 129 --- #141

✐ ✐

 @font-face {  font-family:"Tommy's Font";  src:url("http://example.com/fonts/tommy");  }   body {  font-family:"Tommy's Font",sans-serif;  }

Visst stöd för @font-face finns i experimentversionerna av WebKit (den renderingsmotor som används i Safari). Internet Explorer . och senare har partiellt stöd för @font-face, men hanterar bara EOT-filer (Embedded Open Type).

. Hack

Svårigheten med att lära sig använda CSS är inte att CSS i sig självt är särskilt svårt, utan att den faktiska implementationen i olika webbläsare skiljer sig åt i så stor utsträckning. Situationen blir – tack och lov – gradvis allt bättre, men det är fortfarande långt kvar. I dag kan vi dela in webbläsarna i fyra kategorier: . moderna webbläsare . Internet Explorer  för Windows . Internet Explorer  för Windows . äldre webbläsare. Den första kategorin omfattar de senaste versionerna av Opera, Firefox, Sa- fari, Chrome, med flera, som överlag har mycket bra stöd för CSS och ganska få buggar. En ännu större fördel med dessa webbläsare är att de- ras användare brukar vara duktiga på att uppgradera när det kommer nya versioner. IE/Win intar ett slags mellanposition. Den är en bra bit efter konkurren- terna, men också en bra bit bättre än sina föregångare. Dess marknadsandel gör att vi inte kan ignorera den, utan måste anpassa oss efter dess brister och fel. IE/Win är i dag vad Netscape  var för några år sedan: hatobjektet num- mer ett bland webbutvecklare. Den har många bisarra buggar och saknar stöd för viktiga delar av CSS-specifikationen, men har fortfarande en så stor mark- nadsandel att vi måste ta hänsyn till den.

http://www.microsoft.com/typography/web/embedding/weft3

HACK 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 85 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 130 --- #142

✐ ✐

Den fjärde kategorin omfattar i stort sett allt annat, från IE/Netscape  till Opera  och Firefox . Antalet användare med dessa webbläsare är gans- ka litet och det är sällan värt att lägga ned alltför mycket arbete på att få en design att fungera korrekt i dem. Så länge webbplatsen går att använda bör vi med gott samvete kunna ignorera dessa dinosaurier, även om sidorna ser lite konstiga ut i dem. Som listan visar har vi alltså i praktiken två problembarn att hantera: IE och IE för Windows. IE brukar inte ge alltför stora problem, men för IE får vi nästan alltid vara beredda på extraarbete. En liten tröst är ändå att de flesta buggarna är dokumenterade vid det här laget, och metoderna för att kringgå dem är väl kända.

Villkorliga kommentarer Hur gör vi då när korrekt CSS inte fungerar som den ska i Internet Explorer? hack Då får vi ta till hack – medvetet felaktig kod som bara levereras till eller tilläm- pas av IE. Det sätt som rekommenderas av de flesta professionella utvecklare (och inte minst av Microsoft själva) är att placera all IE-specifik CSS i en separat villkorlig kommentar stilmall och inkludera den via en så kallad villkorlig kommentar. Det är en kommentar skriven på ett speciellt sätt så att IE tolkar den som ett direktiv till webbläsaren i stället för som en kommentar. Det enklaste fallet ser ut så här:

För alla andra webbläsare är det här en vanlig kommentar som ignoreras helt och hållet. Internet Explorer för Windows, version  och senare, kommer dock att använda koden mellan ”>” och ”<”. Det går att vara mer specifik än att bara kontrollera om det är IE – vi kan exempelvis ange versionsnummer:

Här kommer koden bara att användas av Internet Explorer . Vi kan också använda minimi- och maximivärden för versionsnumret:

Den första koden används av IE och IE (lte står för less than or equal to, alltså mindre än eller lika med). Den andra koden används av IE och uppåt (gte står för greater than or equal to, större än eller lika med). Vi kan även använda lt (less than, mindre än) eller gt (greater than, större än). Det finns andra operatorer också, men de här räcker oftast. En allt vanligare syn i webbdokument är kod av det här slaget:

 STILMALLAR

✐ 86 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 131 --- #143

✐ ✐

Man har alltså en gemensam stilmall för alla webbläsare, och sedan en se- parat CSS-fil med specifika hack för IE och IE. Villkorliga kommentarer är helt giltig HTML, eftersom de är vanliga kom- mentarer som ska ignoreras.

Ett stjärnhack I en enkel layout kanske det inte behövs så många hack för IE, och förmodli- gen inget alls för IE. Då kan det kännas lite omständligt att skapa en separat IE-specifik CSS-fil bara för ett par regler. Ett alternativ kan då vara att använda stjärna-selektor-hacket (även kallat Tan-hacket efter upphovsmannen Edwardson Tan) i själva CSS-filen. Det ser ut så här:

 * html selektor {...} Selektorn pekar ut de element som matchar selektor och som är underord- nade ett html-element som i sin tur är underordnat ett godtyckligt element. Eftersom html-elementet är rotelementet i ett HTML-dokument kan det ald- rig vara underordnat något annat element, så selektorn matchar ingenting i en modern webbläsare. IE tror dock att det finns något ovanför html-elementet och matchar se- lektorn som om den bara hade bestått av selektor-delen. Det här hacket fungerar även i IE, men bara i quirks mode (som jag inte rekommenderar att använda). Det fungerar också i IE/Mac, vilket oftast inte är önskvärt. Vi kommer att titta på en lösning på det problemet nedan. Stjärna-selektor-hacket är helt giltig CSS och är ofarligt att använda ef- tersom det inte matchar något element utom i IE och IE.

Hack för IE/Win Ibland kanske man vill ha en separat CSS-fil med hack för IE och IE för Windows. Då händer det att man behöver använda olika värden för de två versionerna, och således behöver ett hack som skiljer på dem. Det finns flera sätt att göra det på, men det bästa är nog backslash-hacket:

 .sidebar {  padding:1em;

HACK 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 87 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 132 --- #144

✐ ✐

 width:15em;  w\idth:13em;  } IE/Win har en boxmodell som inte följer CSS-specifikationen. Padding och kantlinjer räknas in i den angivna bredden, i stället för att läggas till utö- ver den. IE hanterar det här korrekt (utom i quirks mode). Därför behöver vi ge olika width-värden till dem. Den andra deklarationen sätter width till em i alla webbläsare. Den tred- je ändrar bredden till em, men inte i IE. ”\”-tecknet är ju ett escape-tecken i CSS, så ”\i” betyder samma sak som ”i”, men det fungerar inte i IE. IE ser alltså bara deklarationen width:15em och räknar in em padding på vardera sidan så att bredden på innehållet blir em. I IE skrivs den första width-deklarationen över av den andra, så att slutresultatet blir width:13em för innehållet. Den lägger sedan på em padding utanpå, så att den totala bredden blir em. Boxen blir alltså lika stor i IE som i modernare webblä- sare. Det man måste tänka på om man ska använda detta hack är att ”\”-tecknet också används för hexadecimala escapes. Hacket fungerar inte om tecknet ef- ter ”\” är en siffra eller någon av bokstäverna a–f (eller A–F), eftersom sekven- sen då tolkas som en kodposition. Om vi till exempel skrivit wi\dth skulle ”\d” tolkas som en vagnretur (, U+D) och då blir det fel. Det finns ju ingen CSS-egenskap som heter with.

Has det layout? Internet Explorer för Windows upp till och med version  använder en in- tern flagga på varje box för att styra hur den ska presenteras. Flaggan kallas hasLayout och gör stor skillnad på hur boxen läggs ut. En box med ”layout” avgör storlek och placering för sina underordnade boxar, medan en box utan ”layout” förväntar sig att föräldern sköter det åt den. Vissa element (som body, tabellelement, formulärfält och bilder) har ”lay- out” som standard. För andra element kan vi sätta ”layout” med hjälp av vissa CSS-egenskaper (till exemple min-height:1px). Många oförklarliga egenhe- ter i IE går att rätta till genom att se till att vissa boxar har ”layout”. För när- mare detaljer, se dokumentationen på MSDN.

Mac-hack Stjärna-selektor-hacket påverkar även IE/Mac, vilket oftast inte är önskvärt. Macversionen har en bugg vi kan utnyttja för att dölja kod så att webbläsaren tolkar den som en kommentar. Ett ”\”-tecken före den avslutande delen av

http://msdn2.microsoft.com/en-us/library/bb250481.aspx

 STILMALLAR

✐ 88 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 133 --- #145

✐ ✐

kommentaren ”*/” gör att IE/Mac inte förstår att kommentaren är slut. Vi kan utnyttja det på följande sätt:

 /* Dölj för IE/Mac \*/  * html selektor {...}  /* Sluta dölja för IE/Mac */

I och med att IE/Mac inte förstår att ”\*/” är samma sak som ”*/” tror den att hela exemplet ovan är en enda lång kommentar. Kom dock ihåg att du inte kan använda kommentarer inuti en sådan här variant. Det omvända är också möjligt. Följande kod tolkas som en kommentar av alla webbläsare utom IE/Mac.

 /*\*//*/  @import "ie5_mac.css";  /**/

Hacka inte i onödan Ett vanligt nybörjarfel är att använda hack alldeles i onödan. Det gör koden onödigt komplicerad och svår att underhålla. I värsta fall fungerar inte ens stilmallen när en ny version av en webbläsare släpps på marknaden. I allmänhet behöver vi bara några hack för Internet Explorer. IE är till- räckligt bra för att klara layouter som inte är allför komplicerade, och de pro- blem vi råkar ut för har oftast att göra med hasLayout och går att kringgå på ett ”harmlöst” sätt, exempelvis med min-height:1px, som inte orsakar någ- ra problem med andra webbläsare och således kan ingå i en vanlig regel i en normal stilmall. IE orsakar lite mer arbete, så länge vi håller oss till standards mode, men problemen är kända och lösningarna finns dokumenterade. Jag rekommen- derar att placera dem i en separat stilmall och länka till den i en villkorlig kommentar, för att hålla hacken åtskilda från den korrekta koden. IE./Win, och IE i quirks mode, ställer till det på grund av den felaktiga boxmodellen. Om vi kan undvika att ange padding och kantlinjer tillsammans med dimensionerna går det bra; i annat fall får vi hacka. Vi kan inte heller formge body-elementet särskilt mycket, så det krävs en extra div runt hela innehållet för de flesta layouter. IE./Win är riktigt besvärlig, men tack och lov är det ytterst få använda- re som fortfarande envisas med den versionen, så vi kan vanligen bortse från den. IE/Mac klarar de flesta enkla layouter, men kan ge problem om vi behöver alltför avancerad CSS.

HACK 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 89 ✐

✐ ✐ 90 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 243 --- #255

✐ ✐

ELEMENTREFERENS FÖR HTML . STRICT A Ett kursivt ”text” under ”Innehåll” betyder textinnehåll, som kan innehålla entitetsreferenser eller numeriska teckenreferenser. Attributnamn i fetstil anger att attributet är obligatoriskt.

a

Länk (med href) eller namngivet ankare (med name). Innehåll text, abbr, acronym, b, bdo, big, br, button, cite, code, del, dfn, em, i, img, input, ins, kbd, label, map, object, q, samp, select, small, script, span, strong, sub, sup, textarea, tt, var Attribut accesskey, charset, class, coords, dir, href, hreflang, id, lang, name, onblur, onclick, ondblclick, onfocus, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, rel, rev, shape, style, tabindex, title, type

abbr Förkortning. Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, code, del, dfn, em, i, img, input, ins, kbd, label, map, object, q, samp, select, small, script, span, strong, sub, sup, textarea, tt, var Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title



✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 91 ✐

✐ ✐ ✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 244 --- #256 ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 245 --- #257

✐ ✐ ✐ ✐ acronym base Akronym. Dokumentets bas-URI. Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, Innehåll – code, del, dfn, em, i, img, input, ins, kbd, label, map, Attribut href object, q, samp, select, small, script, span, strong, sub, sup, textarea, tt, var bdo Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, Åsidosätter skrivriktningsalgoritmen. onmouseup, onmouseout, style, title Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, code, del, dfn, em, i, img, input, ins, kbd, label, map, address object, q, samp, select, small, script, span, strong, sub, sup, textarea, tt, var Kontaktinformation, eller information om författaren. Attribut class, dir, id, lang, style, title Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, code, del, dfn, em, i, img, input, ins, kbd, label, map, object, q, samp, select, small, script, span, strong, sub, sup, big textarea, tt, var Större teckenstorlek. Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, code, del, dfn, em, i, img, input, ins, kbd, label, map, onmouseup, onmouseout, style, title object, q, samp, select, small, script, span, strong, sub, sup, textarea, tt, var area Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, Område i en klientbildkarta (image map). onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, Innehåll – onmouseup, onmouseout, style, title Attribut accesskey, alt, class, coords, dir, id, href, lang, nohref, onblur, onclick, ondblclick, onfocus, onkeydown, blockquote onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, Längre citat. onmouseup, onmouseout, shape, style, tabindex, title Innehåll address, blockquote, del, div, dl, fieldset, form, h1, h2, h3, h4, h5, h6, hr, ins, noscript, ol, p, pre, script, b table, ul Typografisk konvention: fetstil. Attribut cite, class, dir, id, lang, onclick, ondblclick, Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, code, del, dfn, em, i, img, input, ins, kbd, label, map, onmouseover, onmouseup, onmouseout, style, title object, q, samp, select, small, script, span, strong, sub, sup, textarea, tt, var Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title

 ELEMENTREFERENS FÖR HTML . STRICT ELEMENTREFERENS FÖR HTML . STRICT 

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 246 --- #258 ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 247 --- #259 ✐ ✐ ✐ ✐ ✐ ✐ ✐ ✐ ✐ body ✐ ✐ cite ✐ Dokumentkroppen; sidans egentliga innehåll. Källhänvisning. Innehåll address, blockquote, del, div, dl, fieldset, form, h1, Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, h2, h3, h4, h5, h6, hr, ins, noscript, ol, p, pre, script, code, del, dfn, em, i, img, input, ins, kbd, label, map, table, ul object, q, samp, select, small, script, span, strong, sub, sup, Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, textarea, tt, var onkeypress, onkeyup, onload, onmousedown, onmousemove, Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onmouseover, onmouseup, onmouseout, onunload, style, title onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title br code Radbrytning. Innehåll – fragment av datorkod. Attribut class, id, style, title Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, code, del, dfn, em, i, img, input, ins, kbd, label, map, object, q, samp, select, small, script, span, strong, sub, sup, button textarea, tt, var Tryckknapp i ett formulär. Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, Innehåll text, abbr, acronym, address, b, bdo, big, blockquote, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, br, cite, code, del, dfn, div, dl, em, h1, h2, h3, h4, h5, h6, onmouseup, onmouseout, style, title hr, i, img, ins, kbd, map, noscript, object, ol, p, pre, q, samp, small, script, span, strong, sub, sup, table, tt, ul, var col Attribut accesskey, class, dir, disabled, id, lang, name, onblur, Kolumndeklaration i en tabell. onclick, ondblclick, onfocus, onkeydown, onkeypress, onkeyup, Innehåll – onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, tabindex, title, type, value Attribut align, char, charoff, class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, span, style, caption title, valign, width Ledtext/etikett till en tabell; tabellrubrik. Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, colgroup code, del, dfn, em, i, img, input, ins, kbd, label, map, Kolumngruppsdeklaration i en tabell. object, q, samp, select, small, script, span, strong, sub, sup, textarea, tt, var Innehåll col Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, Attribut align, char, charoff, class, dir, id, lang, onclick, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmouseup, onmouseout, style, title onmousemove, onmouseover, onmouseup, onmouseout, span, style, title, valign, width

 ELEMENTREFERENS FÖR HTML . STRICT ELEMENTREFERENS FÖR HTML . STRICT 

✐ ✐ ✐ ✐ 92 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐ ✐ ✐ ✐ ✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 248 --- #260 ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 249 --- #261

✐ ✐ ✐ ✐ dd div Beskrivning av en term i en definitionslista. Generell behållare på blocknivå. Innehåll text, a, abbr, acronym, address, b, bdo, big, blockquote, Innehåll text, a, abbr, acronym, address, b, bdo, big, blockquote, br, button, cite, code, del, dfn, div, dl, em, fieldset, form, br, button, cite, code, del, dfn, div, dl, em, fieldset, form, h1, h2, h3, h4, h5, h6, hr, i, img, input, ins, kbd, label, h1, h2, h3, h4, h5, h6, hr, i, img, input, ins, kbd, label, map, noscript, object, ol, p, pre, q, samp, select, small, map, noscript, object, ol, p, pre, q, samp, select, small, script, span, strong, sub, sup, table, textarea, tt, ul, var script, span, strong, sub, sup, table, textarea, tt, ul, var Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title onmouseup, onmouseout, style, title

del dl Spårbarhet: borttaget innehåll. Definitionslista. Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, Innehåll dd, dt code, dfn, em, i, img, input, kbd, label, map, object, q, samp, Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, select, small, script, span, strong, sub, sup, textarea, tt, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, var onmouseup, onmouseout, style, title Om elementet är ett blockelement kan det även innehålla: address, blockquote, div, dl, fieldset, form, h1, h2, h3, h4, dt h5, h6, hr, noscript, ol, p, pre, table. Term i en definitionslista. Attribut cite, class, datetime, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, onmousemove, onmouseover, onmouseup, onmouseout, style, title code, del, dfn, em, i, img, input, ins, kbd, label, map, object, q, samp, select, small, script, span, strong, sub, sup, textarea, tt, var dfn Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, Definierande instans av en term. onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, onmouseup, onmouseout, style, title code, del, dfn, em, i, img, input, ins, kbd, label, map, object, q, samp, select, small, script, span, strong, sub, sup, em textarea, tt, var Tonvikt, emfas. Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, onmouseup, onmouseout, style, title code, del, dfn, em, i, img, input, ins, kbd, label, map, object, q, samp, select, small, script, span, strong, sub, sup, textarea, tt, var Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title

 ELEMENTREFERENS FÖR HTML . STRICT ELEMENTREFERENS FÖR HTML . STRICT 

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 250 --- #262 ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 251 --- #263 ✐ ✐ ✐ ✐ ✐ ✐ ✐ ✐ ✐ fieldset ✐ ✐ hr ✐ Grupp av formulärkontroller. Horisontell avskiljare. Innehåll text, a, abbr, acronym, address, b, bdo, big, blockquote, Innehåll – br, button, cite, code, del, dfn, div, dl, em, fieldset, form, Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, h1, h2, h3, h4, h5, h6, hr, i, img, input, ins, kbd, label, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, legend, map, noscript, object, ol, p, pre, q, samp, select, onmouseup, onmouseout, style, title small, script, span, strong, sub, sup, table, textarea, tt, ul, var html Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, Dokumentets rotelement. onmouseup, onmouseout, style, title Innehåll body, head Attribut dir, lang form Interaktivt formulär. i Innehåll address, blockquote, del, div, dl, fieldset, h1, h2, h3, Typografisk konvention: kursiv stil h4, h5, h6, hr, ins, noscript, ol, p, pre, script, table, ul Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, Attribut accept, accept-charset, action, class, dir, enctype, id, code, del, dfn, em, i, img, input, ins, kbd, label, map, lang, method, name, onclick, ondblclick, onkeydown, object, q, samp, select, small, script, span, strong, sub, sup, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, textarea, tt, var onmouseup, onmouseout, onreset, onsubmit, style, title Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, h1, h2, h3, h4, h5, h6 onmouseup, onmouseout, style, title Rubriker. Siffran anger rubriknivån. Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, img code, del, dfn, em, i, img, input, ins, kbd, label, map, Bildobjekt. object, q, samp, select, small, script, span, strong, sub, sup, Innehåll – textarea, tt, var Attribut alt, class, dir, height, id, ismap, lang, longdesc, Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, name, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, onmouseup, onmouseout, style, title src, style, title, usemap, width

head Dokumenthuvud. Innehåll base, link, meta, object, script, style, title Attribut dir, lang, profile

 ELEMENTREFERENS FÖR HTML . STRICT ELEMENTREFERENS FÖR HTML . STRICT 

✐ ✐ ✐ ✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 93 ✐ ✐ ✐ ✐ ✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 252 --- #264 ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 253 --- #265

✐ ✐ ✐ ✐ input label Inmatningskontroll i ett formulär. Ledtext till en formulärkontroll. Innehåll – Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, Attribut accept, accesskey, alt, checked, class, dir, disabled, code, del, dfn, em, i, img, input, ins, kbd, map, object, q, id, ismap, lang, maxlength, name, onblur, onchange, onclick, samp, select, small, script, span, strong, sub, sup, textarea, ondblclick, onfocus, onkeydown, onkeypress, onkeyup, tt, var onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, Attribut accesskey, class, dir, for, id, lang, onblur, onclick, onselect, readonly, size, src, style, tabindex, title, type, ondblclick, onfocus, onkeydown, onkeypress, onkeyup, usemap, value onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title ins legend Spårbarhet: infogat innehåll. Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, Rubrik för ett fieldset. code, dfn, em, i, img, input, kbd, label, map, object, q, samp, Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, select, small, script, span, strong, sub, sup, textarea, tt, code, del, dfn, em, i, img, input, ins, kbd, label, map, var object, q, samp, select, small, script, span, strong, sub, sup, Om elementet är ett blockelement kan det även innehålla: textarea, tt, var address, blockquote, div, dl, fieldset, form, h1, h2, h3, h4, Attribut accesskey, class, dir, id, lang, onclick, ondblclick, h5, h6, hr, noscript, ol, p, pre, table. onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title Attribut cite, class, datetime, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title li Listelement i en numrerad lista eller punktlista. kbd Innehåll text, a, abbr, acronym, address, b, bdo, big, blockquote, Text som ska matas in via tangentbordet. br, button, cite, code, del, dfn, div, dl, em, fieldset, form, h1, h2, h3, h4, h5, h6, hr, i, img, input, ins, kbd, label, Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, map, noscript, object, ol, p, pre, q, samp, select, small, code, del, dfn, em, i, img, input, ins, kbd, label, map, script, span, strong, sub, sup, table, textarea, tt, ul, var object, q, samp, select, small, script, span, strong, sub, sup, textarea, tt, var Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onmouseup, onmouseout, style, title onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title

 ELEMENTREFERENS FÖR HTML . STRICT ELEMENTREFERENS FÖR HTML . STRICT 

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 254 --- #266 ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 255 --- #267 ✐ ✐ ✐ ✐ ✐ ✐ ✐ ✐ ✐ link ✐ ✐ object ✐ Länk till stilmall, alternativt innehåll, relaterade dokument, etc. Generellt externt objekt. Innehåll – Innehåll text, a, abbr, acronym, address, b, bdo, big, blockquote, Attribut charset, class, dir, href, hreflang, id, lang, media, br, button, cite, code, del, dfn, div, dl, em, fieldset, form, onclick, ondblclick, onkeydown, onkeypress, onkeyup, h1, h2, h3, h4, h5, h6, hr, i, img, input, ins, kbd, label, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, map, noscript, object, ol, p, param, pre, q, samp, select, rel, rev, style, title, type small, script, span, strong, sub, sup, table, textarea, tt, ul, var

map Attribut archive, class, classid, codebase, codetype, data, declare, dir, height, id, lang, name, onclick, ondblclick, Klientbildkarta (image map). onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, Innehåll address, area, blockquote, del, div, dl, fieldset, form, onmouseover, onmouseup, onmouseout, standby, style, tabindex, h1, h2, h3, h4, h5, h6, hr, ins, noscript, ol, p, pre, table, title, type, usemap, width ul Attribut class, dir, id, lang, name, onclick, ondblclick, ol onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, Ordnad (numrerad) lista. onmouseover, onmouseup, onmouseout, style, title Innehåll li meta Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, Metainformation i dokumenthuvudet. onmouseup, onmouseout, style, title Innehåll – Attribut content, dir, http-equiv, lang, name, scheme optgroup Grupp av alternativ i en listkontroll. noscript Innehåll option Alternativt innehåll i stället för skriptbaserat innehåll. Attribut class, dir, disabled, id, label, lang, onclick, Innehåll address, blockquote, del, div, dl, fieldset, form, h1, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, h2, h3, h4, h5, h6, hr, ins, noscript, ol, p, pre, table, ul onmousemove, onmouseover, onmouseup, onmouseout, style, title Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, option onmouseup, onmouseout, style, title Alternativ i en listkontroll. Innehåll text Attribut class, dir, disabled, id, label, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, selected, style, title, value

 ELEMENTREFERENS FÖR HTML . STRICT ELEMENTREFERENS FÖR HTML . STRICT 

✐ ✐ ✐ ✐ 94 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐ ✐ ✐ ✐ ✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 256 --- #268 ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 257 --- #269

✐ ✐ ✐ ✐ p samp Textstycke. Utresultat från program, skript, etc. Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, code, del, dfn, em, i, img, input, ins, kbd, label, map, code, del, dfn, em, i, img, input, ins, kbd, label, map, object, q, samp, select, small, script, span, strong, sub, sup, object, q, samp, select, small, script, span, strong, sub, sup, textarea, tt, var textarea, tt, var Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title onmouseup, onmouseout, style, title

param script Parameter till ett extern objekt. Skriptkod. Innehåll – Innehåll Skriptkod i form av text. Entitetsreferenser och numeriska Attribut id, name, type, value, valuetype teckenreferenser tolkas inte. Attribut charset, defer, src, type pre select Förformaterad text. Innehåll text, a, abbr, acronym, b, bdo, br, button, cite, code, Listkontroll i ett formulär. del, dfn, em, i, input, ins, kbd, label, map, q, samp, select, Innehåll optgroup, option script, span, strong, textarea, tt, var Attribut class, dir, disabled, id, lang, multiple, name, onblur, Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onchange, onclick, ondblclick, onfocus, onkeydown, onkeypress, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseup, onmouseout, style, title onmouseout, size, style, tabindex, title

q small Kort citat. Mindre textstorlek; ”finstilt” text. Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, code, del, dfn, em, i, img, input, ins, kbd, label, map, code, del, dfn, em, i, img, input, ins, kbd, label, map, object, q, samp, select, small, script, span, strong, sub, sup, object, q, samp, select, small, script, span, strong, sub, sup, textarea, tt, var textarea, tt, var Attribut cite, class, dir, id, lang, onclick, ondblclick, Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseover, onmouseup, onmouseout, style, title onmouseup, onmouseout, style, title

 ELEMENTREFERENS FÖR HTML . STRICT ELEMENTREFERENS FÖR HTML . STRICT 

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 258 --- #270 ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 259 --- #271 ✐ ✐ ✐ ✐ ✐ ✐ ✐ ✐ ✐ span ✐ ✐ table ✐ Generell behållare på inline-nivå. Tabellinformation. Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, Innehåll caption, col, colgroup, tbody, tfoot, thead, tr code, del, dfn, em, i, img, input, ins, kbd, label, map, Attribut border, cellpadding, cellspacing, class, dir, frame, id, object, q, samp, select, small, script, span, strong, sub, sup, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, textarea, tt, var onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, rules, style, summary, title, width onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title tbody Radgrupp i kroppen på en tabell. strong Innehåll tr Stark betoning (emfas). Attribut align, char, charoff, class, dir, id, lang, onclick, Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, code, del, dfn, em, i, img, input, ins, kbd, label, map, onmousemove, onmouseover, onmouseup, onmouseout, style, title, object, q, samp, select, small, script, span, strong, sub, sup, valign textarea, tt, var

Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, td onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title Datacell i en tabellrad. Innehåll text, a, abbr, acronym, address, b, bdo, big, blockquote, style br, button, cite, code, del, dfn, div, dl, em, fieldset, form, h1, h2, h3, h4, h5, h6, hr, i, img, input, ins, kbd, label, Stilmallsregler i dokumenthuvudet. map, noscript, object, ol, p, pre, q, samp, select, small, Innehåll Stilmallskod, vanligen CSS, i form av text. Entitetsreferenser och script, span, strong, sub, sup, table, textarea, tt, ul, var numeriska teckenreferenser tolkas inte. Attribut abbr, align, axis, char, charoff, class, colspan, dir, Attribut dir, lang, media, title, type headers, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, rowspan, scope, style, title, valign sub, sup

Subskript respektive superskript. textarea Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, Flerradig textruta i ett formulär. code, del, dfn, em, i, img, input, ins, kbd, label, map, object, q, samp, select, small, script, span, strong, sub, sup, Innehåll text textarea, tt, var Attribut accesskey, class, cols, dir, disabled, id, lang, name, Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onblur, onchange, onclick, ondblclick, onfocus, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title onmouseup, onmouseout, onselect, readonly, rows, style, tabindex, title

 ELEMENTREFERENS FÖR HTML . STRICT ELEMENTREFERENS FÖR HTML . STRICT 

✐ ✐ ✐ ✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 95 ✐ ✐ ✐ ✐ ✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 260 --- #272 ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 261 --- #273

✐ ✐ ✐ ✐ tfoot tr Tabellfot (radgrupp). Tabellrad. Innehåll tr Innehåll td, th Attribut align, char, charoff, class, dir, id, lang, onclick, Attribut align, char, charoff, class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title, onmousemove, onmouseover, onmouseup, onmouseout, style, title, valign valign

th tt Rubrikcell i en tabellrad. Text med ickeproportionellt typsnitt. Innehåll text, a, abbr, acronym, address, b, bdo, big, blockquote, Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, br, button, cite, code, del, dfn, div, dl, em, fieldset, form, code, del, dfn, em, i, img, input, ins, kbd, label, map, h1, h2, h3, h4, h5, h6, hr, i, img, input, ins, kbd, label, object, q, samp, select, small, script, span, strong, sub, sup, map, noscript, object, ol, p, pre, q, samp, select, small, textarea, tt, var script, span, strong, sub, sup, table, textarea, tt, ul, var Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, Attribut abbr, align, axis, char, charoff, class, colspan, dir, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, headers, id, lang, onclick, ondblclick, onkeydown, onkeypress, onmouseup, onmouseout, style, title onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, rowspan, scope, style, title, valign ul Oordnad lista; punktlista. thead Innehåll li Tabellhuvud (radgrupp). Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, Innehåll tr onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, Attribut align, char, charoff, class, dir, id, lang, onclick, onmouseup, onmouseout, style, title ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title, var valign Variabelt uttryck eller programargument. title Innehåll text, a, abbr, acronym, b, bdo, big, br, button, cite, code, del, dfn, em, i, img, input, ins, kbd, label, map, Dokumenttitel. object, q, samp, select, small, script, span, strong, sub, sup, Innehåll text textarea, tt, var Attribut dir, lang Attribut class, dir, id, lang, onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseover, onmouseup, onmouseout, style, title

 ELEMENTREFERENS FÖR HTML . STRICT ELEMENTREFERENS FÖR HTML . STRICT 

✐ ✐ ✐ ✐

✐ ✐ ✐ ✐

96 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 309 --- #321

✐ ✐

SAKREGISTER

specialtecken :nth-child(), , , ,  @font-face,  :nth-last-child(),  @import,  :nth-last-of-type(),  @media, , ,  :nth-of-type(),  @namespace, ,  :only-child,  @page,  :only-of-type,  @-regel, , – :root,  @-rule, se @-regel :target,  !important,  :visited, ,  &, ,  ',  A >, ,  a (element), ,  <, ,  abbr (attribut), ,  ", ,  abbr (element), , ,  ::selection,  abjader,  :active,  absolut URI, se URI, absolut :after, , ,  accept (attribut),  :before, ,  accept-charset (attribut), ,  :checked,  accessibility, se tillgänglighet :disabled,  accesskey (attribut), , , ,  :empty,  acronym (element),  :enabled,  action (attribut), , , ,  :first-child,  ActionScript,  :first-letter,  Active X,  :first-line,  addEventListener,  :first-of-type,  address (element), , , ,  :focus, ,  ajax, ,  :hover, ,  akronymer,  :lang(),  alert,  :last-child,  alfabeten :last-of-type,  grekiska, ,  :link, ,  kyrilliska, ,  :not(),  latinska, –



✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 97 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 310 --- #322

✐ ✐

alignment, se textjustering background (egenskap), , , , alt (attribut), , ,  , ,  alternativa versioner,  background-attachment (egenskap), anfanger,   Anteckningar, ,  background-color (egenskap), , , användarcentrerad utveckling och de- , , , , –, sign,   användare, ,  background-image (egenskap),  användarstilmallar, se stilmallar, an- background-position (egenskap),  vändares background-repeat (egenskap),  användartester, ,  backslash, , ,  användbarhet, , , ,  bakgrundsbilder, , , , , apostrofer, , ,  , ,  Apple,  bakgrundsfärger, , , , ,  applets,  base (element),  application/javascript,  Basic Multilingual Plane, se plan i Uni- application/xhtml+xml, ,  code application/xml,  basklass,  application/x-www-form-urlencoded, baslinje, –  begäran, , ,  arabiska, , ,  exempel,  aritmetiska operatorer, se operato- Berners-Lee, Tim, ,  rer, aritmetiska beräknade värdet,  arrays, se JavaScript, vektorer besökare,  arv beteendeskiktet, se interaktionsskik- i CSS, – tet i JavaScript, , ,  betoning, ,  ASCII, se teckenkodning, ASCII bilder, , , , , ,  associative array, se JavaScript, ob- dimensioner, ,  jekt bildredigeringsprogram,  asynkron uppdatering, ,  binär,  attachEvent,  bit, , ,  attr(),  blanktecken, , , , , , , attribut, , , , ,  , ,  minimera, se minimering blinda, ,  obligatoriska, –, , , , block, ,  ,  boxar, se boxar, block attributselektorer, , , ,  element, –, , , , , automatisk numrering, se räknare , , , ,  avskiljare,  i JavaScript, se JavaScript, sat- ser och block B blockquote (element), , ,  b (element),  BMP, se plan i Unicode

 SAKREGISTER

✐ 98 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 311 --- #323

✐ ✐

body, se kropp bredband,  body (element), , , , , , bredd och höjd, ,  , ,  browser sniffing, ,  bold, se fetstil browsers, se webbläsare BOM, ,  bubbelfasen, ,  Booleska värden, ,  button (element),  border (egenskap), , , , , byte, se oktett –,  byte order mark, se BOM border-bottom (egenskap), , , , , ,  C border-bottom-style (egenskap),  C,  border-bottom-width (egenskap),  C++,  border-collapse (egenskap), , , cache, ,  ,  caption (element), ,  border-color (egenskap),  capture-fasen, ,  border-left (egenskap),  Cascading Style Sheets, se CSS border-left-style (egenskap),  case,  border-left-width (egenskap),  case sensitivity, se skiftlägeskänslig- border-right (egenskap),  het border-right-style (egenskap),  catch-block,  border-right-width (egenskap),  CDATA-sektioner,  border-spacing (egenskap),  celler, se tabeller, celler border-style (egenskap),  cellpadding (attribut),  border-top (egenskap), , , , centimeter, se cm  centrera, , , ,  border-top-color (egenskap),  characters, se tecken border-top-style (egenskap),  charset, , se teckenkodning border-top-width (egenskap),  checkboxes, se kryssrutor border-width (egenskap),  checked (attribut), ,  Bos, Bert, ,  Chrome, se webbläsare bottom (egenskap), – citat,  Bowman, Doug,  citattecken, , , , , , , , boxar,   block, –, , , ,  genererade, – flytande, se flytande boxar cite (attribut), ,  inline, , – cite (element), ,  överlappande,  Clarke, Andy,  radboxar, se radboxar class (attribut), , , , ,  run-in,  clear (egenskap), , ,  boxmodellen, , , ,  client, se klient br (element), ,  clip (egenskap),  brandväggar, , ,  cm,  break, – code (element), 

SAKREGISTER 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 99 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 312 --- #324

✐ ✐

col (element), ,  deklarationer colgroup (element), ,  ordning,  color (egenskap), , , , , dekoration av text, se textdekoration , , , , , , del (element),  – deprecated, se föråldrad cols (attribut), ,  dfn (element),  colspan (attribut), ,  diakritiska tecken, ,  combinators, se kombinatorer dir (attribut),  conditional comments, se villkorliga Disabilities Discrimination Act, se DDA kommentarer disabled (attribut), , , – containing block, se innehållande bloc- display,  ket display (egenskap), –, , , content (attribut),  , , ,  content (egenskap), , , , för listelementboxar,   för tabellboxar,  Content-Type, , , , , , div (element), , , , , ,  , ,  counter(),  dl (element), , ,  counter-increment (egenskap),  doctype sniffing, ,  counter-reset (egenskap),  document type definition, se doku- counters(),  menttypsdefinition CSS, ,  Document-noder, , , , , hack, –  historia, – document-objektet,  koppla till HTML, ,  DocumentType-noder,  stöd i webbläsare, , , , , document.write, ,   dokumentobjektmodellen, , se DOM syfte, ,  dokumentrelativ URI, se URI, doku- mentrelativ D dokumenttypsdefinition, , , , databaser,  , , ,  dataceller, se td (element) dokumenttypsdeklaration, ,  datetime (attribut),  dolda fält, ,  dd (element), ,  dölja, se visa och dölja DDA,  DOM, , , –, ,  decimal, ,  stöd i webbläsare,  decimalpunkt, ,  DOM Assistant,  default,  domän, se server default.htm,  DOM-träd, , , , ,  definierande instans,  do-while,  definitionslistor, se listor, definitions- Dragonfly, ,  listor Dreamweaver,  deklaration,  drop-down, se rullgardinslistor

 SAKREGISTER

✐ 100 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 313 --- #325

✐ ✐

dt (element), ,  Extensible Markup Language, se XML DTD, se dokumenttypsdefinition dyslexi, ,  F fetstil, ,  E fieldset (element), ,  Ecma International,  filer, ,  ECMA-,  file-schemat,  ECMAScript, se JavaScript filkatalog, se kataloger editor, se texteditor filväljare, , , , ,  egenskap,  Firebug,  elegant degradering, se graceful de- Firefox, se webbläsare gradation firstChild,  element, ,  flaggor, se Booleska värden obligatoriska, , ,  Flash, , , , ,  tomma, , , , , , , float (egenskap), , , , , , , , ,   Element-noder, , , , , flytande boxar, –, , , ,  ,  elementtyp,  automatisk bredd, se shrink-wrapping elementtyper,  frigång från, se frigång else,  jämfört med positionerade box- em (element), ,  ar,  em (enhet), , ,  omsluta, ,  empty-cells (egenskap),  fält, , , , ,  encoding, se teckenkodning deaktivera, ,  enctype (attribut),  fokusera,  enkel selektor, ,  skrivskydda,  entiteter, se teckenentiteter fältgrupper,  epilepsi,  färger,  e-postadress,  färgvärden,  escape, ,  förgrundsfärger, , –,  etiketter, se taggar förkortningar, ,  et-tecken,  föråldrad, ,  event handlers, se händelsehantera- försynta skript, , ,  re font (egenskap), , , ,  event listeners, se händelselyssnare font (element), , , ,  Event-objekt, ,  font-family (egenskap), , – events, se händelser fonts, se teckensnitt ex,  font-size (egenskap), , , –, exceptions, se JavaScript, undantag ,  expression(),  font-style (egenskap), , , , Extensible Hypertext Markup Langu- ,  age, se XHTML font-variant (egenskap), 

SAKREGISTER 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 101 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 314 --- #326

✐ ✐

font-weight (egenskap), , , , grad, , , , , , ,  ,  absolut,  for (attribut), , , ,  för html-elementet,  for (JavaScript),  relativ,  form (element), , ,  formaterad text,  H formell publik identifierare, , , h-h (element), , , , ,   formell systemidentifierare, , , hack, , se CSS, hack  handhållna enheter, ,  formella parametrar,  hashmap, se JavaScript, objekt formulär, , –, ,  hasLayout, , , , ,  formulärfält, se fält head, se huvud fotnoter,  head (element), –, , , ,  FPI, se formell publik identifierare headers (attribut), ,  fragmentidentifierare, , , ,  headers (HTTP), , , , , , frames,  , ,  Frameset DTD, , ,  hebreiska, , ,  frigång, , ,  height (attribut),  frågeparametrar,  height (egenskap), , , , , frågetecken,   FrontPage,  hexadecimal, , , , , , , FSI, se formell systemidentifierare , ,  funktioner, se JavaScript, funktioner Hickson, Ian,  funktionshinder, –, , ,  hjälpmedel,  funktionsnedsättning,  hämtningsmetod,  funktionsnotation, , , –, händelseattribut,   händelsehanterare, , , , , ,  G händelselyssnare, – Garrett, Jesse James, ,  registrera,  gemener, , , , , ,  händelser, , – genererat innehåll, , , , –, hänvisningar,   höjd, se bredd och höjd citattecken, se citattecken, ge- horungar, se änkor och horungar nererade hr (element),  räknare, se räknare href (attribut), , , ,  GET, , ,  HTML, ,  getElementById, ,  dokumentskelett, ,  getElementsByTagName,  historia, – GIMP,  som innehållsbärare,  global räckvidd,  styra presentation, , , , graceful degradation, , ,  , 

 SAKREGISTER

✐ 102 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 315 --- #327

✐ ✐

syfte,  innehållande blocket, –, –, versioner,  , , ,  html (element), , , , , , , innehållsskiktet, , , , , , , , ,  , ,  HTML, ,  input (element), –, , ,  HTTP, se protokoll, HTTP specifika attribut,  http-equiv (attribut),  ins (element),  http-schemat, ,  instanser,  huvud,  insticksprogram, , ,  i HTML-dokument, – interaktionsskiktet, , , , , , i HTTP,   Hypertext Markup Language, se HTML interna tabellobjekt,  Hypertext Transfer Protocol, se pro- internationalized resource identifier, tokoll, HTTP se IRI Internet Engineering Task Force, se I IETF i (element),  Internet Explorer, se webbläsare IANA-registret,  Internet Explorer, installera flera ver- id (attribut), , , , , , , sioner,  , , ,  Internet Protocol, se protokoll, TCP/IP identifierare, –, ,  IP, se protokoll, TCP/IP ideogram,  IRI,  id-selektorer, ,  ISO , se teckenkodning, ASCII IETF,  ISO , se teckenkodning, ISO  if,  ISO , se teckenkodning, Uni- ikoner,  code image/png,  italic, se kursiv stil img (element), ,  in,  J inch, se in japanska, , ,  index.html,  Java,  indrag,  Java-applets, se applets hängande,  JavaScript, , –, , , –, inherit, , ,   inifrån och ut,  bibliotek,  initialt värde, , , , , , funktioner, , ,   objekt, , , ,  inline objektegenskaper, –,  boxar, se boxar, inline satser och block,  element, –, , , , , stöd i webbläsare, ,  , , –, ,  undantag,  stilregler, ,  variabler, , ,  vektorer, , 

SAKREGISTER 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 103 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 316 --- #328

✐ ✐

jQuery,  konstruktor, , , ,  JScript, , , ,  kontaktinformation,  JSP,  kontext,  justering av text, se textjustering kontroller, se fält kontrolltecken, ,  K konturer,  kanji, se japanska koreanska, ,  kantlinjer, , , , , , , – kortnummer,  bredd, ,  kropp,  färg, ,  i HTML-dokument, ,  typ, ,  i HTTP, ,  kantlinjermodeller, se tabeller, kant- kryssrutor, , , , ,  linjemodeller kursiv stil, ,  kapitäler,  kaskad, , – L kataloger, , ,  label (attribut),  kbd (element),  label (element), , , , ,  kemiska formler,  lager,  kerning, se spärra och knipa text lagstiftning,  kinesiska, ,  lang (attribut), , , ,  klasselektorer, , ,  lastChild,  klasser,  layout, , , , , , ,  klient, , ,  layoutalgoritmer, se tabeller, layou- knappar, , , , , , ,  talgoritmer knipning, se spärra och knipa text layouttabeller, se tabeller, använda kodposition, ,  för layout kodpositioner, –, ,  leading, se radavstånd kolon, , , ,  ledtext kolumner,  i formulär, se label (element) CSS för,  till tabell, se caption (element) kolumngrupper,  left (egenskap), –, , , kombinator,  , ,  kombinatorer, , ,  legend (element), , ,  adjacent sibling combinator,  letter-spacing (egenskap),  child combinator, ,  li (element), , ,  descendant combinator,  Lie, Håkon Wium, ,  sibling combinator,  line boxes, se radboxar kommentarer line-height (egenskap), , , , i CSS,   i HTML,  linjebredd, se kantlinjer, bredd villkorliga, se villkorliga kommen- linjefärg, se kantlinjer, färg tarer linjetyp, se kantlinjer, typ konsonantskrifter, se abjader link (element), –, , 

 SAKREGISTER

✐ 104 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 317 --- #329

✐ ✐

Linux, , ,  vid utskrift, se utskriftsmargina- listelement, , , ,  ler listfält, , ,  margin-bottom (egenskap), , , listor, ,   definitionslistor, , ,  margin-left (egenskap), , ,  oordnade, , ,  margin-right (egenskap), , , , ordnade, , , ,   underordnade,  margin-top (egenskap), , , , listruta,  ,  listrutor, ,  markup language, se märkspråk list-style (egenskap),  matematiska uttryck,  list-style-image (egenskap),  MathML,  list-style-position (egenskap),  max-height (egenskap),  list-style-type (egenskap), ,  maxlength (attribut),  logiska operatorer, se operatorer, lo- max-width (egenskap), , ,  giska media (attribut), , ,  längd, , , , , , –, , mediefrågor, ,   medietyper,  längdenheter meta (element), ,  absoluta, ,  metainformation,  relativa,  method (attribut), , ,  länkar, , ,  metoder, ,  besökta och obesökta,  Microsoft, , , , , , , , ta bort understrykning, ,  , , ,  läsriktning, ,  millimeter, se mm lösenordsfält, , ,  MIME, , , , , , , ,  longdesc (attribut),  min-height (egenskap),  loops, se slingor minimeras,  Lynx, se webbläsare minimering, , , ,  min-width (egenskap), ,  M mm, ,  Mac, , ,  mobila enheter, se handhållna enhe- mailto-schemat,  ter map (element),  modem,  mappar, se kataloger märkkodsdeklaration,  margin (egenskap), , , , , märkspråk, , , ,  , , , , , , målfasen, ,  ,  målgrupper, anpassning till,  marginaler, , , , , ,  Mozilla, se webbläsare, Firefox kollapsande, , , ,  multimedia,  negativa på flytande boxar, , multipart/form-data,   multiple (attribut),  musgester, 

SAKREGISTER 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 105 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 318 --- #330

✐ ✐

muspekare, , ,  logiska,  relationsoperatorer,  N optgroup (element),  name (attribut), , , , , , option (element),   ordmellanrum,  namnrymd,  ordnade listor, se listor, ordnade namnrymder, , , , ,  orhpans (egenskap),  navigering, , ,  outline (egenskap), ,  NCR, se teckenreferenser, numeris- outline-color (egenskap),  ka outlines, se konturer NCSA,  outline-style (egenskap),  .NET,  outline-width (egenskap),  Netscape, se webbläsare, Netscape overflow, se spill new (operator), ,  overflow (egenskap), –,  nextSibling,  OWL,  NodeList,  noder, ,  P non-breaking space, se blanktecken p (element), , , , ,  normala flödet, , , ,  padding, , ,  noscript (element), , ,  padding (egenskap), , , , , Notepad, se Anteckningar , , , , , , numeriska teckenreferenser, se tec- , , ,  kenreferenser, numeriska padding-bottom (egenskap), , , nummertecken, , ,   numrerade listor, se listor, ordnade padding-left (egenskap), , , , numrering, automatisk, se räknare  nyckelord, , , , , , , , padding-right (egenskap),  , , , , , , padding-top (egenskap), ,   page-break-after (egenskap),  Nyman, Robert,  page-break-before (egenskap),  page-break-inside (egenskap),  O paket,  object (element), ,  papper, se utskrift objekt, se JavaScript, objekt param (element),  objektdetektering,  parametrar i formulär, , ,  oktal,  path, se sökväg oktett, – pc,  ol (element), , ,  persistent, , ,  oordnade listor, se listor, oordnade PHP,  Opera, se webbläsare PI, se processinstruktioner operativsystem, , , , ,  picas, se pc operatorer pixel, ,  aritmetiska,  plan i Unicode, 

 SAKREGISTER

✐ 106 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 319 --- #331

✐ ✐

plug-ins, se insticksprogram dynamiska,  plustecken,  kombinera,  PNG,  regelordning,  points, se pt pt, ,  position (egenskap), , –, PUBLIC, se formell publik identifie- , , , ,  rare positionering,  publiceringsverktyg, ,  absolut, , , , , , punkter, ,  , ,  punkter (enhet), se pt fast,  punktlistor, se listor, oordnade jämfört med flytande boxar,  punktnotation,  relativ, , ,  px, , ,  statisk,  POST, , ,  Q pre (element),  q (element), , , ,  preferred, , ,  query parameters, se frågeparamet- prefix,  rar presentationsskiktet, , , , , quirks mode, , , –  quotes (egenskap),  previousSibling,  procenttecken, , ,  R procentvärden, , , , , , –, radavstånd, , , , ,  , ,  radbox,  processinstruktioner,  radboxar, ,  progressiv förbättring, se progressi- vid flytande boxar,  ve enhancement radbrytning, ,  progressive enhancement, , , rader,  ,  radgrupper, –,  propagera,  radioknappar, , , , , ,  propagering, ,  ramar, se frames property, se egenskap RDF,  protokoll, ,  readonly (attribut), ,  HTTP, , , ,  rect(),  TCP/IP,  regel,  prototkoll registrera händelselyssnare,  HTTP,  Rehabilitation Act,  prototyp,  rekommendationer, ,  prototype,  rektanglar, se boxar Prototype (bibiotek),  rel (attribut), , ,  prototyper, , – relaterade dokument,  pseudoelement, , –, , , relationsoperatorer, se operatorerre-  lationsoperatorer pseudoklasser, –, ,  relativ URI, se URI, relativ

SAKREGISTER 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 107 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 320 --- #332

✐ ✐

repertoar, – scope (JavaScript), se räckvidd (Java- request, se begäran Script) respons, ,  scope (räknare), se räckvidd (räkna- exempel,  re) response, se respons screen readers, se skärmläsare resurser, ,  script (element), , , , ,  länka till, – scrollbars, se rullister reumatism,  Section ,  rev (attribut),  select (element), , ,  RGB, ,  selected (attribut),  rgb(), ,  selektor, ,  right (egenskap), –, , , selektorer, , ,   gruppering,  räckvidd (JavaScript),  specificitet, se specificitet räckvidd (räknare),  semantik, , , , , ,  räknare, – semantiska webben,  rörelsehindrade,  semikolon, , ,  rotelement, , ,  server, , , , , , ,  rotkatalog, se kataloger SGML, , –, , , ,  rotrelativ URI, se URI, rotrelativ short tags,  rows (attribut), ,  shorthand properties, se samlingse- rowspan (attribut), ,  genskaper RSS,  shrink-wrapping,  rubrikceller, se th (element) sidbrytningar, , ,  rubriker,  sidfot,  rubynoteringar,  sidselektorer,  rule, se regel Silverlight,  rule set, se regel size (attribut),  rullgardinslista, ,  skiftlägeskänslighet, , , , , rullgardinslistor,  , , , , ,  rullister, , ,  skikt, – run-in, se boxar, run-in skjutdörrar,  skärmläsare, , , , , , , S , , , , , , Safari, se webbläsare , , ,  samlingsegenskaper, , –, , skript,   skriptspråk,  samp (element),  på klient eller server, ,  sats,  skrivriktning, ,  satser, se JavaScript, satser och block sliding doors, se skjutdörrar schema,  slingor, ,  scope (attribut), ,  sluttagg, –, ,  snabbtangenter, , 

 SAKREGISTER

✐ 108 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 321 --- #333

✐ ✐

snedstreck, ,  i JavaScript,  bakvänt, se backslash strong (element), , ,  sökmotorer, , ,  struktur, ,  sökväg, , ,  strukturell nivå, ,  spacer-bilder, , ,  stycken, , ,  spalter,  style (attribut), , , ,  span (attribut),  style (element), , , ,  span (element), ,  style sheets, se stilmallar specialtecken sub (element),  skydda i CSS,  subklass,  skydda i HTML, , , , , subskript, ,   summary (attribut), ,  skydda i JavaScript,  sup (element),  skydda i URI,  superskript, ,  specificitet, , – SVG,  beräkna,  switch,  specifikationer, , , , ,  svärta,  speed dial, se kortnummer syllabarier,  spill, ,  syn, nedsatt, , ,  spärra och knipa text,  synskadade, , , , ,  spårbarhet, ,  SYSTEM, se formell systemidentifie- språkkoder,  rare src (attribut), , ,  systemteckensnitt, se teckensnitt, sy- Standard Generalized Markup Lan- stem guage, se SGML starttagg, –,  T starttaggar,  tabbflikar, ,  status (HTTP),  tabeller, , – stavelseskrift, se syllabarier använda för layout, , , , stilmallar, , , ,  , ,  alternativa,  celler, , ,  användares, ,  CSS för, – externa, –, , ,  element, se table (element) författares, ,  fot, se tfoot (element) importera,  huvud, se thead (element) interna, , , ,  interna objekt, se interna tabel- webbläsarens,  lobjekt webbläsares, , , , , kantlinjemodeller, ,   kolumndeklarationer, se col (ele- stilregler,  ment); colgroup (element Strict DTD, , , , ,  kropp, se tbody (element) strängar layoutalgoritmer,  i CSS, ,  rader, , 

SAKREGISTER 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 109 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 322 --- #334

✐ ✐

rubriker, se caption (element) texteditor, , , ,  zebrarandiga, ,  textekvivalenter, , , , , , table (element), , , , ,  , , ,  table-layout (egenskap), ,  textfält, , , , ,  taggar,  text-indent (egenskap),  utelämna, –, , , , , textjustering ,  horisontell, ,  taggat märkspråk,  vertikal, ,  tags, se taggar Text-noder, ,  Tan, Edwardson,  textrutor, , , ,  tbody (element), –, , ,  textstorlek, se grad TCP/IP, se protokoll, TCP/IP text-transform (egenskap),  td (element), , ,  texttransformering,  tecken,  tfoot (element), ,  avstånd mellan,  th (element), , ,  teckenentiteter, , , , ,  thead (element), , ,  teckenkodning, –, , , , , this, , ,  , ,  tillgänglighet, –, , ,  ASCII, –, ,  myter och vanföreställningar, , deklarera, ,   ISO , – title (attribut), , , , , ,  Unicode, –, ,  title (element), , , , ,  Windows-,  tool-tips, , ,  teckenreferenser top (egenskap), –, , , numeriska, ,  , ,  teckenreferenser, numeriska, ,  tr (element), –,  teckenrepertoar, se repertoar Transfer Control Protocol, se proto- teckensnitt, , , , ,  koll, TCP/IP definiera i CSS, ,  transformering av text, se texttrans- generella, , ,  formering system,  Transitional DTD, , ,  tester, se användartester; webbsidor, transparent, , , ,  testa TRouBLe, –,  text/css, ,  try-block,  text/html, , , – tryckknappar, se knappar text/javascript,  tum, se in text/xml,  type (attribut), , , , , , , text-align (egenskap), , , , , ,  , –,  typografi, , , , –, ,  textarea (element), , ,  typografiska konventioner, – text-decoration (egenskap), , , typselektor, , ,  ,  typsnitt, se teckensnitt textdekoration, 

 SAKREGISTER

✐ 110 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 323 --- #335

✐ ✐

U WAI, ,  ul (element), , ,  validator,  undantag, se JavaScript, undantag validering, ,  Unicode, se teckenkodning, Unico- value (attribut), , , , ,  de var (element),  uniform resource identifier, se URI variabla uttryck,  uniform resource locator, se URL variabler, se JavaScript, variabler uniform resource name, se URN VBScript,  universalselektor, ,  WCAG,  implicit,  Web Accessibility Initiative, se WAI implict, ,  Web Applications .,  unobtrusive scripts, se försynta skript Web Content Accessibility Guidelines, URI, , , , , , , , , , se WCAG , , , , , ,  webbläsare absolut, , –, , , , buggar, , , , , , , , ,  , , , , , , , dokumentrelativ, , , , , , , ,   Chrome, ,  exempel,  Firefox, , , , , , , , relativ, , –, ,  , , , , , , rotrelativ, , , , ,  , , , , , , URL,  ,  url(), , ,  Internet Explorer, , , , , URN,  , , , , , , , US-ASCII, se teckenkodning, ASCII , , , , , , , user agent style sheet, se stilmallar, , , , , , –, webbläsares , , , , , , user style sheet, se stilmallar, använ- , , , , , , dares –, , –, , UTF-, , , , , , , , , , , , , ,  ,  UTF-, ,  Lynx, ,  utmedier, , , , , , ,  Mosaic,  utskrift, , , , , , , , Netscape, , , , –, , , , –, , ,  ,  äldre, , , ,  utskriftsmarginaler,  Opera, , , , , , , , utskriftsvänliga sidor, , , , , , , , , , ,  , , , , , , , , , ,  V rekommenderade,  WC, , , , , , , , , , , 

SAKREGISTER 

✐ Innehåll Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. 111 ✐

✐ ✐ ✐ ✐ ``mrhc-bok'' --- 2008/11/4 --- 14:43 --- page 324 --- #336

✐ ✐

Safari, , , , , , , , värden , , , , , , beräknade, se beräknade värdet , ,  initiala, se initialt värde testa i, ,  procent, se procentvärden textwebbläsare, , , ,  word-spacing (egenskap),  webbplatser, , ,  World Wide Web Consortium, se WC offentliga,  vyn, , , , ,  webbsidor, ,  webbsidor, testa,  X vektor,  x-höjd, ,  vektorer, se JavaScript, vektorer XHTML, , , – well-formed, se XML använda som HTML, ,  versaler, , , ,  historik, ,  vertical-align (egenskap), , , , modularization of,  , ,  namnrymd, ,  vertikalt streck,  skillnader i CSS, ,  WHAT WG,  skillnader i JavaScript, ,  while,  skillnader mot HTML, – white-space (egenskap),  XHTML,  widows (egenskap),  XHTML,  width (attribut),  xlmns (attribut),  width (egenskap), , , , , XML, , ,  , , , , , , välformad, ,  , , ,  XML-deklarationer,  viewport, se vyn XMLHttpRequest,  vikt, ,  villkor (JavaScript), – Z villkorlig kommentar,  Zeldman, Jeffrey,  villkorliga kommentarer, , ,  z-index (egenskap), ,  window.document, se document-objektet zoom,  window.event, ,  window-objektet,  Ä Windows, , , , , , , , änkor och horungar,  , , ,  ärva, se arv Windows-, se teckenkodning, Windows- Ö visa och dölja, ,  överlappande boxar, se boxar, över- visibility (egenskap),  lappande vita floder,  Vägledningen -timmarswebben,  välformad, se XML välformat,  värde, 

 SAKREGISTER

✐ 112 Utdrag ur Max räckvidd med HTML & CSS. c 2008 HME Publishing. Kopiering förbjuden. Innehåll ✐

✐ ✐ www.hme.se

Läs mer på vår hemsida Köp våra böcker här Distributörer till bokhandeln Mer om våra böcker finns på för- Våra böcker finns hos välsorte- Våra böcker distribueras av För- lagets hemsida. Där kan du också rade boklådor runt om i Sverige, lagssystem. Vi är anslutna till bläddra i böckerna, direkt på bland dem Akademibokhandeln, Bokrondellen. skärmen. Bokia och andra handlare.

HME Publishing, Box 1343, 181 25 Lidingö. Telefon: 08-636 25 89, fax: 08-636 25 99. e-post: [email protected], hemsida: www.hme.se