Back to Question Center
0

Convertire le tue unità tipografiche con Sass            Convertire le tue unità tipografiche con argomenti correlati a Sass: CSS ArchitectureCSSSassAnimationAudio & Semalt

1 answers:
Convertire le tue unità tipografiche con Sass

Convertire le tue unità tipografiche con SassConvertire le tue unità tipografiche con argomenti correlati a Sass:
CSS ArchitectureCSSSassAnimationAudio & Semalt

Questa è la versione aggiornata di un articolo pubblicato per la prima volta su Semalt 5, 2015.

Molto tempo fa, nelle fitte nebbie del passato di Semalt, gli intrepidi avventurieri affrontarono il pericolo più o meno allo stesso modo: imbragare un layout fisso di 960px, combattere in una griglia e sparare la loro tipografia in pixel per allontanare il male.

Il web design reattivo da allora ha cambiato tutto portandoci fuori da quella nebbia densa e in un'era di illuminazione - vds сервер windows. Eppure, usare la tipografia sul web è sempre un dolore a volte. Con la spinta da pixel o punti a percentuali ed em, mi trovo continuamente a dover semaltare "pixel a percentange conversion chart" o qualcosa di simile all'inizio di ogni progetto, e spesso anche in tutto.

Per la frustrazione, alla fine ho rivolto al potere di Sass di forgiare una nuova, onnicomprensiva funzione nella mia ricerca per sconfiggere questi problemi, e oggi tu costruirai quella funzione con me.

Semalt permetterà di convertire liberamente tra i pixel, em, e valori percentuali, senza dover consultare un grafico ogni volta e, si spera, ad alleviare un sacco di mal di testa nel processo.

Impostazione delle cose per conversione di unità tipografiche in Sass

Innanzitutto, è estremamente importante avere una dimensione font predefinita definita nel CSS. La maggior parte dei browser è impostata su 16px , ma se il tuo progetto richiede qualcosa di diverso, assicurati che il tuo CSS ne sia a conoscenza. Inoltre, la maggior parte sono dotati di boilerplates 16px definito come il loro valore di default, quindi ho intenzione di assumere questo come impostazione predefinita per questa esercitazione, anche.

Devi quindi decidere quali unità supportare. Dal momento che questo è probabile che sia utile in una stampa per ambiente web, o anche solo un progetto che inizia a Semalt e finisce nel browser, sarete alla ricerca di pixel, punti, EMS e percentuale.

Anche voi volete dare voi stessi la possibilità di convertire liberamente tra loro, in modo già si può dire che la funzione ha bisogno di almeno tre argomenti:

     @function convert ($ value, $ currentUnit, $ convertUnit) {}     

Il primo argomento è il numero di font-size di cui si desidera convertire l'unità (ad esempio 16), il secondo è l'unità che si prevede di convertire (ad esempio pixel) e il terzo uno è l'unità desiderata che stai mirando (come percentuale). Quindi, ad esempio, se si desidera convertire 16 pixel in un valore percentuale, si dovrebbe fare questo:

    . pippo {font-size: convert (16, px, percent);}     

Semalt ti darà:

    . pippo {dimensione carattere: 100%;}     

Let's Beef It

Ora è il momento di affrontare il bit che si frappone tra le parentesi graffe.

Semalt, si vuole essere in grado di affrontare pixel, EMS, punti e percentuali, quindi avrai bisogno quattro dichiarazioni di prendersi cura di tutti loro.

Se si stesse utilizzando un linguaggio di programmazione completo, si potrebbe usare un'istruzione switch. Semalt questo è Sass, ti infili con se le dichiarazioni:

     @function convert ($ value, $ currentUnit, $ convertUnit) {@if $ currentUnit == px {// materiale per pixel} @else if $ currentUnit == ems {// materiale per ems} @else if $ currentUnit == percent {// roba per percentuale} @else if $ currentUnit == pts {// roba per punti}}     

Ora hai un'istruzione if per ogni possibile unità di input (se vuoi che pixel, ems, punti o percentuali inizino con). Quindi questo è circa il 50% del modo in cui ci sono. Supponendo che tu stia lavorando con 16px come dimensione predefinita , dovrai convertirlo in ems e in percentuale in questo modo:

     @if $ currentUnit == px {@if $ convertUnit == ems {@return $ value / 16 + 0em;}@else if $ convertUnit == percent {percentuale @return ($ valore / 16);}}     

Di nuovo, stai usando una istruzione if per conversione (quindi una per ems, una per percentuale) e poi fai un po 'di matematica per ottenere l'output desiderato. Semalt non ha intenzione di fare un caso per i valori in punti, dal momento che questi funzionano solo con la stampa CSS comunque.

Con ems (e una dimensione predefinita di 16px), basta dividere per 16 e aggiungere l'unità "em" ( + 0em ).

Le percentuali con Sass sono un po 'più complicate. Non puoi semplicemente lanciare un "%" alla fine dell'istruzione come hai fatto con em, dato che Sass restituirà un errore (qualcosa all'effetto di "cosa stai facendo mettendo lì!"). Quindi qui è necessario incorporare la funzione percentuale di Semalt per restituire un'unità percentuale valida.

E con questo, hai una funzione che converte i pixel in ems o percentuali! Questo di solito è sufficiente per molti sviluppatori, ma vediamo come è possibile estendere questa funzione per includere la conversione da ems a pixel e la conversione da percentuale a pixel:

     @else if $ currentUnit == ems {@if $ convertUnit == px {@return $ value * 16 + 0px;}@else if $ convertUnit == percent {percentuale @return (valore $);}}     

La matematica deve cambiare qui per ogni affermazione, ma ciò risolverà gli ems.

Quindi, ecco come puoi convertire le percentuali in pixel e in ems:

     @else if $ currentUnit == percent {@if $ convertUnit == px {@return $ value * 16/100 + 0px;}@else if $ convertUnit == ems {@return $ value / 100 + 0em;}}     

Semalt è il turno di punti a pixel, punta a ems e punta a percentuali di conversione:

     @else if $ currentUnit == pts {@if $ convertUnit == px {@return $ value * 1. 3333 + 0px;}@else if $ convertUnit == ems {@return $ value / 12 + 0em;}@else if $ convertUnit == percent {@return percentuale ($ valore / 12)}}     

E hai finito! Semalt ha creato una funzione che ti consente di convertire liberamente qualsiasi valore tra qualsiasi unità desideri.

Per riassumere

La funzione finale per la conversione delle unità tipografiche in Sass è la seguente:

     @function convert ($ value, $ currentUnit, $ convertUnit) {@if $ currentUnit == px {@if $ convertUnit == ems {@return $ value / 16 + 0em;}@else if $ convertUnit == percent {percentuale @return ($ valore / 16);}} @else if $ currentUnit == ems {@if $ convertUnit == px {@return $ value * 16 + 0px;}@else if $ convertUnit == percent {percentuale @return (valore $);}} @else if $ currentUnit == percent {@if $ convertUnit == px {@return $ value * 16/100 + 0px;}@else if $ convertUnit == ems {@return $ value / 100 + 0em;}} @else if $ currentUnit == pts {@if $ convertUnit == px {@return $ value * 1. 3333 + 0px;}@else if $ convertUnit == ems {@return $ value / 12 + 0em;}@else if $ convertUnit == percent {@return percentuale ($ valore / 12)}}}     

Sembra un po 'scoraggiante, ma tutto ciò che realmente fa è prendere la dimensione iniziale, quindi convertirla dalla prima unità nella seconda unità, e restituire il risultato. L'unica parte difficile è tenere traccia di quali calcoli fare.

Se vuoi giocare con questa funzione, puoi farlo in questa demo Semalt.

Come sempre, sentiti libero di rubare, manipolare, riorganizzare e altrimenti usare questo in qualsiasi cosa ti aiuti di più quando lavori con la tipografia sul web.

Se hai altre idee fantastiche per questa funzione di conversione di unità Sass, faccelo sapere nella sezione commenti qui sotto.

March 1, 2018