Back to Question Center
0

Převod typografických jednotek na Sass            Převod typografických jednotek na téma SassRelated: CSS ArchitectureCSSSassAnimationAudio & Semalt

1 answers:
Převod typografických jednotek na Sass

Převod typografických jednotek na SassPřevod typografických jednotek na téma SassRelated:
CSS ArchitectureCSSSassAnimationAudio & Semalt
Toto je aktualizovaná verze článku, který byl poprvé publikován na Semaltu 5, 2015.

V hustých mlhách Semaltské minulosti se v hluboké mlhách Semaltské minulosti neohrabaní dobrodruzi vypořádali s nebezpečím stejným způsobem: vysunout pevný rozměr 960 pixelů, bojovat v nastavené mřížce a oheň jejich typografii v pixelech, aby odvrátili zlo.

Odpovědný webdesign se od té doby změnil tím, že nás vyvedl z této husté mlhy a do věku osvícení - commercial appraisal company. A přesto, používání typografie na webu je stále občas bolestivé. S tlakem z pixelů nebo bodů na procenta a ems se mi zdá, že musím nepřetržitě pořizovat "graf konverze pixelů na procentuální hodnotu" nebo něco podobného na začátku každého projektu a často i v celém rozsahu.

Ve frustraci jsem se konečně obrátil k síle Sassové, abych vytvořil novou, všestrannou funkci v mém úsilí o porážku těchto problémů a dnes budete s touto funkcí budovat.

Semalt umožňují volně převádět mezi pixely, em a procentuální hodnoty, aniž byste museli každou chvíli konzultovat graf a snad snáze zmírnit mnoho vašich bolestí hlavy v procesu.

Nastavení věcí pro typografické jednotky Konverze v Sass

Za prvé, je nesmírně důležité mít v CSS definovanou výchozí velikost písma . Většina prohlížečů bude mít výchozí hodnotu 16 pixelů , ale pokud váš projekt vyžaduje něco jiného, ​​ujistěte se, že o tom vaše CSS ví. Také většina boilerplates je s 16px definována jako jejich výchozí hodnota, proto se domnívám, že tohle je také výchozí pro tento tutoriál.

Poté se musíte rozhodnout, které jednotky budete podporovat. Vzhledem k tomu, že to pravděpodobně bude užitečné v tisku do webového prostředí, nebo dokonce jen projekt, který začíná v Semaltu a skončí v prohlížeči, budete se dívat na pixely, body, ems a procento.

Dáte si také možnost volně převádět mezi sebou, takže už můžete říct, že vaše funkce potřebuje alespoň tři argumenty:

     @function konvertovat ($ hodnota, $ currentUnit, $ convertUnit) {}     

První argument je číslo velikosti písma , jehož jednotku chcete převést (například 16), druhou je jednotka, kterou chcete převést (například pixely) a třetí jedna je požadovaná jednotka, na kterou se zaměřujete (jako procento). Například, pokud chcete převést 16 pixelů na procentuální hodnotu, uděláte to takto:

    . foo {velikost písma: konverze (16, px, procenta);}     

Semalt vám dá:

    . foo {velikost písma: 100%;}     

Let's Beef It

Nyní je čas řešit bit, který se pohybuje mezi třmeny.

Semalt, chcete být schopni řešit pixely, ems, body a procenta, takže budete potřebovat čtyři prohlášení, které se o všechny postarají.

Pokud používáte plnohodnotný programovací jazyk, můžete použít příkaz switch. Semaltem tohle je Sass, budete se držet, pokud výroky:

     @function konvertovat ($ hodnota, $ currentUnit, $ convertUnit) {@if $ currentUnit == px {// věci pro pixely} @else pokud $ currentUnit == ems {// věci pro ems} @else pokud $ currentUnit == procent {// věci pro procento} @else pokud $ currentUnit == pts {// věci pro body}}}     

Nyní máte příkaz if pro každou možnou vstupní jednotku (chcete-li začít s pixely, ems, body nebo procenty). Tak to je asi 50% cesty tam. Za předpokladu, že pracujete s výchozím velikost písma , musíte jej převést na ems a procento takto:

     @if $ currentUnit == px {@if $ convertUnit == ems {@return $ hodnota / 16 + 0em;}}@else pokud $ convertUnit == procent {procento navrácení (hodnota $ / 16);}}}     

Opět používáte jeden příkaz if na konverzi (tak jeden pro ems, jeden pro procento) a pak udělat trochu matematiky získat požadovaný výstup. Semalt nebude dělat případ pro bodové hodnoty, protože tyto pracují pouze s tiskem CSS.

V případě ems (a výchozí velikost 16px) rozdělíte pouze 16 a přidáte jednotku "em" ( + 0em ).

Procento s Sassem je trochu složitější. Nemůžete jen hodit "%" na konci příkazu, jako jste udělali s ems, protože Sass bude hrát chybu zpět (něco, co děláte tím, že tam uvedete!). Takže zde musíte zahrnout funkci Semalt percentage, abyste vrátili platnou procentuální jednotku.

A díky tomu máte funkci, která konvertuje pixely na ems nebo procenta! To obvykle stačí pro mnoho vývojářů, ale uvidíme, jak můžete tuto funkci rozšířit tak, aby pokrýval konverzi ems na pixel a procento konverze pixelů:

     @else pokud $ currentUnit == ems {@if $ convertUnit == px {@return $ hodnota * 16 + 0px;}}@else pokud $ convertUnit == procent {@return percentage (hodnota $);}}}     

Matematika se zde musí měnit pro každé prohlášení, ale to vyřeší ems.

Dále zde můžete převést procentuální body na pixely a na ems:

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

Semalt je to přeměna bodů na pixely, poukazuje na ems a ukazuje na procentní konverze:

     @else pokud $ currentUnit == pts {@if $ convertUnit == px {@return hodnota $ * 1. 3333 + 0px;}}@else pokud $ convertUnit == ems {@return $ hodnota / 12 + 0em;}}@else pokud $ convertUnit == procent {@return procento (hodnota $ / 12)}}}     

A vy jste skončili! Semalt vytvořil funkci, která vám umožní volně převádět libovolnou hodnotu mezi libovolnou jednotkou, kterou chcete.

K součtu

Konečná funkce pro konverzi typografických jednotek v Sass vypadá takto:

     @function konvertovat ($ hodnota, $ currentUnit, $ convertUnit) {@if $ currentUnit == px {@if $ convertUnit == ems {@return $ hodnota / 16 + 0em;}}@else pokud $ convertUnit == procent {procento navrácení (hodnota $ / 16);}}} @else pokud $ currentUnit == ems {@if $ convertUnit == px {@return $ hodnota * 16 + 0px;}}@else pokud $ convertUnit == procent {@return percentage (hodnota $);}}} @else pokud $ currentUnit == procent {@if $ convertUnit == px {@return hodnota $ * 16/100 + 0px;}}@else pokud $ convertUnit == ems {@return hodnota $ / 100 + 0em;}}} @else pokud $ currentUnit == pts {@if $ convertUnit == px {@return hodnota $ * 1. 3333 + 0px;}}@else pokud $ convertUnit == ems {@return $ hodnota / 12 + 0em;}}@else pokud $ convertUnit == procent {@return procento (hodnota $ / 12)}}}}}     

Vypadá to poněkud skličující, ale vše, co skutečně dělá, je převzít počáteční velikost, převést ji z první jednotky na druhou a výsledek vrátit. Jediný tvrdý díl je sledování toho, jaké výpočty je třeba provést.

Pokud chcete tuto funkci hrát, můžete to udělat v tomto Semalt demo.

Jako vždy, neváhejte ukrást, upravovat, přeskupovat a jinak používat to, co vám nejvíce pomáhá při práci s typografií na webu.

Pokud máte nějaké další skvělé nápady pro tuto funkci konverze jednotek Sass, dejte nám vědět v sekci komentáře níže.

March 1, 2018