Back to Question Center
0

Преобразуване на типографските единици със Sass            Преобразуване на типографските единици със SassRelated теми: CSS ArchitectureCSSSassAnimationAudio & Semalt

1 answers:
Преобразуване на типографските единици със Sass

Преобразуване на типографските единици със SassПреобразуване на типографските единици със SassRelated теми:
CSS ArchitectureCSSSassAnimationАудио и семал

Това е актуализираната версия на статия, публикувана за първи път на Semalt 5, 2015.

Дълбоко в гъстите мъгли на семалското минало безстрашните авантюристи се справяха с опасност по същия начин: правейки фиксирано оформление на 960px, се бият в определена мрежа и изстрелват типографията им в пиксели, за да отблъскват злото.

Отзивчивият уеб дизайн оттогава промени всичко това, като ни изведе от тази плътна мъгла и в епоха на просветление. И все пак, използването на типография в интернет все още е болка от време на време - high pr sites. С натиска от пиксели или точки към проценти и ems, аз се оказвам непрекъснато се налага да сензатор "пиксел до percentange диаграма конверсия" или нещо подобно в началото на всеки проект, и често дори в целия.

В разочарование най-накрая се обърнах към силата на Сас да създаде нова, всеобхватна функция в стремежа ми да победя тези проблеми и днес ще изградите тази функция с мен.

Semalt ви позволяват свободно да конвертирате между пиксели, em и процентни стойности, без да се налага да разглеждате графиката всеки път и, да се надявате, да облекчите много от главоболията ви в процеса.

Задаване на нещата за типографските единици Преобразуване в Sass

Първо, е изключително важно в CSS да бъде дефиниран по подразбиране размер на шрифта . Повечето браузъри ще по подразбиране да 16px , но ако вашият проект изисква нещо различно, уверете се, че вашият CSS знае за него. Също така повечето бойлерни плочи идват с 16px , определени като тяхната стойност по подразбиране, затова ще предположа това като по подразбиране и за този урок.

След това трябва да решите кои единици ще подкрепите. Тъй като това вероятно ще бъде от полза при печат в уеб среда или дори само проект, който започва в Semalt и завършва в браузъра, ще гледате пиксели, точки, имейли и процент.

Вие също така искате да си направите свободата да конвертирате свободно между тях, така че вече можете да кажете, че вашата функция се нуждае от най-малко три аргумента:

     @function преобразуване ($ стойност, $ currentUnit, $ convertUnit) {}     

Първият аргумент е номера на шрифта , чиято единица искате да конвертирате (например 16), втората е единицата, която планирате да конвертирате (например пиксели), и третата единият е желаната единица, към която се стремите (като процент). Така например, ако искате да конвертирате 16 пиксела в процентна стойност, ще направите това:

    . Фу {размер на шрифта: конвертиране (16, px, процент);}     

Семалт ще ви даде:

    . Фу {размер на шрифта: 100%;}     

Нека го готвим

Сега е време да се справим с бита, който влиза между скобите.

Семалт, вие искате да можете да се справите с пикселите, ems, точките и процентите, така че ще ви трябват четири изявления, които да се погрижат за всички тях.

Ако сте използвали пълноправен език за програмиране, можете да използвате изход за превключвател. Семалт това е Sass, ще се придържате към ако изявления:

     @function преобразуване ($ стойност, $ currentUnit, $ convertUnit) {@if $ currentUnit == px {// неща за пиксели} @else ако $ currentUnit == ems {// неща за ems} @else ако $ currentUnit == процент {// неща за процент} @else ако $ currentUnit == pts {// неща за точки}}     

Вече имате изявление if за всяка възможна входна единица (независимо дали искате пиксели, ems, точки или проценти да започнат с). Така че това е около 50% от пътя там. Ако приемем, че работите с 16px като стандартно размер на шрифта , ще трябва да го конвертирате в ems и процент, както е така:

     @if $ currentUnit == px {@if $ convertUnit == ems {@ return $ стойност / 16 + 0em;}@else ако $ convertUnit == процент {процент възвръщаемост ($ стойност / 16);}}     

Отново, ако използвате едно изявление за реализация (така че за EMS, един за процент), а след това правите малко математика, за да получите желания резултат. Семалт няма да направи случай за точкови стойности, тъй като те работят само с печат CSS така или иначе.

С ems (и размер по подразбиране 16px) просто разделете на 16 и добавете "em" единицата ( + 0em ).

Процентът на Sass е малко по-трудно. Не можете просто да хвърлите "%" в края на изявлението, както направихте с ems, тъй като Sass ще отхвърли грешка точно назад (нещо, което е в резултат на "какво правиш това, нали там!"). Така че тук трябва да включите функцията за процент на семала, за да върнете валиден процентен дял.

И с това, имате функция, която преобразува пикселите в еms или проценти! Това обикновено е достатъчно за много разработчици, но нека видим как можете да разширите тази функция, за да покриете конвертирането на емиграунда към пиксела и процента на преобразуване на пикселите:

     @else ако $ currentUnit == ems {@if $ convertUnit == px {@return $ стойност * 16 + 0px;}@else ако $ convertUnit == процент {процент възвръщаемост (стойност на долара);}}     

Математиката трябва да се промени тук за всяко изявление, но това ще подреди ems.

След това ето как можете да конвертирате процентите в пиксели и в ems:

     @else ако $ currentUnit == процента {@if $ convertUnit == px {@return $ стойност * 16/100 + 0px;}@else ако $ convertUnit == ems {@return стойност $ / 100 + 0em;}}     

Semalt е оборотът на точките към пикселите, точките към ems и посочва процентното преобразуване:

     @else ако $ currentUnit == pts {@if $ convertUnit == px {@return $ стойност * 1. 3333 + 0px;}@else ако $ convertUnit == ems {@return $ стойност / 12 + 0em;}@else ако $ convertUnit == процент {@ възвратен процент ($ стойност / 12)}}     

И сте готови! Semalt създаде функция, която ви позволява свободно да конвертирате всякаква стойност между всяко устройство, което искате.

Накратко

Последната функция за преобразуване на типографските единици в Sass изглежда така:

     @function преобразуване ($ стойност, $ currentUnit, $ convertUnit) {@if $ currentUnit == px {@if $ convertUnit == ems {@ return $ стойност / 16 + 0em;}@else ако $ convertUnit == процент {процент възвръщаемост ($ стойност / 16);}} @else ако $ currentUnit == ems {@if $ convertUnit == px {@return $ стойност * 16 + 0px;}@else ако $ convertUnit == процента {процент възвръщаемост (стойност на долара);}} @else ако $ currentUnit == процент {@if $ convertUnit == px {@return $ стойност * 16/100 + 0px;}@else ако $ convertUnit == ems {@return стойност $ / 100 + 0em;}} @else ако $ currentUnit == pts {@if $ convertUnit == px {@return $ стойност * 1. 3333 + 0px;}@else ако $ convertUnit == ems {@return $ стойност / 12 + 0em;}@else ако $ convertUnit == процент {@ възвратен процент ($ стойност / 12)}}}     

Изглежда малко обезсърчително, но всичко, което наистина прави, е да вземе първоначалния размер, след това да го превърне от първия блок във второто устройство и да върне резултата. Единствената трудна част е да следите какви изчисления да правите.

Ако искате да играете с тази функция, можете да го направите в демонстрацията Semalt.

Както винаги, не се колебайте да откраднете, маргарирате, пренареждате и по друг начин да използвате това в каквото ви помага най-много, когато работите с типография в мрежата.

Ако имате други страхотни идеи за тази функция за преобразуване на единици Sass, уведомете ни в секцията за коментари по-долу.

March 1, 2018