Måttenheter i CSS

Från Webbling
Version från den 5 september 2015 kl. 21.01 av PGJ (diskussion | bidrag) (→‎em)
Hoppa till: navigering, sök

Vi har nu tittat på ett par CSS-egenskaper som är viktiga för att kunna skapa layout, dvs width och height. Dessa används för att styra bredd och höjd på block-element. För att kunna använda oss av dessa på ett bra sätt måste vi lära oss lite om de olika måttenheter som är tillgängliga i CSS.

Observera att alla måttenheter i CSS måste följa direkt efter värdet, annars kommer det inte att fungera. Följande är korrekt; 80%, medan följande inte kommer att fungera 80 %. Så se upp med det!

Det finns ett enda värde som inte behöver någon efterföljande enhet och det är talet noll. Anledningen till det är förstås att 0% är det lika mycket som 0em, som är det samma som 0px, osv...

Den första enhet som vi ska titta på är ”px”, vilket är en CSS-pixel. Definitionen för en ”px”, skiljer sig lite ifrån vad vi vana att en pixel är...

Standardpixel

Som du kanske vet är en pixel ett bildelement på skärmen. Varje pixel byggs upp av minst tre sub-pixlar, en röd, en grön och en blå. När dessa lyser i olika styrka så bildas olika färgkombinationer. Pixlarna är så små, och ligger så nära varandra, att du oftast inte kan urskilja dem med blotta ögat. Tillsammans bildar dessa pixlar det innehåll du ser på skärmen. En vanliga HD-skärm har 1920 x 1080 pixlar.

CSS-pixel eller px

CSS px är inte riktigt det samma som en pixel på en vanlig skärm. Då olika skärmar har olika egenskaper; de är olika stora, de har olika upplösning osv. Pga detta kan det skilja sig stort på vad en pixel är ifrån skärm till skärm. Därför har W3C valt att definiera px på så sätt att den blir mindre beroende av olika typer av hårdvara och mer likformig. Grundtanken är att det ska gå 96px på en tum. Detta stämmer dock enbart om du har ställt in din monitor korrekt. Den verkliga definitionen på en px är mer komplicerad och baseras sig på hur man ser ett bildelement på ett visst avstånd.

Rent generellt kan du utgå ifrån att px är mer eller mindre en pixel eller i alla fall att det är en rätt så liten måttenhet. På riktigt högupplösande skärmar, kan en px bestå av flera skärmpixlar. Det gör att man kan ange bråkdelen av en px.

Om du skulle använda px för att skapa en box skulle du göra något i stil med detta:

.enBox {
  width: 800px;
  height: 200px;
}

Ovanstående skulle skapa en klass vid namn enBox och allt som använder den klassen skulle presenteras som cirka 800x200 pixlar stort.

Procent

Procent är ofta en användbar måttenhet. Anger man saker i procent, är det lätt att få till en sida som ser bra ut oavsett hur stort användarens webbläsarfönster är.

När man anger procent, anger man oftast hur stort elementet ska vara i förhållande till föräldraelementet, dvs det är inte relativt till hela sidan eller hela webbläsarfönstret. Om man vill relatera till webbläsarfönstrets storlek, får man använda sig av vh och vw.

Om man anger ett procentuellt värde för en teckensnittsstorlek, så kommer det vara i förhållande till hur stort teckensnittet är just där regeln används. Vi provar på ett exempel, först behöver vi lite HTML-kod.

See the Pen mJjqdp by Patrik Grip-Jansson (@PGJ) on CodePen.

Vi har alltså ett i-element placerat inuti ett em-element, som i sin tur ligger inuti ett p-element. Nu kopplar vi till lite CSS till det:

See the Pen mJjqdp by Patrik Grip-Jansson (@PGJ) on CodePen.

Texten i vårt yttersta p-element får alltså storleken 16px. Det nästlade em-elementet sätt till 200%, det vill säga dess text blir 32px. Vi har ytterligare ett nästlat element, dvs i-elementet. Även detta har font-size: 200%. Detta innebär alltså att den ska vara 200 % större än sin förälder, som är em-elementet, så vi får textstorleken 64px.

Det finns ett antal egenskaper med vilka man inte kan använda procent. Det gäller främst de element där inte det finns någon logisk koppling till ett föräldraelement, eller något annat av vilket man kan ta en procentsats. Se upp med detta och kolla i CSS-egenskapslistan för att se om procent stöds eller ej.

em

Storleken sätts relativt till den beräknade storleken på teckensnittet som gäller för elementet. Denna är antingen ärvt ifrån ett föräldraelement eller satt explicit för elementet i fråga. Följande skulle alltså sätta en bredd som är tio gånger större än teckensnittets bredd:

widht: 10em;

Man kan inte alltid utgå ifrån att det får plats precis så många tecken, som det antal em man anger. Detta på grund av att flesta teckensnitt är proportionella, dvs tecknen tar upp olika storlek beroende på hur bred bokstaven är. Så i ovanstående exempel, kanske vi till och med skulle kunna få in 20 tecken, om det vore smala tecken - såsom t.ex. "!".

Om man anger denna måttenhet för font-size, beräknas storleken utifrån den teckenstorlek som ärvts ifrån föräldraelementet. Det blir alltså ungefär samma sak som att använda %. Därmed är följande likvärdigt:

font-size: 200%;
font-size: 2em;

Man använder sig ofta av em för att skapa layouter som är skalbara till olika skärmstorlekar.

rem

Storleken sätts relativt till den beräknade storleken på teckensnittet som gäller för rotelementet. Används ofta för att skapa skalbara layouter, där man vill komma åt den grundteckenstorlek som gäller för dokumentet.

ex

Höjden på lilla x i fonten. Återigen används denna enhet för att skapa skalbara layouter.

vh

En hundradel av den synliga skärmdelens höjd.

vw

En hundradel av den synliga skärmdelens bredd.

Andra enheter

Det finns andra enheter, såsom t.ex. mm, cm och in. På grund av hur de är definierade är de dock inte pålitliga. Vi kan inte utgå ifrån att 1cm verkligen motsvarar en centimeter på skärmen. Det är därför lika bra att undvika dessa enheter. I alla fall så länge du designar saker som ska visas på en skärm. Om du däremot gör ett stylesheet som ska användas för utskrift är dock dessa enheter oftast korrekta och därmed användbara.

Nästa aktivitet

Att ändra bakgrund