Back to Question Center
0

Tyypillisten yksiköiden muuntaminen Sassin kanssa            Tyypillisten yksiköiden muuntaminen SassRelated-aiheilla: CSS ArchitectureCSSSassAnimationAudio & Semalt

1 answers:
Konekäännös muuntamalla Sass

Tyypillisten yksiköiden muuntaminen Sassin kanssaTyypillisten yksiköiden muuntaminen SassRelated-aiheilla:
CSS ArchitectureCSSSassAnimationAudio & Semalt

Tämä on päivitetty versio, joka julkaistiin ensimmäisen kerran Semalt 5, 2015.

Kauan sitten Semaltin menneisyyden tiheässä sumussa hirvittävät seikkailijat tarttivat vaaraa aivan samalla tavoin: heiluttamaan kiinteän 960px-asettelun, taistelemaan asetetussa ruudukossa ja tulkitsemaan typografiaa pikseleinä, jotta he voivat torjua pahan.

Responsive web design on sen jälkeen muuttanut kaiken tuomaa tuosta tiheästä sumasta ja valaistumisikään. Ja vielä, typografian käyttö verkossa on silti kipu. Kun painat pikseleitä tai pisteitä prosentteihin ja ems, minusta on jatkuvasti oltava Semalt "pikseli on percentange muuntaminen kaavio" tai jotain vastaavaa alussa jokaisen projektin, ja usein jopa koko - attrezzatura parco giochi bambini.

Turhautuneessa tilanteessa vihdoin käänsin Sassin voimaamaan uusi, kaiken kattava tehtävä pyrkimyksissänsä ratkaista nämä ongelmat, ja tänään sinä aiot rakentaa minulle tämän tehtävän.

Semaltin avulla voit konvertoida vapaasti pikseli-, em- ja prosentuaalisten arvojen välillä ilman, että sinun tarvitsee kuunnella kaaviota joka kerta ja toivottavasti lievennä paljon päänsärkyäsi prosessissa.

Sassin muokkauksen tyypillisten yksiköiden kehittäminen

Ensinnäkin on äärimmäisen tärkeää, että CSS: ssä on oletusarvoinen fonttikoko . Useimmissa selaimissa oletuksena on 16px , mutta jos projekti vaatii jotain muuta, varmista, että CSS tietää sen. Myös useimmat kattovalaisimet sisältävät 16px määriteltynä niiden oletusarvoksi, joten aion olettaa, että olet myös oletusarvoisesti tässä opetusohjelmassa.

Tämän jälkeen sinun on päätettävä, mitkä yksiköt aiotte tukea. Koska tämä on todennäköisesti hyödyllistä tulostamassa verkkoympäristöön tai jopa vain projektiin, joka alkaa Semaltilla ja päätyy selaimeen, tarkastelet pikseleitä, pisteitä, ems- ja prosenttimääriä.

Haluat myös antaa itsellesi mahdollisuuden muuntaa vapaasti niiden välillä, joten voit jo sanoa, että sinun tehtäväsi tarvitsee vähintään kolme argumenttia:

  @funktio muuntaa ($ arvo, $ currentUnit, $ convertUnit) {}    

Ensimmäinen argumentti on fonttikoko , jonka yksikkö haluat muuntaa (esimerkiksi 16), toinen on yksikkö, jonka aiot muuntaa (esimerkiksi pikseliä) ja kolmas yksi on haluttu yksikkö, jonka haluat (prosentteina). Esimerkiksi, jos haluat muuntaa 16 pikseliä prosentteina, tee näin:

 . foo {font-size: convert (16, px, prosenttia);}    

Semalt antaa sinulle:

 . foo {fonttikoko: 100%;}    

Let's Beef It

Nyt on aika käsitellä bittiä, joka kulkee rintaliivien välissä.

Semalt, haluat pystyä käsittelemään pikseleitä, ems-pisteitä ja prosenttiosuuksia, joten tarvitset neljä lausuntoa, jotka huolehtivat kaikista niistä.

Jos käytit täydellistä ohjelmointikieltä, voit käyttää kytkinlausetta. Säilytä tämä Sass, pysyttäytyy jos lausunnot:

  @funktio muuntaa ($ arvo, $ currentUnit, $ convertUnit) {@if $ currentUnit == px {// aineita pikseleihin} @else jos $ currentUnit == ems {// stuff for ems} @else jos $ currentUnit == prosentti {// tavaraa prosentteina} @else jos $ currentUnit == pts {// tavaraa}}    

Jokaisella mahdollisella syöttöyksiköllä (jos haluat pikseliä, ems-pisteitä, pisteitä tai prosenttiosuuksia), sinulla on nyt jokin lausuma. Joten tämä on noin 50% matkalla. Olettaen, että työskentelet oletuksena fonttikokoon (16) 16px: llä, sinun on muunnettava se emsiksi ja prosenttimääriksi niin:

  @if $ currentUnit == px {@if $ convertUnit == ems {@return $ value / 16 + 0em;}@else jos $ convertUnit == prosentti {@ palautus prosentteina ($ arvo / 16);}}    

Jälleen käytät yhden tuloksen (yksi ems, yksi prosenttiosuus), ja sitten pienen matematiikan avulla halutun tuoton. Semalt ei aio tehdä tapausarvoisia arvoja, koska ne toimivat vain painetun CSS: n kanssa.

Kun ems (ja oletuskoko 16px), jakaa vain 16 ja lisää em-yksikkö ( + 0em ).

Sassin prosenttiosuudet ovat hieman hankalampia. Et voi vain heittää "%" lausunnon lopussa kuin teitte emsin kanssa, sillä Sass heittää virheen heti takaisin (jotain "mitä sinä teet siihen!"). Joten tässä sinun on sisällytettävä Semalt-prosenttiyksikkötoiminto palauttaakseen kelvollisen prosenttiyksikön.

Ja tällä tavoin sinulla on funktio, joka muuntaa pikseliä emsiksi tai prosenttiosuuksiksi! Tämä on tavallisesti tarpeeksi monille kehittäjille, mutta katsotaan, kuinka voit laajentaa tätä toimintoa kattamaan ems: n pikselien muuntamiseen ja prosenttiosuuteen pikselien muuntamiseen:

  @else jos $ currentUnit == ems {@if $ convertUnit == px {@return $ arvo * 16 + 0px;}@else jos $ convertUnit == prosentti {@ palautus prosentteina ($ arvo);}}    

Matematiikka täytyy muuttaa täällä jokaisen lauseen osalta, mutta se ratkaisee ems.

Seuraavassa on, kuinka voit muuntaa prosenttiosuudet pikseleihin ja emsiksi:

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

Epäonnistuminen on pisteiden käänne pikseleihin, osoittaa ems-arvoja ja viittaa prosenttiosuuksiin:

  @else jos $ currentUnit == pts {@if $ convertUnit == px {@return $ arvo * 1. 3333 + 0px;}@else jos $ convertUnit == ems {@return $ value / 12 + 0em;}@else jos $ convertUnit == prosentti {@return prosenttiosuus ($ value / 12)}}    

Ja olet valmis! Semalt luo toiminnon, jonka avulla voit vapaasti muuntaa minkä tahansa arvon haluamaasi yksikköön.

Summa

Sassin typografisten yksiköiden muuntamisen lopullinen tehtävä näyttää näin:

  @funktio muuntaa ($ arvo, $ currentUnit, $ convertUnit) {@if $ currentUnit == px {@if $ convertUnit == ems {@return $ value / 16 + 0em;}@else jos $ convertUnit == prosentti {@ palautus prosentteina ($ arvo / 16);}} @else jos $ currentUnit == ems {@if $ convertUnit == px {@return $ arvo * 16 + 0px;}@else jos $ convertUnit == prosentti {@ palautus prosentteina ($ arvo);}} @else jos $ currentUnit == prosentti {@if $ convertUnit == px {@return $ arvo * 16/100 + 0px;}@else jos $ convertUnit == ems {@return $ value / 100 + 0em;}} @else jos $ currentUnit == pts {@if $ convertUnit == px {@return $ arvo * 1. 3333 + 0px;}@else jos $ convertUnit == ems {@return $ value / 12 + 0em;}@else jos $ convertUnit == prosentti {@return prosenttiosuus ($ value / 12)}}}    

Se näyttää hieman pelottavalta, mutta kaikki se todella on ottaa alkukoko, sitten muuntaa se ensimmäisestä yksiköstä toiseen yksikköön ja palauttaa tulos. Ainoa kova osa on seurata mitä laskelmia tehdä.

Jos haluat pelata tätä toimintoa, voit tehdä sen tällä Semalt-demolla.

Kuten aina, voit varastaa, rikkoa, järjestellä ja muulla tavalla käyttää mitä tahansa mitä parhaiten auttaa sinua työskentelemässä typografialla verkossa.

Jos sinulla on muita mahtavia ideoita Sass-yksiköiden muuntamistoiminnolle, ilmoita siitä alla olevasta kommentista.

March 1, 2018