HTML tabeller kan vara användbart att känna till – speciellt när det gäller formatering av data på en webbsida.

Det populäraste för tabeller tror jag är att bygga en tabell med tabellrader (<tr> – table rows) och tabellkolumn-celler (<td> – table cell), dock finns där även möjlighet att lägga till en s.k. caption (rubrik) för en tabell, såväl som ”kolumnhuvud” så man kan definiera rubriktexter för vardera kolumn (<thead> & <th>). Utöver detta kan man även definiera specifikt vilken del av tabellen som är själva ”kroppen” av tabellen (<tbody>) för att bidra både semantiskt såväl som för lättläslighet för kodaren.

Där finns fler möjligheter med tabeller, däremot har jag aldrig fått mer användning för annat än egentligen tabellrader (<tr>), och tabellkolumn-cellerna (<td>) själv, så jag kommer som mest gå igenom dessa + <caption> såväl som <thead> & <th> samt <tbody> då dessa är de delar jag känner är viktigast och kan vara mest användbara att känna till och veta hur man i sådana fall använder dem. De andra delarna man kan använda för tabeller kan läsas mer om på nedanstående referenssida hos MDN.

Jag är säker på att grunderna som vi går igenom här räcker för de flesta tillfällen, och om ni nu skulle finna er i en situation där ni skulle behöva fler möjligheter kan ni alltid utforska ytterligare på MDN’s referenssida för HTML Tabeller.

Hur tabeller i HTML är uppbyggda

När vi tittar på hur man bygger tabeller i HTML så kan vi (som vi senare kommer visa) se att man först kodar själva behållaren som ska vara hela tabellen (<table>), därefter gör man taggar för att representera antalet rader man önskar ha (<tr>), och inuti dessa sen placeras tabellradernas celler (<td>) motsvarande hur många kolumner ens tabell skall ha.

Utöver dessa väldigt fundamentala delar för att bygga en HTML tabell, finns där tillskott man kan använda som utökar möjligheterna med att bygga HTML tabeller, den första värd att nämna av dessa tillskotten är då: <caption> taggen, som ska placeras direkefter själva <table> taggen när man kodar sin tabell.

Vad <caption> då gör är att låta den som kodar tabellen sätta en rubriktext som skall representera hela tabellens innehåll. Exempel på hur detta kodas kommer demonstreras längre ned i inlägget.

Efter detta har vi även möjlighet att ange ett s.k. <thead> område för vår tabell (direkt efter <caption> taggen i sådana fall (första faktiska tabellraden som inte är del av vanliga tabellraderna (<tr>))), <thead> fyller funktionen att låta den som kodar tabellen ange rubriktexter för vardera enskilda kolumn. <thead> verkar precis som en vanlig tabellrad (<tr>), fast står utanför de vanliga tabellraderna då den inte är del av själva tabelldatan.

Om vi nu har valt att utöka våra möjligheter med tabellen redan genom att använda <thead> kan vi lika bra fortsätta och definiera området där själva tabelldatan skall placeras genom att ange <tbody> direkt efter sluttaggen för vårt <thead> område (</thead>). <tbody> kommer då att omfamna all tabelldatan för tabellen.

Man kan även ha en s.k. ”tabellfot”, men det är inget jag någonsin har varken sett användas för webbaserade tabeller, och inte heller haft användning för själv, så detta kommer vi inte gå igenom i det här inlägget, vill ni veta mer om detta och annat gällande HTML tabeller, så kolla in MDN’s referenssida för HTML Tabeller som vi länkade till i ovan stycke.

Själva tabell-taggen <table>

Alltid när ni vill skapa en tabell i HTML, måste ni börja med att ange <table> taggen, denna kommer att fungera som en omfamnande tagg som kommer hålla/omfamna all tabell-relaterad HTML-kod.

Tidigare (HTML 4.01) var det populärt att via <table> taggen definiera s.k. cellpaddingcellspacingborders, m.m. som attribut, men alla dessa har numera blivit inaktuella, och blivit ersatta med CSS-kod för samtliga stilar man kan tänkas önskas istället.

<table>
</table>

Eventuell tabellrubrik för hela tabellinnehållet (<caption>)

Om man önskar ha en tabellrubrik som skall stå för hela innehållet man tänker ha i sin tabell, så måste första taggen som följer <table> vara: <caption> taggen, som då kommer att utgöra denne rubriktext för hela tabellens innehåll.

Den kommer då även sträcka sig över alla kolumners sammansatta bredd och förmodligen vara centrerad ovanför alla tabellcellerna (kan säkert ställas in via CSS annars).

Utöver detta får ni själva ”styla” rubriktexten ni väljer att placera där via CSS.

<table>
   <caption>Tabellrubrik här</caption>
</table>

Eventuella kolumnrubriker med <thead> (kolumnrubriks-raden/området) & <th> (kolumnrubriks-cellerna)

Man får sen välja själv också om man vill ha rubriker för de respektive kolumnerna man planerat att ha i sin tabell, t ex. om ni väljer att skapa en tabell med 3 kolumner, så kanske den första är ”förnamn”, den andra ”efternamn” och den tredje ”personnummer” exempelvis, då hade ni kunnat koda in dessa som rubriker för respektive kolumn på följande vis:

<table>
   <caption>Tabellrubrik här</caption>
   
   <thead> <!-- Tabellkolumn rubriks raden -->
      <th>Förnamn</th> <!-- Första kolumns rubrik cell -->
      <th>Efternamn</th> <!-- Andra kolumns rubrik cell-->
      <th>Personnummer</th> <!-- Tredje och sista kolumns rubrik cell -->
   </thead> 
</table>

Jag har skrivit att detta är eventuellt att ha med, då ni själva väljer om ni vill ha med detta eller ej :) Samma som med caption taggen!

Tabellens ”kropp” med tabelldata: <tbody>

Efter att man angett en <thead> kanske det endast är logiskt att definiera vart <tbody> skall vara (om vi har ett huvud definierat är det logiskt att definiera kroppen också) så man med enkelhet kan skilja på tabellhuvud och tabellkropp. Om man däremot inte har angivit <thead> anser jag själv att <tbody> kan vara lite överflödigt, det kanske ger extra semantisk betydelse för sökmotorindexerings bottarna, men för egen del brukar jag i sådana fall köra rent med bara tabellrader (<tr>) och tabellceller (<td>) utan <thead> och <tbody>. Dock om omvänt är det logiskt för mig att de likaväl kan hänga ihop. Se exempel nedan:

<table>
   <caption>Tabellrubrik här</caption>
   
   <thead> <!-- Tabellkolumn rubriks raden -->
      <th>Förnamn</th> <!-- Första kolumns rubrik cell -->
      <th>Efternamn</th> <!-- Andra kolumns rubrik cell-->
      <th>Personnummer</th> <!-- Tredje och sista kolumns rubrik cell -->
   </thead>

   <tbody>
   </tbody>
</table>

Tabellrader: <tr>!

Nu sen kommer vi in på de mer väsentliga delarna av att skapa HTML-tabeller, nämligen tabellraderna som kodas varje rad för sig, så önskar ni ha 5 st. rader i er tabell, så måste ni för-hand, eller via annat verktyg koda in 5 st. tabellrader via HTML-koden på följande sätt:

<table>
   <caption>Tabellrubrik här</caption>
   
   <thead> <!-- Tabellkolumn rubriks raden -->
      <th>Förnamn</th> <!-- Första kolumns rubrik cell -->
      <th>Efternamn</th> <!-- Andra kolumns rubrik cell-->
      <th>Personnummer</th> <!-- Tredje och sista kolumns rubrik cell -->
   </thead>

   <tbody>
      <tr></tr> <!-- Första raden -->
      <tr></tr> <!-- Andra raden -->
      <tr></tr> <!-- Tredje raden -->
      <tr></tr> <!-- Fjärde raden -->
      <tr></tr> <!-- Femte och sista raden -->
   </tbody>
</table>

Tabellkolumns celler: <td>!

Förutom tabellraderna så är tabellkolumnernas celler den andra viktigaste komponenten i samtliga HTML tabeller, det är i dessa som data för tabellen sen placeras, raderna är bara en typ av ”behållare” som håller samtliga celler för en specifik tabellrad. Varje cell som sen placeras på en specifik tabellrad kommer att utgöra en specifik kolumn. Tillsammans sen bildar alla tabellradernas samtliga tabellkolumns celler, samtliga kolumner i tabellen. Se nedan exempel för tydligare bild av hur allt hänger samman :)

<table>
   <caption>Tabellrubrik här</caption>
   
   <thead> <!-- Tabellkolumn rubriks raden -->
      <th>Förnamn</th> <!-- Första kolumns rubrik cell -->
      <th>Efternamn</th> <!-- Andra kolumns rubrik cell-->
      <th>Personnummer</th> <!-- Tredje och sista kolumns rubrik cell -->
   </thead>

   <tbody>
      <tr> <!-- 1:a raden -->
         <td></td> <!-- 1:a raden: Första kolumns 1:a tabellcell -->
         <td></td> <!-- 1:a raden: Andra kolumns 1:a tabellcell -->
         <td></td> <!-- 1:a raden: Tredje kolumns 1:a tabellcell -->
      </tr> 
      <tr> <!-- 2:a raden -->
         <td></td> <!-- 2:a raden: Första kolumns 2:a tabellcell -->
         <td></td> <!-- 2:a raden: Andra kolumns 2:a tabellcell -->
         <td></td> <!-- 2:a raden: Tredje kolumns 2:a tabellcell -->
      </tr> 
      <tr> <!-- Tredje raden -->
         <td></td> <!-- 3:e raden: Första kolumns 3:e tabellcell -->
         <td></td> <!-- 3:e raden: Andra kolumns 3:e tabellcell -->
         <td></td> <!-- 3:e raden: Tredje kolumns 3:e tabellcell -->
      </tr> 
      <tr> <!-- Fjärde raden -->
         <td></td> <!-- 4:e raden: Första kolumns 4:e tabellcell -->
         <td></td> <!-- 4:e raden: Andra kolumns 4:e tabellcell -->
         <td></td> <!-- 4:e raden: Tredje kolumns 4:e tabellcell -->
      </tr>
      <tr> <!-- Femte och sista raden -->
         <td></td> <!-- 5:e raden: Första kolumns 5:e tabellcell -->
         <td></td> <!-- 5:e raden: Andra kolumns 5:e tabellcell -->
         <td></td> <!-- 5:e raden: Tredje kolumns 5:e tabellcell -->
      </tr>
   </tbody>
</table>
HTML Tabeller Demonstration - kod + förhandsgranskning.

HTML Tabeller Demonstration – kod + förhandsgranskning.

När man ska använda HTML tabeller på en webbsida

HTML Tabeller brukar man säga skall användas för att formatera data i tabellform. De ska INTE användas för att bygga upp layouter för ens webbsida, det var för HTML 4.01 man gjorde detta, i dagsläget finns tillräckligt bra CSS-kodning som tar hand om detta. Därför bör man fokusera användning av HTML tabeller på att presentera data i tabellform!

Exempel på hur jag menar för när tabeller inte ska användas, är t ex. om du tänkt göra en ny webbsida där du gör hela den nya webbsidans layout med <table>, colspan, rowspan– för sammanslagning av tabellceller för att bygga upp layouten m.m.

Exempel på korrekt användning av tabeller är t ex. om du vill presentera excel data på en webbsida, eller liknande typ av data, då passar tabellform alldeles utmärkt :) Eller om du t ex. ska presentera en kundvagn för en Webbshops webbsida.

Tabelltips och tricks: Slå samman tabellceller med colspan och rowspan attribut

Där finns två attribut som går att använda till <td> taggen (såväl som <th> taggen) för tabellcellerna, och dessa används för att slå samman ”x” antal tabellceller så de tar upp samma utrymme som det ”x” antalet celler som slogs ihop annars hade gjort.

colspan attributet för sammanslagning av flera kolumner

Som ett exempel kan ni tänka er att vi har en väldigt basic tabell med 3 rader och 4 kolumner, låt säga då att jag vill att denne tabell skulle se ut som nedan bild demonstrerar:

Visuellt exempel för hur colspan attributet ter sig i praktiken.

Visuellt exempel för hur colspan attributet ter sig i praktiken.

Notera dock i ovan bildexempel att första raden nu har endast 3 tabellceller sammanlagt, vilket innebär att vi måste ha 3 st. tabellceller i koden(!) (där den andra tabellcellen har attributet colspan med värdet ”2” för att motsvara 2 cellers utrymme).

Man anger attributet colspan till den tabellcell där sammanslagningen skall börja, som ni ser i bilden ovan så gav vi colspan attributet till tabellcell #2 på första raden, och gav den attributvärdet ”2”, vilket innebar att den specifika tabellcellen skulle uppta 2 st. tabellcellers utrymme – och då sträcker den sig över kolumnerna då vi angav sammanslagning med colspan.

NOTERA(!) att om vi anger att en specifik tabellcell skall sträcka sig över 2 st. tabellcellers utrymme, så måste vi ta bort efterföljande cell(er) för att bibehålla antalet korrekta kolumner(!).

colspan attributet gör inte detta åt oss då vi kodar webbsidor och HTML-kod för hand, utan vi måste själva vara uppmärksamma på att räkna med colspan och rowspan attribut och få HTML-koden för tabellen att stämma överens med vad som blivit angivet.

Se nedan bild för att jämföra koden med resultatet:

HTML kod + förhandsgranskning av colspan för tabellcell #2 med värde av 2 cellers utrymme.

HTML kod + förhandsgranskning av colspan för tabellcell #2 med värde av 2 cellers utrymme.

rowspan attributet för sammanslagning av flera rader

Om vi istället har behov av att få flera stycken tabellrader att smälta samman, så använder vi oss utav attributet: rowspan, som fungerar i princip på exakt samma sätt som colspan fast för tabellrader. Se bild nedan för hur detta skulle kunna se ut:

 

Visuellt exempel som tydligt visar på behovet att själv som kodare kompensera för effekten av colspan respektive rowspan attributen!

Visuellt exempel som tydligt visar på behovet att själv som kodare kompensera för effekten av colspan respektive rowspan attributen!

Använda <col> och <colgroup> för att sätta gemensamma inställningar för tabellens kolumner

<col> och <colgroup> tror jag är många som kanske inte riktigt har koll på vad dessa gör, eller hur man använder dem (inte ens jag hade speciellt bra koll förrän för någon timma sedan då jag själv läste på om dessa lite noggrannare för att för er läsares skull, såväl som min egen – i detta inlägget bättre kunna förklara dessa och funktionen de fyller för HTML tabeller).

De är faktiskt oerhört användbara och löser en hel del ”styling dilemma” man senare annars kan få med CSS.

Jag hittade ett Youtube klipp som tydligt och på ett väldigt bra och lättabsorberat sätt demonstrerar hur man använder dessa taggarna för att utöka sina möjligheter och framtida styling via CSS för sina HTML tabeller: https://www.youtube.com/watch?v=Q8cPRnVIt20.

Jag kommer här nedan gå igenom i stort sett samma som youtubeklippet ovan gick igenom, och försöka förklara det så tydligt det bara går med MDN’s referenssidor för <col>, såväl som <colgroup> till hjälp :)

Komma igång med att använda <colgroup> och <col>

Det första ni behöver veta är att <colgroup> är ”huvud-taggen” som kan innehålla/representera en eller flera kolumner (via span attributet eller <col /> taggar), och den måste placeras direkt efter <table> taggen (har man valt att ha en <caption> så ska <colgroup> placeras efter <caption> taggen – men Måste vara innan <thead>). Man skulle kunna säga att <colgroup> liknas ”meta-data” för tabellen, och inte riktigt är del av själva tabellens innehåll. Funktionen <colgroup> och <col /> fyller är att hjälpa till att på ett bättre och smidigare sätt kunna tilldela stilar och andra ”inställningar” till specifika kolumner. Väldigt användbart!

Alternativet om man inte hade använt <colgroup> och <col /> hade varit att ange CSS-stilar till varje enskild tabellcell, vilket i längden blir ganska utmattande (tro mig)..

<colgroup> har ett attribut man kan använda istället för att placera <col /> taggar inuti <colgroup>, detta attribut är span, som låter en ange hur många tabellkolumner <colgroup> taggen skall påverka/gälla. Alternativt är att man anger <col /> taggar inuti <colgroup> taggen, där dessa sen då motsvarar de faktiska kolumnerna som existerar i er HTML tabell, dessa kan sen ges individuella och egna CSS-stilar på ett smidigt sätt via t ex. klasser eller ID:n :)

Ange antingen span attributet för <colgroup>eller <col /> taggar motsvarande kolumnerna ni önskar ange stilar (eller annat) till, inte både och! Notera även att er kod förmodligen inte kommer valideras som HTML5 om ni anger annat än klass/ID för <col /> taggarna, och egentligen behöver ni inte mer än så! För allting ni behöver göra med era kolumner kan anges via CSS – vi kommer gå igenom detta i senare inlägg :) Er kod kommer inte heller valideras verkar det som om ni för den delen anger en sluttagg till <col> (<col></col>) istället för att ange <col> enligt XML reglerna för stängning av ensamstående tagg (<col />). Ni kan testa själva i W3C HTML validator :)

<table>
   <caption>Tabellrubrik här</caption>

   <colgroup>
      <col class="firstColumn" />
      <col class="secondColumn" />
      <col class="thirdNLastColumn" />
   </colgroup>
   
   <thead> <!-- Tabellkolumn rubriks raden -->
      <th>Förnamn</th> <!-- Första kolumns rubrik cell -->
      <th>Efternamn</th> <!-- Andra kolumns rubrik cell-->
      <th>Personnummer</th> <!-- Tredje och sista kolumns rubrik cell -->
   </thead>

   <tbody>
      ...
   </tbody>
</table>

Slutkläm

Tabeller är som sagt väldigt användbart att känna till hur man skapar i HTML, och det är egentligen inte så svårt heller när man har en bra och översiktlig koll på alla delarna som utgör HTML tabeller. Och detta hoppas jag att det här inlägget kan ha försett er med :)

Prova på lite själva och experimentera med det jag visat ovan, kanske även med några av delarna som MDN’s referenssida gick igenom, och testa lägg in eget innehåll m.m. :)

Tills nästa inlägg-

Bilder är något av det vanligaste typen av innehåll förutom text som man brukar placera på sina webbsidor, de kan ge webbsidan ett proffsigare och ”fullare” intryck om det är bilder av rätt typ, på rätt plats :)

HTML’s bildtaggar känner ni säkert igen sedan tidigare: <img>, själv brukar jag använda 4 attribut (+ klass / ID) för mina bilder: src, width, height samt alt.

MDN’s referenssida för HTML bildtaggen <img> hittas här: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img.

Tankar kring bildformat att använda (.jpg, .png, .gif, etc.)

Jag brukar hålla mig till .jpg, .png, .gif när jag lägger upp bilder med <img> taggen på webbsidor, däremot säger MDN’s referenssida att antalet stödda bildformat är upp till webbläsaren som tolkar webbsidan – förutom de listade ovan finns ju även SVG (Scalable Vector Graphic (bibehåller alltid samma höga kvalitet)), samt BMP (Bitmap picture).

Några webbartiklar jag hittade som verkar ha intressant och bra information om detta område kan ses nedan för de av er som vill läsa på lite extra om detta:

Insikt .png bildformat (Portable Network Graphics – fonetiskt uttalat PING)

.png är ett jättestarkt bildformat i mån av snabb laddningstid, stöd för alpha-kanal (genomskinliga bilder – som GIF fast högre upplösning), bra kvalitet och har allt.

MEN(!) det är inte alltid som .png bildformatet stöds i alla webbläsare – därför kan man i t ex. Internet Explorer ibland behöva lägga in extra kod för att bidra med extra stöd (JavaScript).

Detta är nog enda nackdelen jag kan komma på. När .png bildformatet inte stöds så kan kvaliteten bli lidande och i värsta fall (typ i äldre Internet Explorer) så försvinner alphakanalen och blir vanlig vit färg istället.

.png brukar jag själv använda för t ex. logotyper, ikoner, transparenta bilder.

För att se lite kortfattat vad Wikipedia säger om .png som bildformat se nedan utdrag:

Portable Network Graphics (PNG) is a raster graphics file format that supports lossless data compression. PNG was created as an improved, non-patented replacement for Graphics Interchange Format (GIF), and is the most used lossless image compression format on the Internet.

PNG supports palette-based images (with palettes of 24-bit RGB or 32-bit RGBA colors), grayscale images (with or without alpha channel), and full-color non-palette-based RGB[A] images (with or without alpha channel). PNG was designed for transferring images on the Internet, not for professional-quality print graphics, and therefore does not support non-RGB color spaces such as CMYK.

PNG files nearly always use file extension PNG or png and are assigned MIME media type image/png

För webbläsarsupport se följande utdrag från Wikipedia:

Despite calls by the Free Software Foundation and the World Wide Web Consortium (W3C), tools such as gif2png, and campaigns such as Burn All GIFs, PNG adoption on websites has been fairly slow due to: late and buggy support in Internet Explorer, particularly regarding transparency.

PNG compatible browsers include: Apple Safari, Google Chrome, Mozilla Firefox, Opera, Camino, Internet Explorer 7 (still numerous issues), Internet Explorer 8 (still some issues), Internet Explorer 9 and many others. For the complete comparison, see Comparison of web browsers (Image format support).

Especially versions of Internet Explorer (Windows) below 9.0 have numerous problems which prevent it from correctly rendering PNG images.

Där kan ni ju se hur stora problem Internet Explorer haft och har med .png som bildformat.

Inkluderade även där lite länkar från Wikipedia utdraget som kan hjälpa skapa stöd för .png bilder om ni är ute efter sådant i tidigare versioner av Internet Explorer, såväl som länken till en jämförelsetabell där man lättare kan översiktligt se vilka webbläsare har vilket typ av stöd för .png som bildformat.

Var dock vaksamma på att även om där finns s.k. ”hack” för att fixa stöd för .png bildformat, så brukar detta fortfarande vara rätt så klumpigt och problematiskt och inte optimal lösning.

Insikt .jpg bildformat

.jpg formatet är ett jättestarkt bildformat när det gäller högupplösta och högkvalitativa bilder (mycket färger och mycket nyanser) – bör användas vid fotografier eller liknande.

Se följande artikel för mer insikt: https://css-tricks.com/when-to-use-jpg-and-when-to-use-gif/

Insikt .gif bildformat (Graphics Interchange Format)

Använd om bilden har fåtalet färger, ganska hårda och distinkta kanter, ev. alpha kanal för transparens, eller om ni har GIF animationer (PNG kan inte göra animationer).

GIF animationer (se hur man skapar dessa med hjälp av verktyg listade på Länkar-sidan) kan läggas in på webbsidor med <img> taggen.

Positionering av bilder bland innehållet för webbsidan

Angående positionering av bilder på en webbsida säger jag bara en sak: CSS.

All positionering utav bilder sker via CSS. Kommer skriva mer om detta i inlägg för CSS-kodning senare framöver :)

Klickbara bilder med länkar (<a>)

Ni har säkert besökt webbsidor där de haft ikoner/bilder som varit klickbara, detta kan göras genom att ersätta länktexten med en <img> tagg med bilden man önskar vara klickbar!

Det är egentligen väldigt enkelt. Enda anledningen att kanske överväga kompletterande text eller andra alternativ än bilder som länkar, är då bilders information inte är så lättupptaglig av sökmotorindexerings robotarna (se följande inlägg). Se nedan för hur en sådan bild-länk annars kan göras i HTML:

<a href="#" target="_blank"><img src="bilder/bildfil.jpg" width="150" height="150" alt="alternativ texten här" /></a>

Vid klickning av ovan länk så är det <a> taggens href (hypertext reference) attribut som bestämmer vart länken ska leda som för alla andra länkar, <img> taggens src attribut är som vanligt till för att indikera källan till bilden som skall visas.

Figure behållare med Figcaption för bilder med undertexter

Figure och figcaption är en ny tagg som kom med HTML5 och är väldigt populär att använda som bildbehållare och utifall man vill ha bildtexter till sina bilder.

Jag har hittat en jättebra och fin webbartikel hos HTML5Doctor.com, där de i detalj går igenom hur man använder <figure> och <figcaption>. Det var den artikeln som lärde mig hur man gjorde. Se nedan lista med dels den artikeln, såväl som MDN referenssidor för <figure> och <figcaption>:

Som ni säkert redan listat ut så är <figure> själva behållaren för en/flera bilder, medan <figcaption> hamnar inuti behållaren och utgör bildtexten för den ene/flera bilder(na) som ligger i <figure> behållaren.

Varken <figure> eller <figcaption> har några attribut direkt att använda, styling sker via CSS.

Dock är inte <figure> och <figcaption> begränsat till enbart <img> taggar, utan kan även användas till andra taggar. Det är heller inte alltid <figure> och <figcaption> är lämpligt att använda. För mer info om båda dessa påståendena se nedan citat från HTML5Doctor’s webbartikel om <figure> och <figcaption>:

No need to constrain your <figure>s to images and code examples. Other content suitable for use in <figure> includes audio, video, charts (perhaps using <canvas> or <svg>), poems, or tables of statistics.

It may not always be appropriate to use the <figure> element, though. For example, a graphic banner should not be marked up with<figure>. Instead, simply use the <img> element.

<figure> med 1 bild och utan <figcaption>

<figure>
   <img src="bilder/bildfil.jpg" width="150" height="150" alt="alternativ text för bild här" />
</figure>

<figure> med 1 bild och <figcaption>

<figure>
   <img src="bilder/bildfil.jpg" width="150" height="150" alt="alternativ text för bild här" />
   <figcaption>Här placeras sen bildtexten för bilden</figcaption>
</figure>

<figure> med flera bilder och <figcaption>

<figure>
   <img src="bild1.jpg" width="150" height="150" alt="alttext" />
   <img src="bild2.jpg" width="150" height="150" alt="alttext2" />
   <img src="bild3.jpg" width="150" height="150" alt="alttext3" />
   <figcaption>Bildtext för ovan 3 st. bilder placeras här</figcaption>
</figure>

Alla ovan exempel kan se förhandsgranskade i webbläsaren här

Praktiskt exempel och demo av figure och figcaption i HTML.

Praktiskt exempel och demo av figure och figcaption i HTML.

iFrames element är en inbäddnings-bar ram som har möjlighet att ladda in andra webbsidor och innehåll till en annan webbsidas <body> tagg. Jag har endast använt iFrames själv i allra första början av min karriär som webbdesigner/webbutvecklare, och då använde jag den till att bl. a. ladda in aftonbladets webbplats på min egen webbsida inuti en ram för mina besökare att läsa. ”i”:et i ”iFrame” står för inline vilket indikerar att elementet är en ram man kan lägga inline på sin sida bland annat innehåll.

iFrames kan alltså användas för att t ex. ladda in externa resurser, webbradios, eller annat. Dock(!), var vaksamma på att där brukar finnas bättre alternativ att använda än iFrames! De är i regel ganska klumpiga att jobba med.

För MDN’s referenssida för iFrame, se: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe.

Nedan ser ni ett utdrag från MDN’s referenssida som förklarar iFrames syfte och funktion lite i allmänhet:

The HTML Inline Frame Element (<iframe>) represents a nested browsing context, effectively embedding another HTML page into the current page.

3 attribut för iFrame att ha koll på – width, height, src

Efter att noga kollat igenom MDN’s referenssida själv har jag dragit slutsatsen att det egentligen bara finns 3 attribut för både HTML 4.01 såväl som HTML5, värda att ha koll på- sen finns där något som endast är för HTML5, som jag kommer nämna mer om senare som också kan vara användbara att känna till, men för nu så håller vi oss till dessa 3 attributen.

width och height attributet som ni säkert redan har gissat låter er ange en bredd för er iFrame på webbsidan. Attributvärdet för width såväl som height anges i pixlar.

src attributet är där ni anger vilken adress/resurs som skall bäddas/laddas in till iFramen på webbsidan. Värdet som anges till src attributet skall vara en URL. Detta innebär också att både globala såväl som lokala länkadresser är giltiga.

Ett HTML5 attribut för iFrame som fångar intresse – seamless

seamless attributet anpassar iFramen att matcha webbsidan den bäddades in i, genom att göra att länkar från iFramen öppnas i inbäddnings webbsidan istället för själva iFramen, gör att CSS-stilar för inbäddnings webbsidan har prioritet över iFramens egna CSS-stilar.

Syftet med attributet är helt enkelt att få iFramen att se ut på bästa sätt möjligt som om den är del av ursprungs webbsidan(!).

Exempel på hur seamless kan anges för iFrame taggen, se nedan:

<iframe width="500" height="350" src="https://www.aftonbladet.se" seamless></iframe> <!-- HTML5-->
<iframe width="500" height="350" src="https://www.aftonbladet.se" seamless="seamless"></iframe> <!-- XHTML -->

iFrame attribut för att referera till iFramen från CSS och annan kod

Självfallet kan ni fortfarande ange både klasser och ID för att kunna referera till iFramen från t ex. CSS eller annan kod.

Attribut som användes i HTML 4.01, men som inte(!) valideras av HTML5

Förr fanns attribut som frameborder och scrolling (HTML 4.01), som jag minns att jag själv använde för mina första webbsidor – dessa kunde då låta en ange om iFramen skulle ha en ram/kantlinje runt sig eller inte, samt vare sig iFramen skulle scrollas eller inte. Men de verkar inte längre vara aktuella (åtminstone inte om du kodar HTML5). Se nedan bild för bevis:

frameborder och scrolling attribut = no-go enligt HTML5 validering.

frameborder och scrolling attribut = no-go enligt HTML5 validering.

 

Praktiskt exempel iFrame – kod + resultat i webbläsare

<iframe width="500" height="350" src="https://www.aftonbladet.se">
   <p>Text here is for browser that does NOT support iFrames...</p>
</iframe>
Exempel på iFrame som laddar in aftonbladet.se på 500x350 yta på webbsida.

Exempel på iFrame som laddar in aftonbladet.se på 500×350 yta på webbsida.

När ska man använda iFrames idag?

Såhär på rak arm hade jag kunnat säga att jag förmodligen hade använt iFrames för att öppna och förhandsgranska PDF:er t ex. på en webbsida – användandet av iFrame brukar låta Adobes plugin förhandsgranska PDF:en direkt på sidan utan att besökaren behöver ”ladda ned och öppna” filen (även om detta görs fast av plugin i webbläsaren istället).

Och allmänt om jag hade velat ladda in externa resurser från andra domäner till min sida, tror jag iFrames hade varit bästa alternativet.

För ett kanske bättre och mer utförligt svar på StackOverflow.com, se: http://stackoverflow.com/questions/3797179/why-do-people-still-use-iframes#3797217.

Där finns två typer av listor jag tycker man bör lära känna för HTML-kodning, det är sorterade listor, samt o-sorterade listor.

När vi pratar listor överhuvudtaget i HTML, så finns det inte längre direkt några aktuella HTML attribut som används – förutom då klass och ID för att kunna hänvisa till listorna från CSS stilmalls koden senare, då det är i denna sen alla stilarna läggs på.

Både sorterade såväl som o-sorterade listor har en typ av wrapper som skiljer sig beroende på vilken typ av lista som skall användas, men inuti wrappern sen för att skapa sina s.k. ”list-element” som då motsvarar varje individuella rad i listorna, så kodas dessa med samma typ av tagg, oavsett om det är en sorterad, eller o-sorterad lista vi har att göra med.

Allmän användning av listor i HTML för webbsidor

Listor är utmärkta att använda oavsett det gäller horisontell, såväl som vertikal typ av listformatering av innehåll. Föreställ er t ex. listande av kontaktinformation – här kan listor, såväl som HTML tabeller vara väldigt bra för att formatera innehållet på ett snyggt och proffsigt sätt.

Om ni har varit och besökt denna sidans Länkar-sida så är det o-sorterade listor jag använt mig utav där för det mesta. Jag har även nästlat dessa så att där kan finnas en hierarkisk ordning om man vill försöka skapa något i den stilen :)

När jag tänker efter använder jag faktiskt listor väldigt ofta för mina webbsidor, det är ett enkelt, praktiskt och väldigt användbart verktyg för att presentera och formatera innehåll och information på sina webbsidor!

Menyval på webbsidor brukar vara väldigt populärt att formatera med hjälp av listor, detta då menyvalen oftast ska hänga ihop till en specifik meny för sidan, och listor låter denna meny kunna då enkelt formateras till antingen horisontell, eller vertikal, vilket man än anser passa bäst för sin egen sida.

Jag själv har använt listor på webbsidor till bl. a. följande scenario: Menyval, Länklistor, ankarlänkar för sid-innehåll, Prioriteringslistor av ”to-do’s” eller liknande, m.m.

Jag klistrar här nedan in ett citat från MDN’s referenssidor för listor som kommer länkas till senare, där de skriver om när vilken av listtyperna skall användas enligt HTML synpunkt.

Usage note: The <ol> and <ul> both represent a list of items. They differ in the way that, with the <ol>element, the order is meaningful. As a rule of thumb to determine which one to use, try changing the order of the list items; if the meaning is changed, the <ol> element should be used, else the <ul> is adequate.

Sorterade listor (<ol>)

Sorterade listor kan vara bra att använda om ni har något som skall listas i en specifik ordning och ni vill definiera att något kommer före något annat, eller att något har prioritet över annat etc.

Via CSS kommer ni senare dessutom kunna avgöra mer specifikt hur ni önskar den ”ordnade”/sorterade listan att vara presenterad – om den skall lista raderna med vanliga siffror, romerska siffror, bokstäver, eller annat. Se nedan för praktiskt exempel av hur en sorterad lista kodas i HTML:

<ol> <- ol står för "ordered list" vilket på svenska är sorterad lista
   <li>First element</li>
   <li>Second element</li>
   <li>Third element</li>
</ol>

Om vi nu hade skrivit in det här för en webbsida hade vi fått följande resultat:

HTML OL-list test - hur det ser ut i webbläsaren förhandsgranskat.

HTML <ol>-list test – hur det ser ut i webbläsaren förhandsgranskat.

Se ovan citat för HTML synpunkt för när och hur <ol> skall användas.

För referenssida se följande MDN länk för <ol> listor.

O-sorterade listor (<ul>)

O-sorterade listor är nog den typen av lista jag använder oftast då sakerna jag brukar lista inte har betydelse i vilken ordning de är placerade. Se nedan hur dessa kodas i HTML:

<ul> <- ul står för "un-ordered list" vilket på svenska är o-sorterad lista
   <li>First element</li>
   <li>Second element</li>
   <li>Third element</li>
</ul>

Detta ser ut som ni kan se här nedan vid förhandsgranskning i webbläsare:

HTML UL-list test - hur det ser ut i webbläsaren förhandsgranskat.

HTML <ul>-list test – hur det ser ut i webbläsaren förhandsgranskat.

Själv brukar jag använda o-sorterade listor mycket för bl. a. menyval då jag inte brukar ha någon direkt prioritet för ett menyval över ett annat :)

För referenssida se följande MDN länk för <ul> listor.

De generella list-elementen oavsett listtyp (<li>)

List-element är de element som utgör själva raderna för listorna oavsett listtyp- vare sig det är sorterad, eller o-sorterad.

Förkortningen ”li” för taggen, står för ”list-item-element”.

<li> taggen har ett attribut: value, som kan användas för att indikera ett heltals värde för utefter vilket efterföljande list element skall rätta sig efter. value attributet kan alltså ändra ordningen och hoppa över värden i en sorterad lista t ex. genom att ange ett högre heltals värde innan det var tänkt att komma i den annars standard ordningen för den sorterade listan. Se nedan exempel inspirerat från MDN’s referenssida för <li> elementet:

<ol>
    <- Notera avsaknaden av "second item" samt "first item"
    <li value="3">third item</li>
    <li>fourth item</li>
    <li>fifth item</li>
</ol>

Och förhandsgranskat i webbläsaren hade vi utav detta fått:

Test av HTML list elements value attribut

Test av HTML list elements value attribut.

Nästlade listor för hierarkiska nivåer med listor

Nästlande av listor kan exempelvis vara när man har en vertikal meny (eller horisontell för den delen, fast i det här fallet ger vertikal ett enklare exempel att visa effekten nästlande av listor ger) som består av ”huvud-menyval” och tillhörande ”under-menyval”.

Ex:

<ul> <!-- Huvud meny -->
   <li>Huvud menyval #1
      <ul> <!-- Under meny inuti huvud menyval #1 (notera ingen </li> tagg för ovan huvud menyval #1) -->
         <li>Huvud menyval #1: Under menyval #1</li>
         <li>Huvud menyval #1: Under menyval #2</li>
         <li>Huvud menyval #1: Under menyval #3</li>
      </ul>
   </li> <!-- Slut av huvud menyval #1-->
   <li>Huvud menyval #2</li>
   <li>Huvud menyval #3</li>
   <li>Huvud menyval #4</li>
</ul>

Med hjälp av lite CSS kan man senare göra om standard-stilarna för hur sådana nästlade listor blir presenterade av webbläsaren – till en väldigt snitsig Drop-down meny :) (Kommer gås igenom i framtida inlägg hur detta kan göras)

I alla scenario där ni är i behov av en lista med flera hierarkiska nivåer så är det nästlade listor ni är ute efter! :)

Se nedan exempel på ovan kods förhandsgranskning i Google Chrome:

Förhandsgransknings exempel av nästlade listor.

Förhandsgransknings exempel av nästlade listor.

Tjenare, tänkte nu skriva ett väl genomgående inlägg som på ett översiktligt och informativt sätt går igenom HTML specialtecken som är populära att använda sig utav i HTML-kodning.

Varför specialtecken via HTML?

Varför ska man då kunna detta/varför kan det vara bra att känna till detta? Jo, specialtecken kan användas till mycket, t ex. att komplettera vid tillfällen då tangentbordets utbud av tecken inte längre räcker till för att presentera det du önskar, eller för att snitsa till dina listor med snyggare ikoner, eller allmänt bara strukturera dina texter på ett snyggare och mer utökat sätt.

Specialtecken kan vara bra till många saker, t ex. för oss svenskar så kan det ibland behövas att man för hand kodar in tecken som vissa teckenkodningar annars har svårt att tolka- som exempelvis våra svenska tecken: å, ä och ö. Där finns även tillfällen då man kommer behöva ”hårdkoda” in specialtecken som ampersand tecknet (&), eller man kanske vill ha fler mellanrum av någon anledning utöver vad webbläsaren tolkar från koden – då kan man t ex. hårdkoda in mellanrum som specialtecken för att webbläsaren verkligen ska tolka utöver vad den annars hade gjort.

Där finns som sagt många scenario då detta är användbart, men det är även kul att känna till och det låter en göra så mycket mer med ens webbsidor och sättet man formaterar texter och innehåll på!

I det här inlägget tänkte jag gå igenom samtliga tecken som jag själv finner användbara att ha översiktlig koll på.

Hur HTML specialtecken kodas

Där finns väldigt många specialtecken som kan kodas i HTML, och man kan koda de på olika sätt också, antingen med sifferkoder, eller med bokstavskoder.

De tecknen jag själv anser kan vara intressanta och användbara att känna till

De svenska tecknen å, ä, ö

å = &aring;
Å = &Aring; <- notera stor första bokstav på Aring

ä = &auml;
Ä = &Auml; <- notera hur samma mönster gäller som för Stora Å

ö = &ouml;
Ö = &Ouml;

Horisontella/Vertikala streck – användbara som avskiljare och liknande

– : &ndash; (n:et står för EN så kanske är fast storlek på strecket alltid, ej säker dock)
— : &mdash; (lite längre än ndash, m:et står för EM så kan ha med font-size att göra hur stor detta strecket blir, ej helt säker)
― : &horbar; (horisontal bar)
∣ : &mid; (Vertikal avskiljare)
‖ : &Verbar; (Vertikalt dubbelstreck)

Typografiska specialtecken – ”hårdkodat mellanrum”, citationstecken, № (numero) tecken och ampersand (&) tecken

  - &nbsp; <- No-break space - användbart om man vill ha flera på varandra efterföljande mellanrum på en webbsida, måste "hårdkodas"
« - &laquo; <- förkortning står för "left pointing double angle quotation mark"
» - &raquo; <- förkortning samma som ovan fast omvänt
‹ - &lsaquo; <- förkortning står för "left pointing single angle quotation mark"
› - &rsaquo; <- förkortning samma som ovan fast omvänt
“ - &ldquo; <- "left double quotation mark"
” - &rdquo; <- samma som ovan fast omvänt
№ - &numero; <- nummer på italienska
& - &amp; <- förkortning står för "ampersand"

Valuta tecken för Euro (€), Yen (¥), Pund (£) och Cent (¢)

€ - &euro; <- väldigt simpelt kodade förkortningar, lätta att komma ihåg
¥ - &yen;
£ - &pound;
¢ - &cent;

Pilar (arrows) och indikator tecken (med och utan svans)

Singulära pilar:
← - &larr; <- leftwards single arrow
↑ - &uarr; <- upwards single arrow
→ - &rarr; <- right single arrow
↓ - &darr; <- downwards single arrow
↔ - &harr; <- horisontal single arrow (both right & left)
↕ - &varr; <- vertical single arrow - (both up down)
Pilar med "svans":
↢ - &larrtl; <- left single arrow with tail
↣ - &rarrtl; <- right single arrow with tail
⥈ - &harrcir; <- horisontal arrows through circle (looks badass ;) )

Punktlists tecken – Punkt, Cirkel, Diamant (svart/vit), Stjärna (svart/vit), Kvadrat och Trianglar

• - &bull; <- antar detta står som förkortning för "bulletpoint" vilket praktiskt taget betyder "punkt" på svenska
○ - &cir; <- vit cirkel
◯ - &bigcirc; <- stor vit cirkel
♦ - &diams; <- svart diamant
⋄ - &diam; // &diamond; <- vit diamant
⋆ - &sstarf; // &Star; <- stjärna
★ - &starf; <- svart stjärna (förkortning = star + filled (f:et står alltså för ifylld med färg))
☆ - &star; <- vit stjärna (förkortning = star Utan filled)
◼ - &FilledSmallSquare; <- Svart kvadrat
▸ - &rtrif; <- Höger-pekande svart triangel
▹ - &rtri; <- Höger-pekande vit triangel (ej ifylld)

Lagliga tecken – Copyright (©), Registered (®) samt TradeMark (™)

© - &copy; <- för copyright
® - &reg; <- för registered
™ - &trade; <- för trademark

Matematiska tecken

Jämförelse operatorer: Större än och mindre än tecken (även HTML-tagg tecknen)

< - &lt; <- förkortningen står för "lesser than" som på svenska blir "mindre än"
> - &gt; <- förkortningen står för "greater than" som på svenska blir "större än"

Större än eller lika med respektive mindre än eller lika med tecknen

≤ - &le; <- förkortningen står för "less than or equal to", som på svenska motsvarar "mindre än eller lika med"  
≥ - &ge; <- förkortningen står för "greater than or equal to", som på svenska motsvarar "större än eller lika med"

Matematiska Plus/Minus tecknet (kan användas vid PQ formeln t ex.) – har 3 sätt att kodas på

± - &plusmn; // &pm; // &PlusMinus; <- alla koder ger exakt samma tecken, testa själva vetja ;)

Grader som t ex. 30° – kan vara användbart att veta hur man kodar detta

° - &deg; <- förkortningen står för engelskans "degree", vilket på svenska betyder "grader"

Allmänna matematiska tecken som ”Infinity” (∞) för oändlighet, och ”Nästan lika med” (≈) för ungefärliga värden

∞ - &infin; <- förkortning står uppenbarligen för "infinity" som engelska ord för oändlighet 
≈ - &asymp;

Matematiska ”omfamnings-tecken” / Brackets

〈 - &lang; <- förkortningen står för "mathematical left angle bracket", som på svenska motsvarar "matematisk vänstervinklad parentes"
〉 - &rang; <- förkortningen här står för samma som ovan, fast right angle bracket

Matematiska enheter – promille (‰) och mikro (µ)

‰ - &permil; <- förkortning står för "per mille" gissar jag, där "mille" betyder tusen på franska, och promille är ju tusendelar så "per tusen" på svenska
µ - &micro;

Matematiska PI – Stora PI (Π) & lilla PI (π)

Π - &Pi; <- notera stora första bokstaven, precis som för de svenska tecknen
π - &pi; <- precis som svenska tecknen för liten bokstav

Matematiska ekvationstecken – Multiplikations ”x”

× - &times; <- "times" på engelska är samma som "gånger med"

Övriga tecken och ikoner som kan skapas med HTML specialtecken (sikte, telefon, man/kvinna, hjärta, bock, kryss, not)

⌖ - &target; <- sikte
☎ - &phone; <- telefon ikon
♀ - &female; <- kvinno könstecknet
♂ - &male; <- manliga könstecknet
♥ - &hearts; <- hjärta
♪ - &sung; <- sångnot
✓ - &check; <- checkmark (bock)
✗ - &cross; <- cross mark (kryss)

Ytterligare tecken som kan skapas via HTML-kod

Man kan även koda Grekiska alfabetet (som t ex. används ofta vid matematiska samband – alfa, beta, gamma, delta, etc.), såväl som t ex. Danska bokstäver som: ø, æ.

Där finns även specialtecken för att representera upphöjt-med och nedsänkt-med, men ni bör i det fallet hellre överväga det semantiska alternativet då HTML5 har taggar för att upphöja/nedsänka tecken, vilket kanske är att föredra över icke-semantiska specialtecken.

Slutkläm

Anledningen att jag på många ställen förklarade vad kodnings förkortningarna stod för och representerade – var då jag själv personligen har lättare för att komma ihåg kodnings förkortningarna om jag vet vad de står för i kombination med kunskapen att veta vad respektive kodnings förkortning ger för resultat i praktiken.

Valde att gå igenom samtliga användbara tecken som jag kunde komma på och som även kan hittas på W3C’s referenssida länkad först i nedan stycke.

Bra referenssidor där ni själva kan se över det tillgängliga utbudet av specialtecken för HTML

Några bra referenssidor för att se diverse tecken man kan koda in och vilka koder som ger vilka tecken kan hittas på följande sidor:

http://dev.w3.org/html5/html-author/charref

http://www.degraeve.com/reference/specialcharacters.php