Back to Question Center
0

Konvertera dina typografiska enheter med Sass            Konvertera dina typografiska enheter med SassRelated-ämnen: CSS ArchitectureCSSSassAnimationAudio & Semalt

1 answers:
Konvertera dina typografiska enheter med Sass

Konvertera dina typografiska enheter med SassKonvertera dina typografiska enheter med SassRelated-ämnen:
CSS ArchitectureCSSSassAnimationAudio & Semalt

Detta är den uppdaterade versionen av en artikel som först publicerades den Semalt 5, 2015.

För lång tid sedan, i de täta munkarna i det semaltiska förflutet, åtgärdade otrygga äventyrare farligt på ungefär samma sätt: Slinga en fast 960px-layout, slåss i ett visst rutnät och elda deras typografi i pixlar för att avvärja ondskan.

Responsiv webbdesign har sedan förändrat allt det genom att föra oss ur den täta dimmen och in i en upplysningstid - uhr herren. Och ändå är det fortfarande en smärta ibland att använda typografi på webben. Med push från pixlar eller punkter till procentandelar och ems, befinner jag mig kontinuerligt att behöva Semalt "pixel till percentange conversion chart" eller något liknande i början av varje projekt, och ofta även hela tiden.

I frustration vände jag mig slutligen till Sasss förmåga att skapa en ny, allomfattande funktion i min strävan att övervaka dessa problem, och idag kommer du att bygga den funktionen med mig.

Semalt kan du konvertera fritt mellan pixlar, em och procentvärden utan att behöva kolla ett diagram varje gång och förhoppningsvis lindra mycket av huvudvärk i processen.

Sätta upp saker för typografiska enheter Omvandling i Sass

För det första är det extremt viktigt att ha en standard typsnittstorlek definierad i din CSS. De flesta webbläsare kommer som standard till 16px , men om ditt projekt kräver något annat, se till att din CSS vet om det. Dessutom kommer de flesta pannplattor med 16px definierat som standardvärde, därför antar jag det som standard för denna handledning också.

Då måste du bestämma vilka enheter du ska stödja. Eftersom det här är troligt att det är till hjälp i en utskrift till webbmiljö, eller till och med bara ett projekt som börjar i Semalt och slutar i webbläsaren, tittar du på pixlar, poäng, ems och procentandel.

Du vill också ge dig själv möjlighet att konvertera fritt mellan dem, så du kan redan säga att din funktion behöver minst tre argument:

     @funktion konvertera ($ värde, $ currentUnit, $ convertUnit) {}     

Det första argumentet är typsnittstyp vars enhet du vill konvertera (till exempel 16), den andra är den enhet du planerar att konvertera (till exempel pixlar) och den tredje en är den önskade enheten du strävar efter (som procentandel). Så, till exempel, om du vill konvertera 16 pixlar till ett procentvärde, skulle du göra det här:

    . foo {fontstorlek: konvertera (16, px, procent);}     

Semalt kommer att ge dig:

    . foo {typsnittstorlek: 100%;}     

Låt oss nötkött det

Nu är det dags att ta itu med biten som går in mellan banden.

Semalt, du vill kunna klara av pixlar, ems, poäng och procentsatser, så du behöver fyra uttalanden för att ta hand om dem alla.

Om du använde ett fullfjädrad programmeringsspråk kan du använda en omkopplingsdeklaration. Semalt detta är Sass, du kommer att hålla med om uttalanden:

     @funktion konvertera ($ värde, $ currentUnit, $ convertUnit) {@if $ currentUnit == px {// saker för pixlar} @else om $ currentUnit == ems {// saker för ems} @else om $ currentUnit == procent {// saker för procentandel} @else om $ currentUnit == pts {// saker för poäng}}     

Du har nu ett if-förklaring för varje inmatningsenhet (om du vill att pixlar, ems, poäng eller procenttal ska börja). Så det här är ungefär 50% av vägen där. Om du antar att du arbetar med 16px som standard typsnittstorlek , måste du konvertera den till ems och procent som sådan:

     @if $ currentUnit == px {@if $ convertUnit == ems {@return $ värde / 16 + 0em;}@else om $ convertUnit == procent {@return procent ($ värde / 16);}}     

Igen använder du ett om uttalande per omvandling (så en för ems, en för procent) och sedan gör lite matte för att få önskad utgång. Semalt kommer inte att göra ett fall för punktvärden, eftersom dessa bara fungerar med CSS i alla fall.

Med ems (och en standardstorlek på 16px) delar du bara med 16 och lägger till "em" -enheten ( + 0em ).

Procentandel med Sass är lite svårare. Du kan inte bara kasta en "%" i slutet av uttalandet som du gjorde med ems, eftersom Sass kommer att kasta ett fel direkt tillbaka (något med effekten av "vad gör du med att sätta det där!"). Så här måste du inkludera Semalt-procentfunktion för att returnera en giltig procentandel.

Och med det har du en funktion som omvandlar pixlar till ems eller procentsatser! Detta är vanligtvis tillräckligt för många utvecklare, men låt oss se hur du kan förlänga denna funktion för att täcka ems till pixelkonvertering och procentandel till pixelomvandling:

     @else om $ currentUnit == ems {@if $ convertUnit == px {@return $ värde * 16 + 0px;}@else om $ convertUnit == procent {@return procent ($ värde);}}     

Matematiken behöver ändras här för varje uttalande, men det kommer att sortera ems.

Så här kan du konvertera procenttal i pixlar och till ems:

     @else om $ currentUnit == procent {@if $ convertUnit == px {@return $ värde * 16/100 + 0px;}@else om $ convertUnit == ems {@return $ värde / 100 + 0em;}}     

Semalt är det vändpunkten till pixlar, pekar på ems och pekar på procentuella omvandlingar:

     @else om $ currentUnit == pts {@if $ convertUnit == px {@return $ värde * 1. 3333 + 0px;}@else om $ convertUnit == ems {@return $ value / 12 + 0em;}@else om $ convertUnit == procent {@return procent ($ värde / 12)}}     

Och du är klar! Semalt skapade en funktion som låter dig fritt konvertera valfritt värde mellan vilken enhet du vill ha.

För att sammanfatta

Den slutliga funktionen för typografiska enheter omvandling i Sass ser ut så här:

     @funktion konvertera ($ värde, $ currentUnit, $ convertUnit) {@if $ currentUnit == px {@if $ convertUnit == ems {@return $ värde / 16 + 0em;}@else om $ convertUnit == procent {@return procent ($ värde / 16);}} @else om $ currentUnit == ems {@if $ convertUnit == px {@return $ värde * 16 + 0px;}@else om $ convertUnit == procent {@return procent ($ värde);}} @else om $ currentUnit == procent {@if $ convertUnit == px {@return $ värde * 16/100 + 0px;}@else om $ convertUnit == ems {@return $ värde / 100 + 0em;}} @else om $ currentUnit == pts {@if $ convertUnit == px {@return $ värde * 1. 3333 + 0px;}@else om $ convertUnit == ems {@return $ value / 12 + 0em;}@else om $ convertUnit == procent {@return procent ($ värde / 12)}}}     

Det ser lite skrämmande ut, men allt som verkligen gör det, tar den ursprungliga storleken, sedan konverterar den från den första enheten till den andra enheten och returnerar resultatet. Den enda tuffa delen är att hålla reda på vilka beräkningar som ska göras.

Om du vill leka med den här funktionen kan du göra det i den här Semalt demo.

Som alltid, var god att stjäla, mangla, omorganisera och annars använda det i vad som helst hjälper dig mest när du arbetar med typografi på webben.

Om du har några andra fantastiska idéer för denna Sass-enhetens konverteringsfunktion, låt oss veta i kommentarfältet nedan.

March 1, 2018