bit förklarad för lagring av information

En bit är den minsta beståndsdelen för lagring av data/information på digitala medier (notera litet ”b”).

Ordet bit kommer från ”binary digit”, där ett binärt värde kan ha antingen ett värde på 1 eller 0 (av eller på/aktiverad eller inaktiverad).

En bit rymmer alltså 2 möjliga värden. Där en bit kan antingen vara satt till ena värdet eller det andra. 2 Möjliga kombinationer där varje kombination håller 1 enstaka värde.

Bitar är baserade på det binära talsystemet där basen är 2 vilket förklarar möjligheten till att lagra 2 kombinationer av värden där varje bit kan lagra 1 av 2 möjliga värden.

Byte förklarad för lagring av information

En Byte (notera stort ”B”) däremot är en större enhet som består av flera bitar, närmare bestämt 8 stycken bitar utgör 1 Byte.

Jämförelse av lagringskapacitet mellan bit och Byte

Om vi kollar på lagringskapaciteten för information i bitar jämfört med Byte enligt vårt decimala talsystem så kan vi se att en bit har möjligheten att lagra 2^1 = 2 möjliga värden.

Och dessa möjliga värden kan vara antingen 0 eller 1, av anledning som vi nämnde ovan att en bit kan sättas som aktiv, eller inaktiv och eftersom varje bit utgår från basen 2 där första biten är upphöjd med 0 får vi:

2^0 = 1, så om biten är satt till värdet 0 (inaktiv) så får vi 0*2^1 = 0, medan om biten är satt till 1 (aktiv) får vi värdet 1*2^0 = 1 :)

Medan om vi kollar på en Byte som består av 8 bitar har möjligheten att lagra 2^8 = 256 möjliga värden.

Tänk er följande kedja av bitar: 0 0 0 0   0 0 0 0, här har vi 8 st. bitar som utgör 1 hel Byte. Just nu har vi satt samtliga av dessa bitar som inaktiva, vilket innebär att värdet för den här Byten är just 0. Men om vi aktiverar några så kan vi se värdet förändras likt nedan:

0          0         0         1             1         0          1       0
2^7    2^6     2^5      2^4         2^3     2^2     2^1    2^0

Där våra bitar från höger -> vänster får värdena:

  1. 0 * 2^0 = 0
  2. 1 * 2^1 = 2
  3. 0 * 2^2 = 0
  4. 1 * 2^3 = 8
  5. 1 * 2^4 = 16
  6. 0 * 2^5 = 0
  7. 0 * 2^6 = 0
  8. 0 * 2^7 = 0
  9. Bitsumma: 0 + 2 + 0 + 8 + 16 + 0 + 0 + 0 = 26 (i decimalt talsystem (10-bas som vi är vana vid))

Så vår Byte med bitvärde 00011010 innehåller alltså det decimala värdet 26 :)

I nedan innehållsförteckning kan ni se vad jag tänker gå igenom och ta upp i detta inlägg.

  1. Introduktion – Vad är Responsiv Webbdesign?
  2. Tillvägagångssätt – Mobile-First vs. Mobile-Last
  3. Tekniker och kodningsmetoder – ”Enhetsspecifikt” vs. ”Breaking-points” (för & nackdelar)
    1. Breaking-points kodningsmetoden
      1. Att tänka på
      2. Nackdelar?
      3. Fördelar jämfört med Enhetsspecifika kodningsmetoden
      4. Hur kodningsmässigt?
    2. Enhetsspecifika kodningsmetoden
      1. Nackdelar?
      2. Fördelar?
      3. Hur kodningsmässigt?
    3. Verklighetsbaserat exempel
  4. Responsiv webbdesign’s utvecklings- och testmiljö i Firebug & Google Developer Tools
    1. Cloudbased Browser & Device- compatibility testing online
  5. CSS Media Queries & Responsiv webbdesigns-specifik kod
    1. Nödvändig Meta-kod för Responsiv Webbdesign
    2. CSS Media Query basics (grunder)
    3. Adaptiva och anpassningsbara måttenheter för responsiv typografi m.m.
    4. Manipulation av HTML dynamik via CSS (t ex. display: hidden vs. none)
    5. Adaptiva och responsiva bilder – på två sätt (utan JavaScript)
    6. Touch-baserade features för responsiva webbsidor
      1. Brist på indikations effekter jämfört med datorer (t ex. hover-effekt för länkar)
      2. Fingrar istället för datormöss och precisionsverktyg för klickande och val
      3. Handpositionering för smartphones och surfplattor
  6. Exempel Responsiv Webbdesigns kod- och Effekt i praktiken

Introduktion – Vad är Responsiv Webbdesign?

Responsiv webbdesign är ett populärt koncept för hur man kan bygga webbsidor idag. Detta då Responsiv webbdesign går ut på att anpassa en webbsida utefter vilka enheter som folk kan tänkas använda för att besöka webbsidan via. Om det så är Dator, Surfplatta eller Smartphone.

Med hjälp av Responsiv Webbdesign får man som utvecklare kontroll för att kunna anpassa en webbsida inför samtliga visningsscenarion som kan existera.

Tillvägagångssätt – Mobile-First vs. Mobile-Last

Inom Responsiv webbdesign finns där två olika ”kända” sätt för hur man kan gå tillväga för att bygga sina webbsidor som jag stött på.

Det ena är med den s.k. ”Mobile-First-approachen”, vilken brukar anses vara den bästa då detta tillvägagångssätt är ämnat för att inte bara optimera utseendet för webbsidor- utan även optimera dess laddningstid och prestanda.

Mobile-First möjliggör detta genom att man börjar med att designa hur webbsidan ska se ut för mobila enheter i t ex. porträttläge (för minsta viewport-bredden).

På detta vis får bara det allra väsentligaste plats på webbsidan, och allt annat som egentligen är ”överflödigt” för att förmedla webbsidans verkliga syfte hoppas över för att bespara kod, layout och flashiga funktioner, vilket då kan leda till optimerad laddningstid- vilket är desto bättre för mobila enheter då dessa kanske har sämre bandbredd jämfört med vad en dator med bredband hade haft. Och därefter är det sen då tänkt att webbsidan ”växer” efterhand som högre upplösningar besöker sidan.

Medan ”Mobile-Last-appraochen” gör motsatsen: då man börjar med att designa sidan för hur den hade sett ut i största möjliga ”viewport bredden” som man siktar in sig på att visa sidan för. Och därefter sen skalar ned sidan allteftersom ”viewport bredden” minskar- och anpassar layouten för de nya upplösningarna.

Mobile-Last kan därför även medföra sämre laddningshastigheter då det kan vara svårare att ”göra av med” saker från de större layouterna när man börjar närma sig de mindre- jämfört med att redan i början för Mobile-First haft begränsat sitt urval av sådana prestanda krävande delar då det första man designar för är just Mobila enheterna med sämre bandbredd.

Så Mobile-First vs. Mobile-Last är i grund och botten tankesätt som man utgår- och planerar från när man väljer att bygga sin Responsiva webbsida.

Mobile-Last kan även kännas lite ”enklare” i vissa fall när man är nybörjare och först börjar med Responsiv webbdesign- då detta är närmast hur man annars brukar bygga ”vanliga” webbsidor och designa deras layouter.

I denna guiden kommer jag demonstrera Mobile-Last-approach då detta är sättet jag själv personligen är mest bekväm med och skapat några responsiva sidor via tidigare. Men prova gärna på att Googla tips om hur man skapar Responsiva Webbsidor via Mobile-First och försök att lära er detta då det finns många fördelar med denna metod :)

Tekniker och kodningsmetoder – ”Enhetsspecifikt” vs. ”Breaking-points” (för & nackdelar)

När vi ska börja närma oss själva koden för Responsiva webbsidor så finns där olika metoder för hur man kan koda. Två metoder jag själv stött på är ”Enhetsspecifika kodningsmetoden” och ”Breaking-points kodningsmetoden”.

Det finns för- och nackdelar med båda metoderna, men den bästa av de båda enligt mig är Breaking-points kodningsmetoden. Vad är det då jag pratar om kanske ni undrar? Jo, dessa två olika metoder är vad vi kommer följa när det gäller på vilket sätt vi skalar om vår responsiva webbsida.

Breaking-points kodningsmetoden

Att tänka på

När det gäller breaking-points kodningsmetoden (hädanefter kan jag komma att kalla denne för BPK-metoden) så är det bättre om man kan göra den responsiva webbsidan stabil nog att endast behöva stora ändringar i layouten vid ett fåtal tillfällen typ en stor layout-förändring för surfplattor i porträttläge, en stor ändring för surfplattor i landskapsläge, en för smartphones i porträttläge samt landskapsläge. Varför det då? Jo, för att desto färre tillfällen som korrigeringar behöver göras- desto mindre Media Query regler behövs – desto snabbare laddningstid, samt desto ”smidigare” kommer webbsidan verka för dina besökare! Detta är dock inte alltid helt lätt att lyckas med, personligen anser jag det lite av en konst att lyckas med detta då jag själv upplevt hur tidskrävande/svårt detta ibland kan verka.

Nackdelar?

Det är tyvärr väldigt lätt i responsiv webbdesign att utgå från en ”inte så bra/genomtänkt” grund för webbsidan (speciellt som nybörjare). Detta kan då i BPK-metoden senare leda till att man blir tvungen att skapa massor med CSS Media Query regler tätt inpå närliggande upplösningar- när man egentligen vill försöka hålla sig till så få regler som möjligt för endast de större ändringstillfällena (surfplatta porträtt, surfplatta landskap, smartphone porträtt, smartphone landskap, etc.). Som nämndes i ovan område ”Att tänka på”.

Fördelar jämfört med Enhetsspecifika kodningsmetoden

Med BSK-metoden kommer vi alltid kunna behålla våra CSS Media Query koder oavsett vilka enheter som besöker vår responsiva webbsida då våra ändringar inte var baserade utefter specifika enheter- utan faktiska bristningspunkter i vår utgångslayout.

Hur kodningsmässigt?

För denne guides skull kommer jag bara att gå igenom hur man går tillväga när vi följer BPK-metoden. Denne går ut på att skala ned/upp (beroende på tillvägagångssätt) vår sida och identifiera när sidan ”går sönder”- med vilket jag menar när den börjar se annorlunda ut från hur vi vill att sidan skall visas. Och sedan då korrigera denna bristning så sidan ser bra ut igen för den nya upplösningen!

Så när detta inträffar identifierar vi de specifika måtten för när ”brytningen” skedde, och registrerar dessa i vår CSS Media Query kod som en regel för när ändringar i webbsidans layout skall ske- och inuti denna regel specificerar vi exakt vilka typer av ändringar som behöver genomföras/göras.

När vi använder oss av BPK-metoden så finns där en överhängande fråga om ”hur långt ska vi skala ned/upp sidan?”. För att besvara denna frågan så kan ni tänka er olika enheter ni vill nå ut till med er webbsida och tänka er vilka upplösningar dessa har- och sedan ha detta som ”max-upplösnings-gräns” och ”min-upplösnings-gräns”, eller så kan ni skala ned/upp sidan tills ni tror det inte är så stor mängd individer som kommer att kolla på sidan vid den upplösningen ni skalat om till (finns massor med statistik för detta (hur många som använder vilken typ av upplösning/enhet etc.) som enkelt brukar kunna hittas via Google eller andra sökmotorer på nätet).

Enhetsspecifika kodningsmetoden

Den Enhetsspecifika kodningsmetoden (hädanefter kan denne komma att hänvisas till som ESK-metoden) går ut på att man specificerar måtten för de specifika enheterna som finns idag som man vill sikta in- och optimera sin webbsidas layout för.

Nackdelar?

Uppenbara nackdelar med detta är bland annat att enheterna vi har tillgängliga att besöka internet och webbsidor via idag – ständigt förändras. Om vi då specificerar måtten för några specifika enheter som används idag, så lägger vi mycket tid på arbete som kan vara värdelöst om några månader, eller veckor om man verkligen har otur.

Fördelar?

En fördel med detta sätt är dock för t ex. Testningssyfte eller om ni har specifika besökare där ni vet vad de kommer att besöka er webbsida med – t ex. Alltid från en specifik iPhone modell, eller iPad osv. (hur ofta detta nu än må hända) Då kan det kanske spara tid att använda denne metod- eller även för att begränsa Media Query CSS koden som gör sidan responsiv- då denna kan göra att sidan blir aningen segare att ladda vid ”om-skalningen”.

Hur kodningsmässigt?

För vår Enhetsspecifika kodningsmetod så hade vår CSS Media Query kod haft en regel för en specifik enhets mått istället där sen då seriösa ändringar skulle ta plats för sidan.

Verklighetsbaserat exempel

Vid ett tillfälle valde jag för en av mina responsiva webbsidor att ha en maxgräns för 960px bredd, och mingräns för ca. 325px då det inte är många smartphones och mobiltelefoner som har den upplösningen i porträttläge idag (kollade upp detta med hjälp av statistik för vilka enheter och upplösningar folk använde vid det tillfället, som fanns insamlat och publicerat på nätet).

Responsiv webbdesign’s utvecklings- och testmiljö i Firebug & Google Developer Tools

När vi håller på att bygga vår responsiva webbsida så är det bra om vi har en ”testmiljö” där man enkelt kan skala upp och ned en webbsida och även identifiera när brytningar sker osv. Detta kan man enkelt och behändigt göra med hjälp av två av de populäraste webbläsarnas inbyggda webbutvecklings verktyg- Firefox Firebug, och Google Developer Tools för Google Chrome.

För att komma åt dessa lägen gör ni följande i Google Chrome: högerklicka på webbsidan ni önskar förhandsgranska med det responsiva designläget och välj ”inspektera” (chrome – [CTRL + SHIFT + I]). Därefter klickar ni på ikonen ni kan se nedan:

Toggle Device Mode aka Responsive testing environment

Som då kommer att öppna det Responsiva testläget för Google chrome som då ser ut såhär:

rwd mode gchrome

  1. Som ni då kan se i ovan bild så är det första inringade fältet i rött, möjligheten att välja specifika enheter vars upplösningar och skärmstorlekar då kommer läggas in för testning.
  2. Det andra rödmarkerade området är möjligheten att själva specificera specifika upplösningar att testa webbsidan i.
  3. Det tredje rödmarkerade området är en påminnelse om att sidan kan behöva uppdateras innan det responsiva testläget i Google Chrome fungerar optimalt.

Utöver ovan specificerade möjligheter och alternativ, så kan ni även se linjer som finns definierade både för höjd och bredd- personligen tycker jag detta är ett lite ”otydligt” sätt att visa vilken upplösning man skalat om webbsidan till, men det är i alla fall hur chrome gör saker och ting. För att förbättra detta kan man däremot ladda ned ett webbläsartillägg kallat ”Resize Window” för att (enligt mig) lättare kunna identifiera ”breaking-points” vid nedskalning av ens webbsida- dock funkar detta inte i chromes responsiva testläge, så detta behöver stängas först i sådana fall (vilket är lite trist).

Länk till var man kan ladda ned Resize Window webbläsartillägg för chrome, se nedan:
https://chrome.google.com/webstore/detail/window-resizer/kkelicaakdanhinjdeammmilcgefonfh

När vi pratar om Mozilla Firefox som webbläsare så har de sitt responsiva testläge placerat på annat ställe än tillsammans med inspektionsverktyget för webbsidor, istället hittar man deras responsiva testläge via webbläsarmenyn: Verktyg > Webbutvecklare > Responsiv designvy ([CTRL + SHIFT + M]). Se nedan:

firefox rwd mode

 

Personligen gillar jag Firefox Responsiva testläge så mycket bättre än Google Chrome’s, detta då man i Firefox responsiva testläge kan själv ”dra ut” en webbsida på bredden eller höjden som manuell omskalning på ett enklare sätt- däremot har Firefox responsiva testläge inte möjligheten som chrome’s testläge har att kunna välja specifika Enheter (såvitt jag kan se) att skala om sidan till att passa in för- om man skulle vara intresserad utav detta.

Cloudbased Browser & Device- compatibility testing online

Där finns även bra webbsidor för responsiva testanalyser av ens webbsida som kör en publicerad webbsida genom simulatorer för olika typer av enheter med deras specifika upplösningar och skärmstorlekar etc. Detta kallas även ibland för ”Live Cloudbased Browser Compatibility testing”.

Några sidor som erbjuder detta som ni kan testa och se vad ni tycker är som följer:

  1. https://www.browserstack.com/
  2. https://www.browserling.com/
  3. http://browsershots.org/

Där finns även en artikel om just sådan här typ av testning som kan vara av intresse att läsa igenom:
http://code.tutsplus.com/tutorials/browser-testing-in-the-cloud-redux–net-36521

Trots alla dessa sätt att testa sin responsiva webbsida finns där inget som slår den faktiska enheten man testar för tycker jag själv personligen. Exempel: testar ni er webbsida för iPad av någon speciell modell, så ta gärna och hitta någon som har en sådan iPad modell, och testa er webbsida hur den ser ut i denna modell så kan ni vara 100% säkra på hur den verkligen kommer se ut- för i vissa fall kan där finnas skillnader mellan simulerings- testsidorna och de verkliga enheterna.

Skillnader kan vara pixeldensitet eller finlir som bristande stödmjukvara för HTML5 Videotjänster och liknande. Ibland har inte dessa saker räknats med för de Cloudbaserade testing sidorna. Kan vara värt att ha i åtanke.

CSS Media Queries & Responsiv webbdesigns-specifik kod

Då har vi äntligen kommit till kodningsdelen för Responsiv webbdesign- och vi kommer att använda oss av en av de (enligt mig) bästa referenssidorna som stöd, nämligen Mozilla Developers Network Web Developers guide för CSS Media Queries:
https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries

I denna guide och på denna sida gås det igenom det mesta som har med Responsiv webbdesign att göra.

Nödvändig Meta-kod för Responsiv Webbdesign

För att indikera till mobila enheter att din webbsida är tänkt att vara responsiv och därför skalas om utefter CSS-koder så finns där en meta-tagg som informerar de mobila enheterna om detta. Den ser ut såhär:

<!-- Make browser understand this is responsive site and not in need of 'pinch-zoom-ins' -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />

Se till att inkludera denna någonstans i ert <head> område för webbsidan.

CSS Media Query basics (grunder)

Media Queries CSS-kod i grund och botten är ganska simpla.

Man definierar en regel, och fyller sedan regeln med data- lite som i programmering när man sätter en IF-sats och definierar vad som skall hända inuti den.

Ett kodblock för Responsiv webbdesign kan se ut som följer:

@media (max-width: 960px) {
    div#mainContainer {
        width: 100%;
    }     
    /* added different values to match new responsiveness */
    article#mainContent { width: 100%; }
}

Man inleder alltid ett Media Query statement med @media. Därefter följer själva regel-definitionen skulle man kunna säga- i ovan fall så säger vi ”genomför dessa ändringar (inuti regeln) när bredden för sidan är mindre än- och upp till och med 960px”.

max-width attributet för vår Media Query ovan definierar när bredden för sidan är ”mindre än och upp till och med”.

Som ni sen kan läsa på MDN’s referenssida för CSS Media Queries så kan man definiera dessa för porträtt och landskapsläge, såväl som olika typer av media- t ex. om sidan skall bara anpassas för skärmar, eller även när den skrivs ut osv.

Man kan placera sin CSS Media Query kod i stort sett vartsomhelst- inkludera en separat fil som håller all sådan kod- eller lägga den längst ned i sitt vanliga CSS fil.

Testa er fram och försök på egen hand- tror ni kan lista ut det mesta själva – annars får ni mer praktiskt exempel på responsiv sida längre ned i denna artikel.

Läs igenom MDN artikeln- ni behöver inte gå igenom allting om ni inte vill- men kan välja ut de delarna som ni tycker verkar intressanta för just vad ni hade tänkt göra :)

Adaptiva och anpassningsbara måttenheter för responsiv typografi m.m.

Inom responsiv webbdesign kan det vara ganska attraktivt att ha textstorlekar som anpassar sig utefter att den s.k. ”viewport bredden” skalas ned eller upp för en webbsida. Där finns specifika CSS måttenheter för detta kallade ”vh” och ”vw” för viewport-height, och viewport-width.

Dessa måttenheter låter dig på din responsiva webbsida specificera måttenheter procentuellt baserade på sidans ”viewport height” respektive ”viewport width”.

Nedan kan ni läsa på mer om hur dessa måttenheter stöds i diverse olika webbläsare:

  1. http://www.quirksmode.org/css/units-values/viewport.html
  2. http://caniuse.com/#feat=viewport-units

Och här får ni även länk till en väldigt bra artikel hos CSS-tricks.com som går igenom dessa måttenheter i detalj om det är något ni skulle vara intresserade utav att använda:
https://css-tricks.com/viewport-sized-typography/

Sen är det upp till er själva att experimentera med dessa :)

Manipulation av HTML dynamik via CSS (t ex. display: hidden vs. none)

När det gäller att ta bort element eller bara gömma element på sin webbsida och man gärna vill undvika JavaScript och hålla sig till CSS- så är attributet ”display” väldigt användbart.

Där finns två attributvärden som kan göra jobbet för en här:

  • none
  • hidden

display: none; kommer att fysiskt sett ”ta bort” ett element från webbsidan- och därmed ändra hela dynamiken av sidan, medan display: hidden; enbart kommer att ”gömma” elementet från besökares ögon- men fortfarande ha kvar elementet på sidan och därmed även bevara dynamiken för sidan.

Detta är användbara tips och tricks att tänka när det gäller layouten och hur den påverkas vid manipulation på sådant vis av HTML-innehållet via CSS.

Adaptiva och responsiva bilder – på två sätt (utan JavaScript)

När det gäller att anpassa sina bilder utefter upplösning på responsiva webbsidor så finns där säkert många sätt- varav några är JavaScript bibliotek som kan dynamiskt anpassa bilderna utan att man själv som utvecklare behöver bry sig speciellt mycket- dock är detta JavaScript och inte alltid så populärt + att det är lite mer krävande att ladda in än vad HTML och CSS är.

Via HTML och CSS kan man dock anpassa bilderna antingen genom att ange bredd och höjd med procentuella måttenheter (via CSS- då jag tvivlar på att detta funkar i HTML- men ni kan ju alltid testa bara för sakens skull), och sedan är det andra sättet att använda CSS Media Queries för att specificera att ”vid den specifika bredden/höjden skall bilden ändras si och så”.

Då kan ni även använda pixlar som måttenhet.

Touch-baserade features för responsiva webbsidor

Brist på indikations effekter jämfört med datorer (t ex. hover-effekt för länkar)

När man designar webbsidor för Touch-baserade enheter finns där några saker att tänka på. T ex. att touch-baserade enheter inte har den här s.k. ”link-hover” effekten som datorer med datormöss har som träder i kraft när man håller musen över en länk.

Man kan då istället använda sig av de äldsta tricken i boken när det gäller indikationer för klickbarhet så är de flesta vana vid att klickbara saker på webbsidor är understrukna då detta brukade vara en standard förr som många fortfarande håller fast vid.

Så understruken text kan kanske kompensera för bristen av ”hover-effekt” och liknande för länkar.

Fingrar istället för datormöss och precisionsverktyg för klickande och val

Touch-baserade enheter har heller inte lika lätt för att klicka på mindre ”klickområde” som en dator mus kanske inte har några problem att komma åt- då man använder fingrarna istället för ett precisionsverktyg att klicka med (undantaget de som klickar med touchpennor eventuellt).

Detta innebär att man måste tänka på sådana här saker när man designar sina layouter för touch enheter- desto större klickområde- desto bättre, och desto lättare för besökare att klicka på saker på ens webbsida.

Handpositionering för smartphones och surfplattor

Ytterligare en aspekt att tänka på (nu går vi in lite på ett område kallat Interaktionsdesign) är hur folk kan tänkas hålla t ex. mobiltelefoner av olika storlekar, eller surfplattor när de är ute på internet. Detta kan ha stor effekt på hur ni bör designa responsiva webbsidor när ni börjar närma er upplösningar motsvarande de av surfplattor och smartphones.

Exempel Responsiv Webbdesigns kod- och Effekt i praktiken

div.box {background-color: #ccc; width: 800px; border: 1px solid #000; padding: 6px 12px; box-sizing: border-box;}
div.box p {font-size: 36px; color: #00f; line-height: 1.5em;}

@media (max-width: 800px) {
    div.box {
         background-color: #0f0;
          width: 600px;
    }
    div.box p {
         font-size: 28px;
          color: #000;
    }
}

@media (max-width: 600px) {
    div.box {
          background-color: #00f;
          width: 400px;
    }
    div.box p {
         font-size: 18px;
          color: #fff;
    }
}

@media (max-width: 400px) {
    div.box {
         background-color: #000;
          width: 200px;
    }
    div.box p {
         font-size: 14px;
          color: #0f0;
    }
}

test1

test2

test3

Vid frågor om hjälp eller bara allmänt- se e-post på kontaktsidan.

Step 1: Suggested File & Folder Structure

MainFolder
   -file:   index.php
   -file:   index.html (base-template file)
   -folder: incl/ (for includes)
      -file:   incl/header.php
      -file:   incl/footer.php
      -file:   incl/config.php (PHP settings)
      -file:   incl/functions.php (PHP functionality for all pages)
   -folder: css/
      -file:   css/mainstyles.css
   -folder: img/


Step 2: Creating the base-template file (index.html)

This is where we build our website as a normal .html file with header, body and footer sections (the whole layout in a single file)!

Later on this will in turn be used as our base template that we will disect into 3 separate pieces:

  • header.php for header code
  • index.php for body and page-specific code
  • footer.php for endpage and footer code

Our base-template file will be very basic and simple and can be seen below:

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>This will be our first Dynamic website using PHP dynamic templating techniques :)</title>

   <!-- Make browser understand this is responsive site and not in need of 'pinch-zoom-ins' - Commented for now- remove if u want to use this--> 
   <!-- <meta name="viewport" content="width=device-width, initial-scale=1.0" /> -->

   <!-- Below is our main stylesheet for the page -->
   <link href="css/mainstyles.css" rel="stylesheet" type="text/css" media="all" />

   <!-- Below adds a 'shortcut-icon' a.k.a. 'bookmark/favorite icon'-->
   <link rel="shortcut icon" href="img/favicon.ico">

   <!-- Below allows for addition of this particular page's description for SEO -->
   <meta name="description" content="" />

   <!-- Below Meta-tags tells SE-Indexation spiders to index page and follow pagelinks of site -->
   <meta name="robots" content="index, follow" />
</head>
<body>
<div id="mainContainer"> <!-- Wrapper for page -->
   <header>
      <img src="img/logo.jpg" width="200" height="60" alt="" />
      <h1>Our homepage</h1>
      <p>- Slogan for this website</p>
   </header>
   <nav>
      <ul>
         <li><a href="#" target="_top">Home</a></li>
         <li><a href="#" target="_top">Portfolio</a></li>
         <li><a href="#" target="_top">About us</a></li>
         <li><a href="#" target="_top">Contact</a></li>
      </ul>
   </nav>
   <article>
      <h1>Content area for site is here...</h1>
      <p>And this is where all the content for the individual pages will end up.</p>
   </article>
   <footer>
      <p>&copy; Copyright <?php echo date('Y'); ?>. All rights reserved.</p>
      <hr />
      <a href="#" target="_top">Sitemap</a>
      <a href="#" target="_top">FAQ</a>
      <p>Phone: 070X-XX-XX-XX &bull; Email: test-[at]-testsite.org &bull; Address: Fictionstreet 32B, CA, USA</p>
   </footer>
</div> <!-- End of Wrapper for the page -->
</body>
</html>

Step 3: Process breakdown of how this is going to work

Okay, so the idea is to divide this website that we just created into different pieces (header, content and footer).
We do this by analyzing which parts will be recurring throughout every single subpage of the website.

For example: We can be pretty sure that all the code belonging to the ”header” section (including the main menu) will be available on every single subpage- as will the footer code!

This means that we can take all this code and place it in separate files.
In our case we call these files header.php & footer.php and have them placed in a folder named: incl, which is short for ”includes”.

Why do we do this then? Well the idea is to later include these separated external files, which together contains all the code for the entire page layout!

In this way we ”re-create” the website section by section by including these different parts into the ”main-subpage-file” – such as index.php for the mainpage, and contact.php for the contact page for example, etc.

Step 4: Start disecting & dividing the different sections of the website

###- header.php - can be seen below
###################################
<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>This will be our first Dynamic website using PHP dynamic templating techniques :)</title>

   <!-- Make browser understand this is a responsive site and not in need of 'pinch-zoom-ins' - Commented for now- remove if you want to use this --> 
   <!-- <meta name="viewport" content="width=device-width, initial-scale=1.0" /> -->

   <!-- Below is our main stylesheet for the page -->
   <link href="css/mainstyles.css" rel="stylesheet" type="text/css" media="all" />

   <!-- Below adds a 'shortcut-icon' a.k.a. 'bookmark/favorite icon' -->
   <link rel="shortcut icon" href="img/favicon.ico">

   <!-- Below allows for addition of this particular page's description for SEO -->
   <meta name="description" content="" />

   <!-- Below Meta-tags tells SE-Indexation spiders to index page and follow pagelinks of site -->
   <meta name="robots" content="index, follow" />
</head>
<body>
<div id="mainContainer"> <!-- Wrapper for page -->
   <header>
      <img src="img/logo.jpg" width="200" height="60" alt="" />
      <h1>Our homepage</h1>
      <p>- Slogan for this website</p>
   </header>
   <nav>
      <ul>
         <li><a href="#" target="_top">Home</a></li>
         <li><a href="#" target="_top">Portfolio</a></li>
         <li><a href="#" target="_top">About us</a></li>
         <li><a href="#" target="_top">Contact</a></li>
      </ul>
   </nav>
   <article>
-----------------------------------
###- footer.php - can be seen below
###################################
   </article>
   <footer>
      <p>&copy; Copyright <?php echo date('Y'); ?>. All rights reserved.</p>
      <hr />
      <a href="#" target="_top">Sitemap</a>
      <a href="#" target="_top">FAQ</a>
      <p>Phone: 070X-XX-XX-XX &bull; Email: test@testsite.org &bull; Address: Fictionstreet 32B, CA, USA</p>
   </footer>
</div> <!-- End of Wrapper for the page -->
</body>
</html>
###################################

Now as you can probably can see, we included the ”<article>” in the header.php file, while we included the ”</article>” in the footer.php file, but totally ”ignored” the content of <article> in both files.

We did this because we plan ahead!

Every subpage of the website will probably have the need for a ”general content-container” to place that particular page’s contents in – so we make the <article> container itself become recurring, while the content of the container- is not.

So perhaps you’re asking yourselves now whats next? Well, we need to put the website back together again after having disected it- thats our next move- including the header.php & footer.php in the index.php for the websites main-subpage.

###- index.php - can be seen below:
###################################
<?php include('incl/header.php'); ?>

<!-- Here comes the HTML content specific to this Mainpage (will be placed inside of <article> in header.php since that is the last piece of code included with the header.php file) -->

<?php include('incl/footer.php'); ?>
###################################

Now the website will have been recreated in index.php, since it first includes header.php (and all the code this file holds), then the HTML-content for that specific subpage, and last but not least- the footer.php file and the code that file holds.

Step 5: config.php & functions.php Explained

Okay, so you might be wondering now that we seem to be done already why we made 2 extra files in the incl/ folder?

Well this is simply for the purpose of ”looking & planning ahead”.

In the future the idea is that the config.php file will hold configuration code for the entire page (settings if you will). While the functions.php file will hold useful PHP functionality – which later can be included into the header.php to be available for all of the respective subpages.

And another thing worth pointing out- the footer.php will be able to hold all of the JavaScript code file inclusions that you want to load at the end of all subpages!

Step 6: Adding dynamic SEO content (title & meta-desc) for each individual page

There are tons of more fun and powerful/useful stuff you can do with a Dynamic website template like this in PHP!

For example if we want unique <title> texts for each individual subpage, we only replace our current HTML content in the header.php file between <title> & </title> with something like:
<?php echo $subPageTitleVariable; ?>

Then all thats left to do is to within index.php Above where we include header.php -> place:

$subPageTitleVariable = "our specific subpage &lt;title&gt; text";

And this would be available for the header.php file to make use of- seeing as how we placed it Above where header.php was included within the file and PHP works vertically through the code from top->bottom. Where top-placed code will be available for bottom-placed code in the code file/page. See below example:

###- index.php - can be seen below:
###################################
<?php $subPageTitleVariable = "This is our dynamic index page specific title text"; ?>
<?php include('incl/header.php'); ?>

<!-- Here comes the HTML content specific to this Mainpage (will be placed inside of <article> in header.php since that is the last piece of code included with the header.php file) -->

<?php include('incl/footer.php'); ?> 
###################################

This method and technique can also be utilized- and comes in very handy for On-Page SEO- where you need to specify specific meta-descriptions for each individual subpage!

As one last thing worth to mention is that I recommend you to start the config.php file by placing:

<?php error_reporting(-1); ?>

To report ALL Possible (PHP) errors on the page for debugging (recommended to be turned off when publish page – 0 as value instead of -1).

Also- include config.php Above header.php inside the index.php file, so that the Error Reporting is active for the Entire page.

Good Luck with all your Coding out there now ;)

Hope you learned something new and/or get some new ideas for your next projects ;) Was a pleasure helping out and hopefully inspiring to new creativity :) Enjoy!

Hej igen! :)

I det här inlägget tänkte jag ta upp och gå igenom samtliga taggar som nämndes i detta inläggs rubriktext, både översiktligt och i detalj! Jag kommer börja med en tabell någorlunda liknande till den jag hade för tidigare inlägg om HTML behållare, där jag listade själva taggen, en översiktlig beskrivning (+ ev. MDN citat), tillsammans med länk till MDN’s referenssida.

Översiktlig beskrivning av elementen vi kommer gå igenom i detta inlägg

<base> <base> taggen kan placeras i <head> området av en webbsida för att specificera detaljer om hur länkar på en webbsida skall uppföra sig. MDN’s referenssida för <base> taggen
<link> <link> taggen låter dig länka in externa resurser att kopplas samman med ens webbsida – och webbdokumentet man befinner sig i. Se MDN citat nedan:

The HTML Link Element (<link>) specifies relationships between the current document and an external resource.

This Element is most used to link to style sheets.

MDN’s referenssida för <link> taggen
<meta> <meta> taggen representerar meta-data information som ingen av de andra <head> meta-data taggarna som gås igenom i det här inlägget kan representera. För vilken typ av meta-data <meta> taggen kan representera se nedan citat från MDN’s referenssida:

According to the attributes set, the kind of metadata can be one of the following:

  • if the name is set, a document-level metadata, applying to the whole page;
  • if the http-equiv is set, a pragma directive, i.e. information normally given from the webserver on how the webpage should be served;
  • if the charset is set, a charset declaration, i.e. the charset used for the serialized-form of the webpage; HTML5
MDN’s referenssida för <meta> taggenMetaTags.info referenssida
<style>  <style> elementet innehåller styling information för ett webbdokument, eller delar av ett webbdokument, innehållet förväntat brukar vara CSS stilmalls kod. MDN’s referenssida för <style> taggen
<script>  <script> elementet är till för att ”bädda in”/referera till körbara script på HTML dokumentsidor. MDN’s referenssida för <script> taggen
<noscript> <noscript> definierar en sektion på webbsidan med HTML kod som skall visas om scripting är avstängt i webbläsaren eller om script typen ej stöds för besökaren. MDN’s referenssida för <noscript> taggen

 

<base> – med syfte att specificera allmänna detaljer för relativa/lokala länkar på webbsidan

Personligen har jag aldrig använt detta element på någon av mina egna webbsidor, när man kollar på dess MDN referenssida så ser man även att de lagt till en liten notis som säger ”I behov av ett tekniskt omdöme”, vilket säger mig att man kanske bör överväga att undvika/planera sina sidor så man slipper ett behov av att använda <base> taggen. Jag tror inte man behöver oroa sig om man inte använder den, dels då jag själv inte behövt det tidigare, samt då det är svårt att se vilket syfte och funktion användningen av elementet skulle ha för webbsidor i allmänhet – i alla fall med dess href attribut.

Jag hade kunnat se ett visst värde dock med att kunna specificera att samtliga länkar på en webbsida skulle öppnas på ett visst sätt (_blank, _top, eller så), men annars förstår jag inte riktigt poängen med att specificera href delen av <base> elementet, då man oftast på webbsidor behöver nå fram till ”x” antal olika undermappar på webbservern för att få access till alla de olika materialen som bygger upp webbsidan.

En annan sak man kan läsa om på MDN’s referenssida som jag var lite skeptisk till var det här med att <base> taggen skall lämnas öppen och inte stängas – antar att detta har något att göra med att den ska påverka alla efterföljande <a> element, men för mig går detta emot vad jag lärt mig, och känns allmänt slarvigt.

<link> – för länkning av externa resurser till ett webbdokument

<link> taggen är en väldigt populär och mycket använd tagg att ha i sina <head> delar av webbsidor, mestadels då den låter utvecklare länka in externa resurser till webbdokument, som t ex. CSS style sheets.

De förmodligen vanligaste attributen för <link> elementet är som följer:

  • hrefAbsolut/relativ länkadress som leder till den externa resursen man önskar länka in till webbdokumentet.
  • relSpecificerar relationen mellan inlänkade resursen och själva webbdokumentet, vanligaste värdet för detta attribut är ”stylesheet”, men relationsvärdena kan anges med ”mellanrums-separerad-lista” med värden från Link types. Ett vanligt relationsvärde till rel attributet för t ex. utskrifts CSS stilar, brukar vara ”alternate stylesheet” <- notera mellanrummet mellan ”alternate” och ”stylesheet”.
  • media – Låter utvecklaren ange (med hjälp av CSS Media Queries (gås igenom mer i detalj i inlägg framöver)) vilket media som den länkade resursen skall påverka – t ex. om den inlänkade stilmallen endast påverkar skärmar, eller utskrift, osv.
  • type – Detta attribut används för att definiera vilken typ av innehåll som länkas till med <link> taggen, vanligast vid länkning till CSS stilmallar är att man använder type-värdet: ”text/css” vilket då indikerar att typen av innehåll som länkas till är Cascading Style Sheet.

<meta> – för representation av meta-data som ingen annan <head> tagg kan representera

Många av er som tidigare sysslat med on-page sökmotoroptimering känner säkert igen <meta> taggen, men faktum är att detta är inte det enda användningsområdet för <meta> taggen.

Följande attribut existerar för <meta> taggen:

  • charset – i HTML5 introducerades attributet charset för att låta <meta> taggen representera teckenkodning som skall användas för webbsidan.
  • content – Definierar innehållet associerat med name attributet för <meta> elementet.
  • http-equiv – definierar ett värde som kan ändra server/webbläsares beteende.
    • http-equiv värde: default-style – Definierar vilken stilmalls kod som skall vara standard att använda för webbsidan. Definieras genom att ange i <meta> taggens content attribut, värdet av <link> taggens title attribut för den stilmall som är tänkt att agera standard stilmall, eller title attributet av <style> blocket som skall agera standard stilar för sidan. (Se MDN referenssida för mer detaljer – länk hittas i översta tabell)
    • http-equiv värde: refresh – Om content attributet innehåller ett positivt integer värde (heltals värde) så anger detta http-equiv attributvärde antalet sekunder tills webbsidan skall uppdateras. refresh kan också användas för att vidarebefordra besökare till en annan URL efter ”x” antal sekunder genom att första ange antalet sekunder som en positiv integer i content attributet för <meta> taggen, följt av texten ;url= varpå där sedan följer URL:en som skall vidarebefordras till – kod exempel på detta kommer visas nedan :)
  • name – Definierar dokument-nivås meta-data namn, skall inte användas om attributet charset eller http-equiv redan är satta för aktuella <meta> element. Detta definierade namn associeras sedan med content attributet för <meta> taggen. Lista på godkända name attributvärde för <meta> taggen se nedan:
    • author – Låter utvecklaren definiera författaren till dokumentet.
    • description – Innehåller en kort och sammanfattad beskrivning av innehållet på webbsidan – läs mer i sökmotoroptimerings inlägget för <meta> taggar.
    • generator – Innehåller text som indikerar programmet som byggde webbsidan.
    • keywords – Innehåller en/flera textsträngar separerade med kommatecken (,), relevanta ord associerade med webbsidan.
    • creator – Definierar namnet på skapren av webbdokumentet, kan även vara namnet för en institution, om flera skapare av webbsidan skall flera <meta> taggar användas!
    • googlebot – Synonym för robots, men följs endast av Googles indexeringsrobotar.
    • publisher – Definierar namnet av den som publicerade webbsidan/dokumentet.
    • robots – Definierar önskvärt beteende utvecklaren av sidan föredragit från samarbetsvilliga sökmotorindexerings robotar, robots namnet kan ha en hel del värden separerade med kommatecken (,), se nedan lista:
      • index – tillåter sökmotorindexerings robotarna att indexera sidan.
      • noindex – hindrar robotar från att indexera sidan.
      • follow – tillåter sökmotorindexerings robotarna att följa länkar som kan hittas på webbsidan.
      • nofollow – hindrar robotarna från att följa länkarna på webbsidan.
      • noarchive – hindrar sökmotorindexerings robotar från att ”cacha” webbsidan (spara ned dess innehåll – berör: Google & Yahoo).
      • nosnippet – hindrar visningen av beskrivning på sökresultat sidan hos en sökmotor för ens egen webbsida (Google).
      • noimageindex – hindrar sidan från att dyka upp som referens till en indexerad bild (typ Google bildsökning).
      • nocache – synonym till noarchive, fast för Bing.
    •  slurp – synonym till robots, fast för Yahoos indexerings robot.
    • viewport – Indikerar ledtrådar för den initiala viewport (mer om detta i inlägg framöver) storleken (mest applicerbart för mobila enheter som besöker webbsidan). Se värden i listan nedan:
      • width – Värde anges i sådana fall antingen med en positiv integer (heltal) som motsvarar pixlar för viewporten (oftast rektangulärt område av datorgrafik som för tillfället kollas på av besökaren), eller som texten ”device-width”.
      • height – Samma som för width, textalternativet blir dock istället ”device-height”.
      • initial-scale – ett positivt nummer mellan 0.0 och 10.0 – definierar förhållandet mellan t ex. enhetens bredd och viewport bredden (device-width i porträttläge, device-height i landskapsläge)
      • maximum-scale – ett positivt nummer mellan 0.0 och 10.0 som definierar maximala zoom-värdet för sidan (måste vara större eller lika med minimum-scale värdet för att åstadkomma något)
      • minimum-scale – ett positivt nummer mellan 0.0 och 10.0 som definierar motsvarigheten till maximum-scale – minimala zoom-värdet.
      • user-scalable – booleskt värde: yes/no – standardvärdet är ”yes”, om satt till ”no” kommer besökare inte kunna komma att zooma på webbsidan.

Nedan kan ni se några användningsexempel av <meta> taggen:

<!-- Define UTF-8 charset in HTML5 -->
<meta charset="utf-8">

<!-- Redirect to Google.se after 3 seconds -->
<meta http-equiv="refresh" content="3;url=http://www.google.se">

<!-- Instruct cooperative bots NOT to index the page -->
<meta name="robots" content="noindex, nofollow">

* Notera att MDN’s referenssida nämner att man inte ska stänga <meta> taggen då det är ett ”void element” – är inte helt säker på vad detta innebär, men void metoder i programmering brukar vara saker som ”utförs utan att returnera något”.

* Notera att endast indexerings bottar som är samarbetsvilliga kommer att följa reglerna utsatta i <meta> taggens name attributvärde ”robots”, e-post spammare eller annat kommer förmodligen inte följa sådana regler. Vill man undvika bandbredds konsumtionen av att indexeringsrobotar besöker ens webbsida t ex. om man inte önskar att få den indexerad överhuvudtaget, så kan man istället använda en robots.txt fil (kommer skriva ett dedikerat inlägg om dessa framöver), eller som komplement till <meta> taggens name attributvärde ”robots”.

<style> – för tilldelning av stil information till ett-/delar av ett webbdokument

<style> elementet tror jag flest känner till som on-page CSS kod tilldelning till ett specifikt webbdokument, i CSS brukar man dock föredra att använda extern stilmall av flexibla skäl- såväl som att slippa ”kladda ned” HTML dokument med CSS-stilmalls kod. Hålla Stilar, Semantik/uppmärkning och beteende separerat helt enkelt – brukar anses vara bästa praktiken.

Tillgängliga attribut till <style> elementet kan ses listade nedan:

  • type – Används för att definiera stilmalls språket med en specifik MIME typ , om ingen skulle vara definierad så är standard ”text/css” (den antar att stilmalls språket är CSS).
  • media – Samma som för ovan <link> attribut så kan här anges Link type attributvärden, men om inget angivits, så sätts standard till ”all media”.
  • disabled – Om detta attribut är satt så inaktiveras stilarna från att bli tillagda till dokumentet.

Där fanns fler attribut, men dessa är de enda 3 attributen jag själv har tidigare använt (de få gångerna jag faktiskt haft behov av att använda <style> taggen överhuvudtaget).

Där finns ytterligare ett attribut dock kallat scoped som var till för om <style> block skulle bli applicerade på föräldrar element inuti <body>, dock tyckte jag att man i sådana fall lika gärna kunde använda ”inline” CSS-stilar genom style attributet för HTML elementen.

Exempel på användning av <style> elementet – se nedan:

<!-- Jag gillar att skriva ut detta även om det är satt som standard om icke angivet, för tydlighetens skull -->
<style type="text/css"> 
body {
   background-color: #0f0;
   font-family: arial, sans-serif;
   font-size: 12px;
   line-height: 1.5em; /* 150% of the currently used font-size - good typography praxis */
}
</style>

<script> – inhämtning av körbar script kod från externa källor eller direkt på webbdokuments sidan

<script> taggen används oftast för att inkludera JavaScript’s kod till webbsidor, för att sköta beteende av webbsidor och bidra till en rikare besökarupplevelse.

Där finns 2 st. attribut man bör ha koll på när man jobbar med <script> taggen för HTML dokument:

  • type – attributet hjälper att identifiera vilket scripting språk som src attributet länkar till/vilket scripting språk som scriptet är kodat med.
  • src – kan ange en URI (se förklaring av skillnader mellan URI, URL och URN i denna stackoverflow forumtråd)  till ett externt script istället för att ange script-koden direkt på sidan mellan <script> start-taggen och </script> slut-taggen.

Exempel på type attributvärden (MIME types) hade kunnat vara: text/javascript, text/ecmascript, application/javascript, andapplication/ecmascript.

Man skulle kunna säga att där finns 2 typer av användningar för <script> taggen, antingen script-kod direkt på sidan, eller inhämtat utifrån. Se nedan kod exempel:

<!-- Implementering av externt javascript dokument -->
<script src="javascript.js"></script>

<!-- JavaScript kod direkt på HTML-sidan -->
<script type="text/javascript">
   /*
      JavaScript put into here...
   */
</script>

<noscript> – HTML-kod att visa om scripting/script-typ ej stöds i besökares webbläsare

Har personligen inte sysslat så mycket med scripting ännu för webbsidor, så det har inte blivit av att använda denne tagg speciellt mycket, dock kan jag förstå dess värde med tanke på funktionen den fyller.

Är ju superbra att ha på sin sida som alternativ-innehåll utifall scripting skulle vara avstängt i besökares webbläsare eller om script-typen ej stöds, tänk er själva om ni har en webbsida med mycket JavaScript, då hade kanske besökaren inte kunnat se någonting överhuvudtaget i värsta fall, dock med hjälp av <noscript> taggen hade man som utvecklare kunnat förmedla värdefull information till sin besökare – utifall script är avstängt eller liknande.

Kodexempel nedan:

<noscript>
<!-- Reference link to site version non-based on Scripting -->
<p>Du verkar ha inaktiverat (eller saknar stöd för-) JavaScript som vi använder på sidan, vänligen klicka <a href="http://www.homepage.se/no-js" target="_top">här</a> för att gå till en icke-JavaScript baserad version av webbsidan.</p>
</noscript>

I detta inlägg tänkte jag gå igenom Block-level element behållare som vi har till vårt förfogande i HTML(5). Vi ska gå igenom följande element, hur man kan använda dem, såväl som vilken funktion de är tänkta att fylla:

Element Beskrivning och funktion Länk
<div> Division element för icke-semantisk behållare, se MDN citat nedan:

The HTML <div> element (or HTML Document Division Element) is the generic container for flow content, which does not inherently represent anything. It can be used to group elements for styling purposes (using the class or id attributes), or because they share attribute values. It should be used only when no other semantic element (such as <article> or <nav>) is appropriate(!).

MDN Referenssida
<section> Sektions/avdelnings- element, semantisk behållare för att märka upp tematiska delar av en webbsida. Se MDN citat nedan:

The HTML Section Element (<section>) represents a generic section of a document, i.e., a thematic grouping of content, typically with a heading. Each <section> should be identified, typically by including a heading (<h1><h6> element) as a child of the <section> element.

MDN Referenssida
<article> Artikel element, semantisk behållare för användning vid artikelliknande webbinnehåll, se nedan MDN citat:

The HTML Article Element (<article>) represents a self-contained composition in a document, page, application, or site, which is intended to be independently distributable or reusable, e.g., in syndication. This could be a forum post, a magazine or newspaper article, a blog entry, or any other independent item of content. Each <article> should be identified, typically by including a heading (h1h6 element) as a child of the <article> element.

MDN Referenssida
<footer> Sidfots element, semantisk behållare tänkt att användas för att definiera en webbsidas sidfot! MDN Referenssida
<header> Sidhuvud element, semantisk behållare, motsvarighet till <footer> fast tänkt att användas för att definiera en webbsidas sidhuvud. MDN Referenssida
<aside> Sidospalts element, semantisk behållare tänkt att definiera sidospalter för webbsidor. MDN citat nedan:

The HTML <aside> element represents a section of the page with content connected tangentially to the rest, which could be considered separate from that content.

MDN Referenssida
<pre> För/O-formaterat element, tänkt att användas när webbläsaren inte ska tolka texten i behållaren. Se MDN citat nedan:

The HTML Preformatted Text (<pre>) represents preformatted text. Text within this element is typically displayed in a non-proportional font exactly as it is laid out in the file. Whitespaces inside this element are displayed as typed.

MDN Referenssida
<nav> Navigations element, tänkt att användas för navigations menyer och liknande för webbsidor. Se MDN beskrivning nedan:

The HTML Navigation Element (<nav>) represents a section of a page that links to other pages or to parts within the page: a section with navigation links.

MDN Referenssida

För att se bra praktiska exempel på när många av dessa elementen t ex. kan användas, så ta en titt på tidigare inlägg där vi gick igenom visualisation och realisation av layout för en webbsida.

Annars tycker jag inte där finns mycket mer att säga om dessa :)

När man använder <pre> elementet för ”preformatted” text

<pre> elementet är ett bra element som jag inte gick igenom i ovan länkade tidigare inlägg, som är väldigt användbart om man vill presentera kod på en webbsida i block-form.