HTML-förkortningens betydelse förklarad

HTML står för HyperText Markup Language, och kan på svenska översättas till ”märkspråk för webben”.

HTML-taggar förklarade

Webbsidors struktur byggs upp med hjälp av HTML-taggar. Dessa kan sen skrivas antingen som ensamstående (t ex: <taggnamn />), eller som tagg-par: där första taggen ”startar” ett tagg-spann (<tagg>), och den andre ”slutar” ett tagg-spann (</tagg>).

Notera hur slut-taggen stängdes genom att lägga till ett snedstreck (/) efter första tagg-tecknet (”mindre-än”-tecknet: <). Notera även för ensamstående tagg visad ovan, hur den avslutas i slutet av sin tagg innan sista tagg-tecknet (”större-än”-tecknet: >) med ett snedstreck även den (/), fast tillsammans med ett mellanrum innan snedstrecket!

Se exempel på ensamstående tagg:
<tagg />

Och exempel på tagg-par som utgör ett tagg-spann, se nedan:
<tagg> spann här emellan </tagg>

Vad HTML ansvarar för i webbutveckling

HTML är ett kodspråk kallat ”märkspråk” på svenska (markup language på engelska) som kortfattat nämndes ovan. Det kallas märkspråk då det används för att ”märka upp” själva strukturen och semantiken för webbsidor. Mer om vad markup betyder i HTML-sammanghang kan läsas här: motive.co.nz/glossary/markup.php#html

Om ni som mig när man var liten, byggde med Lego, så kan ni föreställa er HTML-taggarna som utgör hela HTML kodspråket- som alla tillgängliga byggblock man kunde använda för att bygga sina legobyggen, fast för webbsidor är HTML-taggarna bygglocken man kan använda för att bygga sina webbsidor!

Som ni kanske märkte ovan så består en ”tagg” i grunden av ett ”mindre-än”- tecken i början, följt av namnet på ”elementet” taggen representerar, avslutat med ett ”större-än”- tecken.

HTML ansvarar för skapandet av: listor, tabeller, formulär, texter, lägga in bilder, filmer, ljud, skapa behållare, menyer, länkar, s.k. iframes, m.m.

HTML skapar helt enkelt alla elementen som bygger upp en webbsida, såväl som binder samman meta-data för sökmotor-indexeringsrobotar, och stilmallar samt beteende-script som alla hjälper till att skapa helhets webbplats-upplevelsen.

Varje HTML-tagg fyller en speciell funktion och har också möjligheten att utökas med hjälp av s.k. ”attribut” (för mer om detta, se inlägget om populära termer inom HTML).

Arv inom HTML, samt barn och föräldrar-element

Inom HTML brukar man prata om att man har föräldrar-element, såväl som barn-element, vad som då menas med detta är att element som är placerade inuti ett annat element, är barn till det första elementet. Med detta följer även att barn-elementet ofta ärver egenskaper som föräldrar-elementet har (detta syftar mest till CSS-stilar).

Man säger helt enkelt att barn-element ärver egenskaper från föräldrar-elementen.

Jag som kommer skriva inlägg på denna sidan är för tillfället anställd som Full-stack webbutvecklare för ett e-handelsföretag parallellt med att bedriva egen verksamhet som konsult inom data/IT och webbutveckling. Dessförinnan var jag universitetsstuderande på distans inom områdena datateknik, webbdesign och webbutveckling på diverse högskolor och universitet i olika delar av Sverige.

Jag har haft ett brinnande intresse för både datorer såväl som webbdesign och webbutveckling ända sedan jag gick i grundskolan, och nu har jag äntligen lyckats uppnå en kunskapsnivå där jag känner mig tillräckligt säker på väldigt många av de områden som spelar in på att skapa en fullfjädrad hemsida med diverse tekniker och teknologier som finns till ens förfogande idag.

Min förhoppning är att, via denna sida, kunna dela med mig av min passion till andra som också har ett intresse för webbdesign och webbutveckling och allt vad området innefattar.

Samla allt för webbutveckling på ett centralt ställe

Jag kommer att förse läsare med material som främjar egen vidareutveckling inom ämnet. Detta då jag själv nuförtiden ibland tittar tillbaka och önskar att jag hade haft tillgång till en sida såsom den jag tänker skapa här – med allt det viktigaste samlat på en central plats.

Med tillgång till: resurser, vägledning och väl-förklarade inlägg om hur man lär sig mer inom området, och successivt kan ta sig från nybörjare till proffs. Såväl som länkar till resurser, referenser och användbara verktyg samt läsvärda artiklar!

Sidan är inte enbart avsedd att förse er läsare med bra material, utan kommer även att agera samlingssida för mina egna äventyr inom området- såväl som fortsatta studier och vidareutvecklingar inom webbdesign och webbutveckling :)

Allt jag tror kan vara av intresse för er, såväl som det har varit för mig, kommer att publiceras här!

Mitt syfte med sidan

Ett citat som känns väldigt träffsäkert för mitt syfte med denna sida är:

”Gör för andra, vad du önskar andra gjort för dig”

Det är detta jag kommer sträva mot att ständigt uppfylla med den här sidan.
Förse er med material som jag önskar att jag hade kunnat ta del av på ett samlat ställe i början av resa och min tid som webbutvecklare.

Sidans innehållsspråk

Då svenska är mitt modersmål kommer inläggen i förstahand att skrivas på svenska, men engelska motsvarigheter för de svenska inläggen kommer också att skrivas allteftersom för att göra innehållet tillgängligt för fler.

När det gäller undersidorna som t ex. ”Länkar” så kan det hända att beskrivningar för specifika länkar är skrivna på engelska, detta då det vid skrivande stund ansetts enklast.

Egen slang på sidan

Ordet ”Webbdev” kan förekomma en del på diverse ställen på sidan. Detta är min egen samlingsterm för att definiera de sammanslagna orden ”Webbdesign och webbutveckling”, då det är ganska långt och otympligt att skriva ut alla gångerna.

Smakprov på vad sidan kommer ha att erbjuda

Några område såhär på rak arm som redan är planerade att skrivas om är som följer:

  • Webbdev baskoncept
  • HTML5 [& Semantisk markup]
  • CSS
  • JavaScript [& jQuery]
  • PHP
  • Databaser
  • Responsiv webbdesign
  • Sökmotoroptimering (on-page främst)
  • CMS & WordPress
  • Versionshantering av kod med Git & GitHub
  • Utvecklingsmiljö och programvara
  • Programmerings grunder
  • Facklitteratur och böcker
  • Övrigt
  • Webbhotell & Hosting
  • IRC för supportnätverkande
  • Google Analytics
  • Google Web Fonts
  • Användbar webbutvecklings matematik
  • Användbara datorkunskaper för webbutvecklare
  • Användbara kunskaper för att studera på universitetsnivå

… för att nämna några :)

För mer detaljerad information kring vad jag planerar att ta upp och gå igenom på sidan, kan ni besöka undersidan: ”Framtidsplanering: inlägg”. Kommer att uppdatera denna allteftersom :)

Feedback från er läsare

Jag uppskattar konstruktiv kritik för att hjälpa mig bli bättre på skrivandet av inlägg, etc. Speciellt såhär i början av mitt ”bloggande”.

Och jag tar även gärna emot förslag och önskemål, så tveka inte att höra av er, antingen via kommentarsfältet som kommer att vara tillgängligt från diverse ställen på sidan, eller på contact[at]webbdev-essentials.net , ser fram emot att dela med mig av mina kunskaper till alla er läsare :)

Tills nästa inlägg,
Bästa hälsningar,
Trekka12

Om ni är av åsikt att bandbredd inte har med webbutveckling att göra så har ni inte granskat de finstilta bakomliggande delarna av webbutveckling tillräckligt nära ännu ;) Det kommer märkas av ju mer ni sysslar med webbdev :)

Eftersom varje webbsida laddas ned till dina besökares datorer/enheter så används ju bandbredden varje gång- och för varenda resurs som bygger upp hemsidan (filer, bilder, script, osv.).

Detta är då såvida webbläsaren inte laddar in webbsidan från tidigare nedsparad kopia, s.k. ”cache” som den har möjlighet att hämta data från för att ge besökaren en uppfattad ”snabbare laddningstid” och för att spara tid/resurser för webbservern som levererar hemsidans filer till besökaren.

Cache hör inte till vad jag tänkt diskutera i detta inlägget, men för snabb introduktion till vad det är så kan ni tänka er ett ”minne av senaste gången man besökte något på nätet”.

Detta ”minne” kan sen webbläsaren hämta från, istället för att ladda ned allt på nytt varje gång.

Det finns många olika typer av cache, såväl som CDN (Content Delivery Network) som är en extern cache som har som mål att positionera data så nära besökare som möjligt för att minska geografiska avståndet som data behöver färdas samt avlasta servern (bl. a.).

På så sätt kan en hemsidas laddningstid förbättras och effektivisera hantering av en webbservers begränsade tillgängliga resurser (minne, processorkraft, uppkopplingar, databastrådar, etc.) som används för att servera en hemsida till besökare.

Vad är bandbredd?

Bandbredd är en synonym för dataöverföringshastighet, eller på engelska: data transfer rate – vilket syftar till:

Mängden data som kan överföras från punkt A -> punkt B under en viss tid.

För en bra sida som går igenom detta mer i detalj se:
http://searchenterprisewan.techtarget.com/definition/bandwidth

Missledande marknadsföring av bandbredd och nätverkshastigheter

Jag kände mig lite vilseledd/lurad varenda gång TV-reklamen nämnde deras fantastiskt snabba bredband som hade 8 Mbit/s och liknande, innan jag visste bättre..

När jag väl började studera datateknik och kommunikation på universitetsnivå fick jag äntligen lite djupare förståelse för hur det verkligen låg till och fungerade.

Vad de inte nämnde i TV-reklamen var att deras fina marknadsförda bandbredd/dataöverföringshastighet är en teoretisk maxhastighet till att börja med.

Det är ganska ovanligt att denna uppnås p.g.a. påverkan från externa faktorer- som störningar på ledningen– på vilken typ av data som skickas och hur data skickas etc.

Missvisande och vilseledande tyckte jag det blev då de flesta (tror jag) är vana vid dataöverföring på datorer där överföringshastigheten brukar definieras i MB/s t ex. och inte Mbit/s.

Däremot när det gäller dataöverföring över Internet brukar man istället använda den marknadsförda enheten för dataöverföringshastighet: Mbit/s.

Denna utgår från miljoner (Mega) bitar per sekund istället för miljoner (Mega) bytes per sekund, som annars brukar vara den standardenhet vi är vana vid för dataöverföring när vi pratar hårddiskar etc.

Filstorlekar brukar populärast förekomma i Bytes (B), kB (kiloBytes), MegaBytes (MB), GigaBytes (GB).

Så för att lättare förstå hur ”snabbt” en viss bandbredd hade laddat ned en viss filstorlek eller ladda upp för den delen, tror jag det hade varit betydligt enklare att definiera bandbredden som MB/s istället för Mbit/s :)

Skillnaden mellan bitar och Bytes förklarad

1 Byte består av 8 bitar, så 1 bit är alltså 1/8 Byte.

Vi har skrivit ett inlägg där ni kan läsa mer om skillnaden mellan bitar och Bytes om ni skulle vara intresserade.

Skillnaden mellan Mbit/s och MB/s

Som ni säkert vid det här laget listat ut från tidigare stycken ovan så är skillnaden hur många bitar som faktiskt transporteras per sekund vid dataöverföring.

Som vi skrev ovan så var ju 1 bit bara 1/8 Byte, och 1 Byte 8 stycken bitar. Mega prefixet står ju sen för miljoner som nämndes ovan :)

Det är lätt hänt att förvirra de båda då det är knappt märkbar skillnad, speciellt inte kanske för någon som inte är så insatt i det bakomliggande för dataöverföringshastigheterna.

Detta innebär ju även då att man får 1/8 dataöverföringshastighet(!) på internet än vad man är van vid när man talar hårddiskar och övrig dataöverföring!

Räkna ut vad er bandbredd är i MB/s istället för Mbit/s

Om ni har en bandbredd på 24 Mbit/s och delar/dividerar denne med 8 så får ni ut vad ni egentligen har för dataöverföringshastighet såsom ni är vana vid från andra datorsammanhang, vilket då ger: 24/8 = 3 MB/s – vilket egentligen inte är  jättemycket. Och definitivt inte så mycket som det kändes när man såg reklamen :/

Flash-diskar (SSD) när denna artikel skrevs första gången kunde ha en läshastighet på 550 MB/s, och en skrivhastighet på typ 450-520 MB/s (se exempel: ADATA SSD hos Inet.se), medan M.2 och liknande diskar kan uppnå 5-10x den hastigheten!

Varför kan det då vara användbart och bra att känna till vad ovan verkligen betyder, hur saker verkligen ligger till?

Jo, för att till exempel kunna avgöra hur lång tid det bör ta att ladda ned filer från nätet om man har en ”ned-hastighet” på t ex. 24 Mbit/s
Exempel: En fil på 200 MB bör teoretiskt då ta 200/3 sekunder (66.67 sekunder) att ladda ned om ”lovad” max-hastighet uppnås för en 24 Mbit/s hastighet.

Plus(!) att ni även lär er ett sätt att se själva vad som är rimligt, och se om era Internet Service Providers (ISP) ”blåser er” och ni betalar för mycket för hur mycket hastighet ni verkligen kan få ut.

Ovan metod att räkna ut och förstå er bandbredd är även bra för att felsöka och se om ert nätverk är långsammare än vad det egentligen ska vara, läs mer om detta i stycket nedan.

Störningar på länken kan påverka hastigheten

Notera att ovan demonstrerade hastighetsmått är en teoretisk Max-hastighet, oftast så uppnås inte denne. Detta p.g.a. störningar antingen på nätverkslänken/mediet (ethernet-kabel/Wi-Fi) eller på själva vägen data färdas över Internet eller hur den skickas digitalt.

Ethernet-kabel har desto färre störningar som dataöverföringsmedium än vad Wi-Fi har då kablarna ofta är isolerade med speciellt material som blockerar signalstörningar, medan luften är helt oisolerad.

Luften kan innehåller väldigt många störande signaler från elektroniska apparater i hemmet och omgivningen såväl som utskickade radiovågor etc. som ständigt omger oss.

När det gäller Wi-Fi dock brukar störningarna vara som värst om de sammanfaller med samma frekvensband som ert Wi-Fi nätverk är konfigurerat att kommunicera över (ofta 2.4 GHz eller 5 GHz).

När vi studerade kommunikationsteknologi på LTH så nämnde kurslitteraturen att mikrovågsugnar och kylskåp/frys kunde störa ut Wi-Fi signaler.

Aldrig personligen testat dock så inte 100% säker huruvida det stämmer eller hur illa påverkan isf. skulle kunna vara. Det går säkert att Googla upp om man är intresserad, men mycket elektronik runtomkring oss i vardagen skickar ut signaler som kan påverka enheter som kommunicerar trådlöst utan att man kanske märker av det eller vet om det.

Ett roligt test ni kan göra via bredbandskollen.se är att mäta er nedladdnings resp. uppladdningshastighet för att se hur ni ligger till och om er hastighet någorlunda lever upp till vad ni betalar för.

(Notera dock att bredbandskollen.se tydligen tar bort ca. 2 Mbit/s på mätningar verkar det som)

Skillnad mellan Upp- och Nedladdningshastighet

Det finns många bandbredds erbjudande tillgängliga att välja mellan, alla är ute efter olika specifika modeller, vissa (som streamar mycket t ex.) kanske vill ha högre uppladdningshastighet, och kanske inte behöver lika mycket nedladdnings hastighet. Medan andra kanske vill ha en jämnare ned/uppladdningshastighet (t ex. Online Gamers för League of Legends eller annat spel som kräver jämn ned- och uppladdning av information för att kunna på bästa möjliga sätt leverera en bra spelupplevelse).

Personer som endast har ett vardagsbehov av att ha tillgång till internet för att:

  • Kolla banken
  • Uppdatera sociala medier
  • Läsa tidningen

… och annat, är hastigheten inte lika viktig- speciellt inte uppladdnings delen.

Visst går det lite fortare att ladda in sakerna desto högre nedladdningshastighet men sålänge man har minimum 8 Mbit/s tror jag inte det gör så stor skillnad.

De flesta större internettjänster, hemsidor och verksamheter brukar optimera sina sidor så de ska gå så fort att ladda som möjligt och ta upp så lite bandbredd som möjligt!

Många familjer och hemnätverk har därför aningen högre nedladdningshastighet för att snabbt kunna ladda ned filer/data från nätet (typ gratisprogram, streaming etc.) och en låg uppladdningshastighet då den ”inte används lika ofta” (med detta menar jag att den används, fast kanske inte i lika stort krav på hastigheten) för de flesta.

Slutklämmen

Hoppas detta inlägg hjälpte till att belysa hur saker och ting ligger till och vad det verkligen innebär med bandbredd och nätverkshastigheter ;)

Tills nästa inlägg :)

En viktig del inom webbutveckling som många glömmer (eller inte ens känner till) är: bilder och presentation av bilder i korrekta proportioner för att inte ”skrynklas” och bli förvrängda och tappa kvalitet.

Jag kallar detta område för bildproportioner förklarat då jag syftar till att informera om enkla matematiska formler som praktiskt taget kan göras via huvudräkning för att ta reda på vad en bild skall ha för ny bredd, respektive höjd vid förminskning, för att behålla originalbildens proportioner.

Förstoring av en bild brukar bli kasst oavsett om man behåller proportioner eller ej, fast såklart- mindre kasst om man behåller proportionerna.

Formlerna kan liknas vid det som automatiskt görs i t ex. Photoshop bildredigerings programmet när man har ikryssat rutan för att behålla bildproportionerna.

Det är dock inte alltid man har Photoshop tillgängligt, därför tänker jag att det kan vara användbart att känna till en bakomliggande formel för hur man själv kan göra samma sak på egen hand vart man än befinner sig/vad man än har att jobba med :)

Vår Exempelbild att skala om

Vi kommer utgå från att vi har en bild vars dimensioner är som följer:

Bredd är 430 pixlar medan Höjden är 275 pixlar.

Alltså: 430 x 275 som ursprungliga ”grund” dimensioner. Detta för att visa att det går att applicera vår formel på alla bilder, oavsett dimensioner.

Vi kommer i exemplet välja att förminska vår originalbild till ett proportionellt nedskalat alternativ.

Räkna ut Nya proportionerliga dimensioner för vår bild

Vår formel går ut på att vi väljer antingen en förutbestämd höjd (eller bredd för den delen) och sedan utifrån vårt nya valda dimensionsvärde (höjden/bredden), räknar vi ut det andra dimensionsvärdet.

Detta är speciellt användbart och praktiskt i webbutveckling då man t ex. sitter med en originalbild som är väldigt stor och man bara vill se hur den skulle se ut med mindre proportionella dimensioner som bättre passar in i ens egna sidlayout.

Då kan det vara användbart och bra att kunna på direkten räkna ut motsvarande bredd, eller höjd – utifrån det andra värdet man valt.

T ex. om ni tänker er att ni har en sidlayout där bilderna måste vara 200 pixlar höga, så behöver ni då räkna ut en proportionell motsvarighet i bredd.

Eller om ni ska göra ett galleri och ni vet att varje bild måste vara en fast bestämd bredd, t ex. 325 pixlar, medan höjden är tillåten att flexibelt variera (detta hjälper att hålla bilderna proportionella).

Stega igenom formeln och processen

Välja vårt ena dimensionsvärde

För detta exemplet tänker jag bygga på ovan praktiska exempel där vi hade en höjdbegränsning på 200 pixlar för bilderna till vår sidlayout.

Räkna ut vårt ”förhållande-värde” för nya bilden till originalbilden

Om vår originalbild nu var 430 pixlar bred, och 275 pixlar hög, och vi nu måste minska bilden till 200 pixlar i höjd, så kan vi få 2 olika förhållande-värde mellan originalbilden och den nya bildens dimensioner: antingen originalbild -> nybild, eller nybild -> originalbild.

Vad detta då innebär är att man dividerar t ex. originalbildens höjd med nya bildens höjd, eller tvärt om. I vissa fall blir det ena enklare än det andra.. Det märker man med tiden allteftersom man gör det mer och mer. Jag kommer visa varför längre ned, se nedan exempel för förhållandet vi väljer i det här fallet:

höjdförhållande för proportionell bildförminskning

Höjdförhållande för proportionell bildförminskning

Det fanns en baktanke också varför vi valde att göra det just i den här ordningen.

Med Nya bildens höjd som täljare, och originalbildens höjd som nämnare– nämligen av anledning att när vi sen skall räkna ut breddförhållandet så blir det enklare att lösa ut den okända nya bredden (x) om den står i täljaren, än om den stod i nämnaren – simpel algebraisk bråkräkning :)

Värdet vi fick ut av ovan uträkning är vårt förhållande-värde, och vad som är speciellt med detta, är att det måste vara exakt samma för både bredd-förhållandet- såväl som höjd-förhållandet, om vi vill behålla proportionerna till vår originalbild för de nya dimensionerna av bilden.

Algebraisk ekvationslösning för att få ut resterande nya dimensionsvärdet

Vad som nu återstår är att med hjälp av algebraisk ekvationslösning lösa ut den nya bilddimensionens proportionella bredd-värde genom att utföra följande uträkning:

uträkning för bredd-förhållandet via algebraisk ekvationslösning

Uträkning för bredd-förhållandet via algebraisk ekvationslösning

Som ni då sen ser ovan så ger detta oss alltså en proportionell ny bildbredd på 313 pixlar avrundat uppåt.

Vilket innebär att vår nya förminskade bilds dimensioner ska vara: 313×200 för att vara så nära proportionell mot originalbilden som möjligt (säger ”så nära proportionell som möjligt” då som ni ser ovan så hade vi 312.73 och inte 313 pixlar som ny bredd – dock är det bäst att man anger bredd i HTML för bilder med heltal, + att det inte är ”så mycket skillnad” egentligen).

Distorsion och förvrängning

Varje gång en bild skalas om till nya dimensioner (framförallt vid förminskning) – speciellt om de nya dimensionerna inte proportionellt matchar originalbildens dimensioner, så tappar bilden kvalitet!

För att undvika detta kan man i vissa fall använda sig av SVG (Scalable Vector Graphic / Vektorgrafik) istället, som alltid behåller exakt samma kvalitet oavsett hur mycket- eller lite- man än skalar om bilden. Annars får man helt enkelt vara uppmärksam på hur man skalar om sina bilder och försöka behålla proportionerna till originalbilden så gott det går :)

Slutkläm

Såja, då vet ni hur ni kan göra det Photoshop annars gör åt er på egen hand + att ni fick repeterat gymnasiala matematik-kunskaperna ^^

Hoppas ni fann detta inlägg lärorikt och intressant, och att ni kanske får nytta av det någon gång framöver :) Enjoy ^^

Du har säkert blivit förbryllad av hur de hexadecimala färgkoderna inom webbdesign och webbutveckling fungerar och det tänkte jag förklara i detta inlägget.

Hexadecimala färger är egentligen ganska enkla när man väl förstått grundkoncepten som bygger upp dem.

Ett av dessa grundkonceptet är att de hexadecimala färgerna bygger på färgprincipen RGB. Vilket innebär att man anger ett typ av ”del-värde” som kan liknas vid en procentuell intensitet för varje färgpott som är:

  • R = Röd
  • G = Grön
  • B = Blå

Mer i detalj så står ”hexa” för ett talsystem där basen är 16. Vad vi menar med detta är att talsystemet som används för hexadecimala färgkoder skiljer sig från det vi är vana vid (det decimala talsystemet där basen är 10) och likaså talsystem såsom det binära där basen är 2.

För dig som inte är så bekant med hur talsystem fungerar så kan du se nedan en detaljerad genomgång och förklaring:

Matematiska Talsystem förklarat ytterligare för ökad förståelse

I ett talsystem så har vi ”x” antal siffror som utgör valfritt tal.

T ex. 5 siffror i följande följd: 12500 utgör talet tolv tusen fem hundra i vårt decimala talsystem.

Man kan se dessa siffervärden gå från höger till vänster.

Där talet längst till höger också kan skrivas upphöjt med 0 (^0), där sedan för varje siffra man rör sid i sidled åt vänster så ökar exponenten (upphöjt-med-talet) med +1 (^0+1 t ex. för nästa siffra till vänster om siffran längst till höger).

Det är detta som avgör olika siffrors ”värde” och betydelse som sen i sin tur utgör ett visst tal.

Ta till exempel det decimala talet 11. Eftersom talsystemet är av typen ”decimal” så har vi basen 10.

Om vi då följer ovan logik med att siffran längst till höger ->, är upphöjd med 0 (^0)- då får 1:an längst till höger i talet 11 värdet 1*10^0.

För dig som inte kommit hit i matematiken ännu så funkar det som så att om ett tal är upphöjt med 0, oavsett vilket tal det är, så får vi värdet 1.

Så 10^0 = 1, precis som 12345^0 = 1.

Vi tog 1* 10^0 då vårt mest högra värde i talet 11 var 1. Hade vi haft talet 12 hade vi tagit 2 * 10^0 istället och då fått talvärdet 2, då uträkningen för 10^0 fortfarande blir 1 och vi då får 2*1=2.

Nu när vi har lite koll på hur talsystem generellt fungerar, så kan vi ta en närmare titt på vad som händer när vår bas för talsystemet förändras.

Hittills har vi enbart kollat på talsystem av den decimala typen där basen är 10, det talsystem vi använder till vardags och är vana vid.

Men inom datatekniken t ex. då pratar vi om bitar, som är baserade på det ”binära” talsystemet, där basen istället är 2.

För våra hexadecimala färger, använder vi oss istället av ett talsystem där basen är 16, därav ”hexa”.

Summerat kan vi säga att:

Basen upphöjs med ett steg för varje bit/siffra som representerar vårt tal från höger (->) till vänster (<-).

För att förtydliga detta ytterligare kan vi visa det med ett enkelt binärt exempel  (då detta är lätt att räkna med)4 bitar som ser ut som följer:
0    0    0    0 <- Där värdena för vardera bit är som följer:
23 22   21   20

Som då motsvarar:

8   4   2   1    <- uträknat.

I det decimala så fick vi i grundskolan lära oss att första talet längst till höger var s.k. ”ental” men de gav oss aldrig den bakomliggande (lite mer avancerade) matematiska anledningen, det är den vi har lärt oss nu.

Så nu vet vi att detta helt enkelt var för att vårt talsystem har basen 10 och talet längst till höger alltid får upphöjt med 0, medan efterföljande tal åt vänster ökas exponenten med +1 alltså blir nästa tal 100+1

osv. :)

Visst är matematik roligt när man väl förstår det och får förklaringar bakom saker man använt hela sitt liv utan att ha en ”riktig” bakomliggande förklaring för varför det var så? :P

Hursomhelst, nu borde du förstå hexadecimala färgvärden bättre, testa gärna själv och återkom gärna om du skulle ha frågor ^^


Och eftersom vi kan ange varje s.k. ”färgpott” med 2 bitar(se #RRGGBB <- två färgvärde för var färgpott) innebär detta att vi använder oss av ett fullt färgpotts-värde på 16^2.

Detta då ^2 motsvarar våra 2 bitar, 16 då varje bit har basen 16 i ett hexadecimalt talsystem, 16^2 ger oss 256 möjliga värden på 2 bitars lagringskapacitet med hexadecimala värde.

Och eftersom man i datatekniken alltid räknar med/inklusive 0:an (såvida inget annat specificerats)kommer vi att kunna ange värden från 0-255 – då detta inkluderar nollan och resulterar i 256 värden!

Så nu när vi har det konceptet klart för oss är det dags att gå vidare.

Alla möjliga hexadecimala färgpotts-värden presenterade

Varje färgpott består alltså av 2 bitar i hexadecimala värden/2 hexadecimala värden, och då bör vi kolla på hur hexadecimala värden av olika typer skrivs och vad dessa representationer motsvarar och innebär, se nedan:

Hexadecimala värde Decimala värde
1 = 1
2 = 2
3 = 3
4 = 4
5 = 5
6 = 6
7 = 7
8 = 8
9 = 9

Sen kommer vi till den intressanta delen – eftersom vi bara kan representera 1 värde för varje 1 bit, så kommer talet och värdet 10 för varje bit att orsaka problem för oss, då detta i det decimala talsystemet tar upp 2 värden/2 tal/2 bitar.

Som det då funkar i hexadecimalt talsystem, då vi måste fortsätta upp till 16 värden per bit/per värde, så kommer talen från 10-15 att representeras av bokstäver istället! (Notera att jag säger upp till 15 som maxvärde då man alltid räknar med nollan! kan ses ovan).

Se nedan lista av resterande hexadecimala värde från 10 upp till och med 15:

Hexadecimala värde Decimala värde
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15

Som du nu säkert kan förstå om du någon gång experimenterat lite själv med hexadecimala färger så kan du se att bokstaven F kan tolkas som ”fullvärde”.

Detta då F är det högsta värdet varje bit kan ha i en färgpott.

Har vi då 2x F så borde detta då alltså innebära absolut fullt värde för hela färgpotten, alltså 255 i vårt decimala talsystem då vi får 16^2.

16^2  blir 256, men i och med att vi räknar med 0:an så får vi 255 för våra 2 värden/bitar med vardera hexadecimalt tal!

Och då förstår du säkert också att 2 st. 0:or motsvarar en ”tom” färgpott som då borde leda till ”avsaknad av färg för den färgpotten”.

Bra liknelser för att hjälpa med förståelsen för RGB-färger hämtat från fysiken och vardagen

Ljus i fysiken hjälper oss förstå vit färg i webbdesign och webbutveckling

En grymt bra liknelse från fysiken som förklarar väldigt bra hur RGB fungerar, är liknelsen för hur Ljus är uppbyggt och hänger ihop om man studerar det närmare.

Ett bra praktiskt exempel som visar på liknelsen är när man tar den ”vita” färgen från vilken lampa som helst, och belyser denne genom ett spektrum, så kommer man kunna se på andra sidan av spektrumet hur ljuset har delats upp i dess olika våglängder.

Detta visar klockrent hur alla färgerna (i webbdev sammanhang färgpotterna) bidrar till att skapa vitt ljus (vit färg i webbdev sammanhang).

För det är ju samma som gäller för webbdesign och webbutveckling där då fulla färgpotterna för alla färgpotter som finnsRöd, Grön såväl som Blå, krävs för att skapa vit färg!

T ex. om man vill ha vit textfärg blir hexadecimala färgkoden: #FFFFFF.

Svarta kläders ljusabsorption – ett vardagsexempel som hjälper förklaring av svart färg i RGB för webbdesign

På samma fysiklektion som läraren delade insikter som gav ovan förståelse för det vita ljuset, så nämnde läraren även att det vi upplever som ”svart färg” egentligen är avsaknad av färg.

Och att detta är orsaken till att svarta kläder blir varma på sommaren när solen är framme.

Detta då den svarta färgen egentligen som sagt är avsaknad av färg/våglängder (för ljus), vilket gör att den absorberar alla färger (våglängder) som solen förser den med för att försöka kompensera för dess avsaknad av färg.

Vilket i sin tur då bildar värmen vi upplever under sommarens soliga dagar :)

Detta är också varför man är som svalast i vita kläder på sommaren.

Av samma anledning som för svart färgs avsaknad av våglängder/färger så för vit färg gäller istället motsatsen.

Att vit färg redan innehåller fulla spektrumet av färger så därför stöter den vita färgen bort alla våglängder istället för den är redan ”mättad” (skulle man kunna säga) av våglängder.

Sammanfattat så kan man se att vit färg reflekterar/stöter bort allt ljus, då det redan är mättat, och tar därmed inte heller upp någon värmeenergi i solen.

Medan det svarta saknar färg och därför gärna suger åt sig solljusets våglängder och därmed absorberar värmeenergi.

Primära färgerna som utgör våra hexadecimala färgkoder

När det gäller våra primära färger:

  • Rött
  • Grönt
  • Blått

Som RGB metoden representerar så kan vi då säkert också förstå att #FF0000 resulterar i en Röd färgvi fyller Enbart* den röda färgpotten.

Medan istället #00FF00 resulterar i en Grön färg då vi fyller den färgpotten till fullo.

Och slutligen då #0000FF ger oss en Blå färg då denna färgpott är fylld till fullo.

Alternativa färggivningsmetoder i webbdesign och webbutveckling

Det var ju ganska enkelt!

Dock så blir det lite mer komplicerat när vi ska försöka skapa t ex. ”hälften så full färgpott” i hexadecimala tal, etc.

För då man måste räkna på detta – såvida man inte använder den lite mer ”raka” formen för färggivning i CSS: rgb(0,0,0) eller rgba(0,0,0,0);

Se CanIUse.com för Webbläsarstöd för RGB() och RGBA() funktionerna i CSS(3).

rgb(0,0,0) är en färggivningsmetod i CSS som låter dig ange de decimala talen för färgpotterna istället för hexadecimalt – alltså från 0-255 färgvärde för varje färgpott.

rgba(0,0,0,0) är en annan färggivningsmetod i CSS3 som låter dig ange även en alpha-kanal för transparens/genomskinlighet (sista värdet i parentesen).

Genomgång av Hex-Dec värdekonvertering för att få förståelse för ”hur fulla” de olika färgpotterna verkligen är

Sådär ja, då vet vi vad alla möjliga bokstavs- och sifferkombinationer motsvarar.

Vi har även lite ”lättsmälta” liknelser för att komma ihåg hur och varför svart, vitt såväl som de primära (röd, grön, blå) färgerna skapas/genereras/byggs upp.

Börja smått – Dela upp hexadecimala färgkoden i dess 3 beståndsdelar Röd, Grön och Blå

För detta exemplets skull ska vi använda oss utav färgkoden #2D9FF0 (notera att hexadecimala färgkoder kan skrivas både med stora såväl som små bokstäver (versaler/gemener) väl i koden – själv föredrar jag att skriva med små bokstäver, men valt att skriva med stora bokstäver för tydlighetens skull i detta inlägget).

Om vi ska dela upp #2D9FF0 i dess tre beståndsdelar får vi som följer:

2D = Röd färgpott
9F = Grön färgpott
F0 = Blå färgpott

Nästa steg – Räkna ut färgpotterna var för sig- Från hexadecimala till decimala värden

Vi börjar med den första färgpotten (röd):
2 är första biten i färgpotten, och D är den andra och sista biten i färgpotten.

Den första biten (längst till vänster) i en färgpott multipliceras med 16 när man ska räkna ut det decimala värdet, och då kanske du undrar varför detta är?

Se bild nedan som visar varför:

Hexadecimal till decimal bitvärdes konvertering

Hexadecimal till decimal bitvärdes konvertering

Som du då kan se ovan så är hexadecimal -> decimal värdekonvertering ganska straight-forward :)

Hexadecimal kortform förklarad

Men innan detta inlägget är över ska jag också bara som hastigast nämna att hexadecimala färgkoder kan skrivas på en s.k. ”kortform” där man bara använder 1 bit per färgpott istället för 2.

Detta går dock Endast* att göra om båda färgpottens värden är Identiska* t ex:

Har vi den full-röda färgen: #FF0000 <- så är färgpottens värden identiska – F & F – och kan därför även skrivas som #F00 <- som du säkert noterar är även Gröna och Blåa färgpotternas värden identiska och kan även dessa därför förkortas till 1 bits hexadecimalt färgvärde ;) Som jag gjorde direkt i ovan exempel.

Hoppas du känner att du har fått bättre förståelse för hur saker och ting ligger till och fungerar, samt varför och att du har nytta av kunskaperna du nyss lärt dig.

Tills nästa gång :)