Siirry sisältöön

PX-REM-EM-muunnin – Ilmainen CSS-yksikkömuunnin

Muunna pikselit REM- ja EM-yksiköiksi välittömästi. Ilmainen CSS-yksikkömuunnin responsiiviseen web-suunnitteluun. Tukee mukautettuja fonttikokoja ja reaaliaikaisia laskelmia tarkkoja tuloksia varten.

PX-, REM- ja EM-yksikkömuunnin

Muunna pikseleiden (PX), juuri-em:in (REM) ja em:in (EM) välillä. Syötä arvo mihin tahansa kenttään nähdäksesi vastaavat arvot muissa yksiköissä.

px
px
px
rem
em
Visualisointi ei ole käytettävissä negatiivisille tai nolla-arvoille

Muunnoskaavat

  • PX to REM: arvo pikseleinä ÷ juuri-fonttikoko
  • PX to EM: arvo pikseleinä ÷ yläelementin fonttikoko
  • REM to PX: arvo rem:einä × juuri-fonttikoko
  • EM to PX: arvo em:einä × yläelementin fonttikoko
Latauslaskuri...
📚

Dokumentaatio

PX, REM ja EM -yksikkömuunnin: Keskeiset CSS-yksiköt selitettynä

Miksi CSS-yksikkömuunnos on tärkeää modernissa web-kehityksessä

Kun rakennat responsiivisia verkkosivustoja, yksi yleisimmistä haasteista on muuntaa suunnitteluvaatimukset joustaviksi ja skaalautuviksi CSS-yksiköiksi. Olet varmasti nähnyt Figma-suunnitelman, jossa lukee "padding: 24px" ja miettinyt, pitäisikö se säilyttää pikseinä vai muuntaa rem-yksiköiksi. Tämä päätös vaikuttaa kaikkeen saavutettavuudesta siihen, miten asettelu reagoi, kun käyttäjät muuttavat selaimen fonttikokoa.

Tämä PX, REM ja EM -yksikkömuunnin auttaa sinua nopeasti kääntämään näitä kolmea perustavanlaatuista CSS-yksikköä. Pikselit antavat tarkan hallinnan - loistavat reunoille ja yksityiskohdille. REM-yksiköt skaalautuvat juurifonttikoon mukaan, tehden niistä ihanteellisia yhtenäiselle välistykselle ja typografialle koko sivustolla. EM-yksiköt skaalautuvat suhteessa vanhempaan elementtiinsä, täydellisiä itsesäilyvien komponenttien luomiseen, jotka säilyttävät mittasuhteet.

Haasteellista on muuntaa näitä yksiköitä ottaen huomioon fonttikoot, jotka vaihtelevat juurielementistä yksittäisiin komponentteihin. Yleinen virhe, jonka kehittäjät tekevät, on käyttää kaikkialla pikseleitä, koska se vaikuttaa yksinkertaisemmalta. Vaikka tämä toimii aluksi, se luo saavutettavuusongelmia, kun käyttäjät suurentavat selaimen oletusfonttikokoa - asettelu ei mukaudu suhteellisesti.

CSS-yksiköiden ymmärtäminen: PX, REM ja EM

Mitä ovat Pikselit (PX)?

Pikselit (PX) ovat suoraviivaisin CSS-yksikkö—mitä määrität, se on mitä saat. CSS-pikseli on viitesuure, joka ei välttämättä vastaa fyysistä näytön pikseliä (erityisesti teräväpiirtoisilla näytöillä kuten Retina-näytöillä). Ne tarjoavat kiinteän koon, joka ei muutu fonttikoon tai elementtien vanhempien perusteella.

1.element {
2  width: 200px;
3  font-size: 16px;
4  margin: 10px;
5}
6

Milloin pikselit toimivat hyvin:

  • Reunaviivat ja jakajat (1px tai 2px reunaviivat pysyvät terävinä)
  • Pienet, tarkat yksityiskohdat, joita ei pitäisi skaalata
  • Kiinteälevyiset säiliöt, kun tarvitset tarkat mitat
  • Kuvakekoot työskenneltäessä pikselin tarkkuudella sprite-arkistojen kanssa

Haaste: Pikselit eivät kunnioita käyttäjän asetuksia. Jos joku suurentaa selaimen oletusfonttikokoa 16px:stä 20px:iin parempaa luettavuutta varten, pikseleihin perustuvat asettelut pysyvät muuttumattomina, mikä saattaa aiheuttaa tekstin ylivuotoa tai ahtaita välejä.

Mitä ovat REM-yksiköt?

REM (root em) -yksiköt skaalautuvat juurielementtinsä fonttikoon perusteella—yleensä <html>-elementti. Useimmat selaimet käyttävät oletuksena 16px:ää, joten 1rem vastaa 16px:ää, ellei juurifonttikokoa muuteta. Tässä on se, mikä tekee REM-yksiköistä tehokkaat: ne tarjoavat johdonmukaisen, ennustettavan skaalauksen koko sivustollasi.

1html {
2  font-size: 16px; /* Oletus useimmissa selaimissa */
3}
4
5.element {
6  width: 12.5rem; /* Vastaa 200px:ää oletusarvoisella juurifonttitasolla */
7  font-size: 1rem; /* Vastaa 16px:ää */
8  margin: 0.625rem; /* Vastaa 10px:ää */
9}
10

Miksi kehittäjät suosivat REM-yksiköitä:

  • Johdonmukainen skaalaus: Muuta juurifonttikokoa, ja kaikki skaalautuu suhteellisesti
  • Saavutettavuusvaatimukset: Kun käyttäjät mukauttavat selaimen fonttikokoa, REM-pohjaiset asettelut mukautuvat automaattisesti
  • Helpompi ylläpito: Päivitä välilyönnin arvot yhdessä paikassa sen sijaan, että etsisit pikseliarvoja
  • Ei kasautumisongelmia: Toisin kuin EM-yksiköt, REM-yksiköt eivät kasaudu sisäkkäisissä elementeissä

Pro-vinkki kokemuksesta: Aseta juurifonttikooksi 62.5% (mikä tekee 1rem:stä 10px:ä oletusarvoisella 16px:n pohjalla). Tämä tekee laskemisesta helpompaa—1.6rem = 16px, 2.4rem = 24px. Muista vain asettaa body-fonttikooksi takaisin 1.6rem, jotta teksti oletusarvoisesti on 16px. W3C:n CSS-arvojen ja -yksiköiden määritelmän mukaan REM-yksiköt viittaavat aina juurielementtiin, mikä tekee niistä ennustettavia monimutkaisissa asetteluissa.

Mitä ovat EM-yksiköt?

EM-yksiköt skaalautuvat suhteessa vanhempansa fonttikokoon, mikä tekee niistä kontekstitietoisia. Tämä käyttäytyminen poikkeaa REM-yksiköistä, jotka aina viittaavat juureen. Nimi "em" tulee typografiasta—historiallisesti se tarkoitti tietyn kirjaintyypin suuraakkosten "M":n leveyttä.

1.parent {
2  font-size: 20px;
3}
4
5.child {
6  font-size: 0.8em; /* Vastaa 16px:ää (20px × 0.8) */
7  margin: 0.5em; /* Vastaa 8px:ää (16px × 0.5) */
8}
9

Milloin EM-yksiköt loistavat:

  • Komponenttipohjainen suunnittelu: Sisäänveto ja marginaalit, jotka skaalautuvat fonttikoon mukaan
  • Typografia: Rivinvälit toimivat hyvin ilman yksiköitä tai em-yksiköillä (kuten line-height: 1.5em)
  • Itseriittoiset moduulit: Painikkeet tai kortit, jotka säilyttävät mittasuhteet fonttikoon muuttuessa
  • Media-kyselyt: MDN Web Docs mukaan EM-yksiköt media-kyselyissä viittaavat selaimen oletusfonttikokoon, eivät vanhempaan elementtiin

Kasautumisansa: Tässä kohtaa kehittäjät usein kompastuvat. EM-yksiköt kaskadoituvat sisäkkäisissä elementeissä, mikä voi aiheuttaa odottamattomia tuloksia:

1.level-1 { font-size: 1.2em; }  /* 19.2px, jos vanhempi on 16px */
2.level-2 { font-size: 1.2em; }  /* 23.04px (19.2px × 1.2) */
3.level-3 { font-size: 1.2em; }  /* 27.65px (23.04px × 1.2) */
4

Kolmen sisäkkäisen tason jälkeen tekstisi on kasvanut 73% alkuperäisestä 20%:n sijaan. Tämä on syy, miksi monet kehittäjät siirtyivät REM-yksiköihin typografiassa, kun selaintuki parani.

Muunnoskaavat ja -laskut

Ymmärtäminen matemaattiset suhteet PX-, REM- ja EM-yksiköiden välillä on ratkaisevan tärkeää tarkkoja muunnoksia varten. Tässä ovat muuntimessa käytetyt kaavat:

PX-muunnos REM-yksiköiksi

Muuntaaksesi pikseleitä REM-yksiköiksi, jaa pikselin arvo juurifonttikoolla:

REM=PXrootFontSizeREM = \frac{PX}{rootFontSize}

Esimerkiksi oletusarvoisella juurifonttkoolla 16px:

  • 16px = 1rem
  • 24px = 1.5rem
  • 8px = 0.5rem

PX-muunnos EM-yksiköiksi

Muuntaaksesi pikseleitä EM-yksiköiksi, jaa pikselin arvo elementtivanhemman fonttkoolla:

EM=PXparentFontSizeEM = \frac{PX}{parentFontSize}

Esimerkiksi elementtivanhemman fonttkoolla 16px:

  • 16px = 1em
  • 24px = 1.5em
  • 8px = 0.5em

REM-muunnos PX-yksiköiksi

Muuntaaksesi REM-yksiköt pikseleiksi, kerro REM-arvo juurifonttkoolla:

PX=REM×rootFontSizePX = REM \times rootFontSize

Esimerkiksi oletusarvoisella juurifonttkoolla 16px:

  • 1rem = 16px
  • 1.5rem = 24px
  • 0.5rem = 8px

EM-muunnos PX-yksiköiksi

Muuntaaksesi EM-yksiköt pikseleiksi, kerro EM-arvo elementtivanhemman fonttkoolla:

PX=EM×parentFontSizePX = EM \times parentFontSize

Esimerkiksi elementtivanhemman fonttkoolla 16px:

  • 1em = 16px
  • 1.5em = 24px
  • 0.5em = 8px

REM-muunnos EM-yksiköiksi

Muuntaaksesi REM-yksiköt EM-yksiköiksi, sinun täytyy ottaa huomioon sekä juurifonttikoko että elementtivanhemman fonttikoko:

EM=REM×rootFontSizeparentFontSizeEM = REM \times \frac{rootFontSize}{parentFontSize}

Jos sekä juuri- että elementtivanhemman fonttikoot ovat samat (esim. 16px), niin 1rem = 1em.

EM-muunnos REM-yksiköiksi

Muuntaaksesi EM-yksiköt REM-yksiköiksi, käytä seuraavaa kaavaa:

REM=EM×parentFontSizerootFontSizeREM = EM \times \frac{parentFontSize}{rootFontSize}

Jälleen, jos molemmat fonttikoot ovat yhtä suuret, niin 1em = 1rem.

Kuinka käyttää PX:stä REM:iin ja EM:iin muuntavaa yksikkömuunninta

Tarkkuuden saaminen muunnoksiin on suoraviivaista tällä työkalulla. Avain on ymmärtää, mitä fonttikokoja käyttää tietyssä tilanteessa.

Pikaopas

  1. Syötä arvo mihin tahansa kenttään—pikseleissä, REM:issä tai EM:issä
  2. Tarkista tulokset välittömästi muissa kahdessa yksikössä
  3. Säädä fonttikokoja vastaamaan projektisi tarpeita:
    • Juurifonttikoko: Mitä olet asettanut <html>-elementtiin (yleensä 16px)
    • Vanhemman fonttikoko: Tietyn elementin vanhemman fonttikoko (myös tyypillisesti 16px)
  4. Kopioi tarvitsemasi arvo käyttäen kopiointipainiketta

Tarkkuuden saaminen projektillesi

Muunnin käyttää oletuksena 16px:ää sekä juuri- että vanhemman fonttikokona, koska se on selainstandardi. Mutta tärkeintä on: projektisi saattaa käyttää eri arvoja.

Juurifonttikoon löytäminen: Avaa selaimen kehitystyökalut, tarkastele <html>-elementtiä ja tarkista laskettu fonttikoko. Jos olet asettanut html { font-size: 62.5%; }, juurifonttikokosi on 10px (62.5% 16px:stä).

Vanhemman fonttikoon löytäminen: EM-muunnoksia varten tarvitset sen elementin vanhemman fonttikoon, johon tyyliä sovelletaan. Tarkastele kyseistä elementtiä kehitystyökaluissa nähdäksesi sen lasketun fonttikoon. Jos vanhemmalla on font-size: 1.2rem ja juuresi on 16px, aseta vanhemman fonttikooksi 19.2px tarkkoja EM-laskelmia varten.

Yleiset muunnostilanteet

Suunnittelusta koodiin: Figma-tiedostosi näyttää padding: 24px. Haluat käyttää REM-yksiköitä paremman saavutettavuuden vuoksi. Syötä 24 PX-kenttään, ja näet sen olevan 1.5rem (olettaen 16px:n juuren).

Painikkomponentin rakentaminen: Haluat padding-arvon skaalautuvan painikkeen fonttikoon mukaan. Jos painikkeella on font-size: 1.125rem (18px), aseta vanhemman fonttikooksi 18, syötä haluamasi pikselipadding ja käytä tuloksena saatavaa EM-arvoa.

Responsiivinen typografia: Luot otsikon, joka on 32px:ä työpöydällä. Syötä 32px nähdäksesi sen olevan 2rem, joka skaalautuu asianmukaisesti käyttäjien selaimen fonttikokoa muutettaessa.

Todelliset CSS-yksikkömuunnoksen käyttötapaukset

Kaavojen tunteminen on yhtä, mutta niiden tehokas soveltaminen tuotantokoodiin on toinen asia. Tässä yksikkömuunnos tekee todellisen eron projekteissasi.

Suunnittelutiedostojen muuntaminen responsiiviseksi CSS:ksi

Saat Figma-suunnitelman, jossa kaikki on määritelty pikseleissä. Kortti-komponentti näyttää:

  • Sisäänveto: 24px
  • Otsikon fonttikoko: 28px
  • Tekstin fonttikoko: 16px
  • Alamarginaali: 40px

Muuntamalla nämä REM-yksiköiksi (olettaen 16px:n juurifonttikoon) saat:

1.card {
2  padding: 1.5rem;        /* 24px → 1.5rem */
3  margin-bottom: 2.5rem;  /* 40px → 2.5rem */
4}
5
6.card__heading {
7  font-size: 1.75rem;     /* 28px → 1.75rem */
8}
9
10.card__body {
11  font-size: 1rem;        /* 16px → 1rem */
12}
13

Mikä on hyöty? Kun käyttäjä, jolla on näkövamma, suurentaa selaimen oletusfonttikokoa 16px:stä 20px:iin, korttisi skaalautuu suhteellisesti. Sisäänveto, marginaalit ja teksti kasvavat 25%, säilyttäen suunnitelman visuaalisen tasapainon. Pikseliarvoilla vain teksti kasvaisi, mikä rikkoisi asettelun.

Saavutettavien komponenttikirjastojen rakentaminen

Komponenttikirjastojen painikkeiden tulee toimia minkä kokoisina tahansa - pieni, keskikokoinen, suuri. EM-yksiköiden käyttäminen sisäänvedossa luo itsestään skaalautuvan komponentin:

1.button {
2  /* Perus-painike 16px:n fonttikokoisena */
3  font-size: 1rem;
4  padding: 0.75em 1.5em;  /* 12px 24px peruskoossa */
5  border: 1px solid currentColor;
6  border-radius: 0.25em;
7}
8
9.button--large {
10  font-size: 1.25rem;  /* 20px */
11  /* Sisäänveto muuttuu automaattisesti 15px 30px:ksi (0.75em × 20px) */
12}
13
14.button--small {
15  font-size: 0.875rem;  /* 14px */
16  /* Sisäänveto muuttuu automaattisesti 10.5px 21px:ksi (0.75em × 14px) */
17}
18

Sisäänveto skaalautuu automaattisesti, koska se on määritelty EM-yksiköinä suhteessa painikkeen fonttikokoon. Määrittelet mittasuhteet kerran, ja ne toimivat kaikissa kokovariaatioissa. Tämä lähestymistapa, jota suositellaan modernissa CSS-arkkitehtuurissa, vähentää koodia ja ylläpitää visuaalista johdonmukaisuutta.

(Käännös jatkuu samalla tavalla koko dokumentille)

Kuinka CSS-yksiköt kehittyivät: Kiinteistä joustaviin

Siirtyminen pikseleistä suhteellisiin yksiköihin heijastaa webin matkaa staattisista dokumenteista responsiivisiin sovelluksiin. Tämän historian ymmärtäminen selittää, miksi muunnamme yksiköitä nykyään.

Pikseli-tarkka aikakausi (1990-2000-luvut)

Varhaisia verkkosivustoja suunniteltiin tietyille näyttöleveyksille—640px, sitten 800px, sitten 1024px. CSS-asettelut käyttivät yksinomaan pikseleitä, koska se oli painosuunnittelijoille tuttua. Sivustot näyttivät identtisiltä eri selaimissa (kun ne toimivat), mutta ne hajosivat täysin odottamattomilla näyttökokoilla. Verkkoa käsiteltiin kuin painotuotetta: kiinteänä, hallittavana, ennustettavana.

EM-yksiköt olivat olemassa CSS-spesifikaatiossa, perittyinä typografiasta, mutta useimmat kehittäjät välttivät niitä. Kertaantuvat ominaisuudet olivat hämmentäviä, eikä mobiililaitteita ollut pakottamassa meitä ajattelemaan joustavasti.

Mobiili-herätys (2007-2010)

iPhone muutti kaiken. Äkillisesti merkittävä osa liikenteestä tuli 320px-leveiltä näytöiltä. Nipistä-zoomaus auttoi, mutta 1024px-työpöytäkoneille suunnitellut verkkosivustot olivat tuskallisia mobiilissa.

Ethan Marcotten 2010 artikkeli responsiivisesta web-suunnittelusta kirkasti uuden lähestymistavan: joustavat ruudukot, joustavat kuvat ja mediakyselyt. Suhteellisista yksiköistä tuli välttämättömiä, ei valinnaisia. Mutta EM-yksiköiden kertaantuvat ominaisuudet aiheuttivat vikoja monimutkaisissa asetteluissa.

REM-yksiköt pelastavat päivän (2010-Nykyhetki)

CSS3 esitteli REM-yksikön noin 2010, ratkaisten EM-yksiköiden suurimman ongelman: kertaantuvuuden. REM antoi meille suhteellisen skaalauksen ilman perintäkompleksisuutta. Internet Explorer 9 lisäsi tuen 2011, ja vuoteen 2015 mennessä REM-yksiköt olivat valtavirtaa.

Nykyään parhaat käytännöt yhdistävät yksiköitä strategisesti. REM typografiaan ja välistykseen. EM komponenttien sisäisiin suhteisiin. Pikselit hienosäätöön. Modernit CSS-funktiot kuten clamp() sekoittavat näitä yksiköitä dynaamisesti, luoden asetteluja, jotka mukautuvat mihin tahansa kontekstiin.

Tämä kehityskulku—jäykistä pikseleistä joustaviin suhteellisiin yksiköihin—heijastaa käyttäjäodotusten muutosta "verkkosivustojen pitäisi näyttää samalta kaikkialla" kohti "verkkosivustojen pitäisi toimia hyvin kaikkialla".

Yksikkömuunnoksen koodiesimerkit

JavaScript-yksikkömuuntimet

1// Muunna PX, REM ja EM-yksiköiden välillä
2const pxToRem = (px, rootFontSize = 16) => {
3  return px / rootFontSize;
4};
5
6const pxToEm = (px, parentFontSize = 16) => {
7  return px / parentFontSize;
8};
9
10const remToPx = (rem, rootFontSize = 16) => {
11  return rem * rootFontSize;
12};
13
14const emToPx = (em, parentFontSize = 16) => {
15  return em * parentFontSize;
16};
17
18const remToEm = (rem, rootFontSize = 16, parentFontSize = 16) => {
19  return rem * (rootFontSize / parentFontSize);
20};
21
22const emToRem = (em, parentFontSize = 16, rootFontSize = 16) => {
23  return em * (parentFontSize / rootFontSize);
24};
25
26// Käyttöesimerkki
27console.log(pxToRem(24));  // 1.5
28console.log(remToPx(1.5)); // 24
29console.log(pxToEm(24, 24)); // 1
30console.log(remToEm(2, 16, 32)); // 1
31

CSS-mukautetut ominaisuudet yksikkömuunnokseen

1:root {
2  /* Perusfonttikoot */
3  --root-font-size: 16px;
4  --base-font-size: var(--root-font-size);
5  
6  /* Yleiset pikseliarvot muunnettuina REM-yksiköihin */
7  --space-4px: 0.25rem;
8  --space-8px: 0.5rem;
9  --space-16px: 1rem;
10  --space-24px: 1.5rem;
11  --space-32px: 2rem;
12  --space-48px: 3rem;
13  
14  /* Typografinen asteikko */
15  --text-xs: 0.75rem;    /* 12px */
16  --text-sm: 0.875rem;   /* 14px */
17  --text-base: 1rem;     /* 16px */
18  --text-lg: 1.125rem;   /* 18px */
19  --text-xl: 1.25rem;    /* 20px */
20  --text-2xl: 1.5rem;    /* 24px */
21}
22
23/* Käyttöesimerkki */
24.card {
25  padding: var(--space-16px);
26  margin-bottom: var(--space-24px);
27  font-size: var(--text-base);
28}
29
30.card-title {
31  font-size: var(--text-xl);
32  margin-bottom: var(--space-8px);
33}
34

SCSS-mixinit yksikkömuunnokseen

1// SCSS-funktiot yksikkömuunnokseen
2@function px-to-rem($px, $root-font-size: 16) {
3  @return ($px / $root-font-size) * 1rem;
4}
5
6@function px-to-em($px, $parent-font-size: 16) {
7  @return ($px / $parent-font-size) * 1em;
8}
9
10@function rem-to-px($rem, $root-font-size: 16) {
11  @return $rem * $root-font-size * 1px;
12}
13
14// Käyttöesimerkki
15.element {
16  padding: px-to-rem(20);
17  margin: px-to-rem(32);
18  font-size: px-to-rem(18);
19  
20  .nested {
21    // Käyttäen vanhemman fonttikokoa (18px) em-muunnokseen
22    padding: px-to-em(16, 18);
23    margin-bottom: px-to-em(24, 18);
24  }
25}
26

Python-yksikkömuunnin

1def px_to_rem(px, root_font_size=16):
2    """Muunna pikselit REM-yksiköiksi"""
3    return px / root_font_size
4
5def rem_to_px(rem, root_font_size=16):
6    """Muunna REM-yksiköt pikseleiksi"""
7    return rem * root_font_size
8
9def px_to_em(px, parent_font_size=16):
10    """Muunna pikselit EM-yksiköiksi"""
11    return px / parent_font_size
12
13def em_to_px(em, parent_font_size=16):
14    """Muunna EM-yksiköt pikseleiksi"""
15    return em * parent_font_size
16
17# Käyttöesimerkki
18print(f"16px = {px_to_rem(16)}rem")  # 16px = 1.0rem
19print(f"2rem = {rem_to_px(2)}px")    # 2rem = 32px
20print(f"24px = {px_to_em(24, 16)}em")  # 24px = 1.5em
21

Yleiset virheet CSS-yksiköiden muuntamisessa

Käytyäni läpi satoja koodikantoja olen huomannut näiden virheiden toistuvan jatkuvasti. Niiden välttäminen säästää sinulta vianjäljitysaikaa.

Virhe 1: Ei huomioida mukautettuja juurifontinkokoja

Ongelma: Muunnat 24px arvoksi 1.5rem olettaen oletusarvoisen 16px:n juurifontinkoon, mutta projektissasi on html { font-size: 62.5%; }, mikä tekee juuresta 10px. Elementtisi päätyy 15px:iin 24px:n sijaan.

Korjaus: Tarkista aina projektisi todellinen juurifontinkoko ennen muuntamista. Aseta muuntajan juurifontinkoko vastaamaan projektisi todellisuutta.

Virhe 2: EM-yksiköiden käyttö typografiassa sisäkkäisissä komponenteissa

Ongelma: Rakennat kortti-komponentin font-size: 1.2em otsikoille. Toimii hyvin. Sitten asetat kortin toisen kortin sisään, ja äkkiä sisemmän kortin otsikon koko on 1.44em (1.2 × 1.2), ei 1.2em.

Korjaus: Käytä REM-yksiköitä typografiassa, ellei sinulla ole erityistä syytä halutulle kaskadimaiselle käyttäytymiselle. Varaa EM-yksiköt välistykselle, joka skaalautuu paikallisen fontinkoon mukaan.

Virhe 3: Reunaviivojen muuntaminen REM-yksiköihin

Ongelma: Muunnat border: 1px arvoksi border: 0.0625rem yhdenmukaisuuden vuoksi. Kun käyttäjät zoomaavat tai muuttavat fontinkokoa, reunaviivasi muuttuvat paksuksi ja rumaksi.

Korjaus: Pidä reunaviivat pikseleissä. Alle pikselin reunaviivat (0.5px) ovat selaintuessa epäjohdonmukaisia, eivätkä reunaviivat yleensä tarvitse skaalautua tekstin mukaan.

Virhe 4: Mediakyselyiden yksiköiden käyttäjäasetusten unohtaminen

Ongelma: Kirjoitat @media (min-width: 768px) tablettitason katkaisupisteeksi. Käyttäjät, jotka ovat asettaneet suuremman oletusfonttikoon, eivät saa tablettitason asettelua, vaikka pitäisi.

Korjaus: Käytä EM- tai REM-yksiköitä mediakyselyissä: @media (min-width: 48em). Tämä kunnioittaa käyttäjän fonttimieltymyksiä, kuten MDN:n responsiivisen suunnittelun dokumentaatio suosittelee.

Virhe 5: Laskentamenetelmien sekoittaminen

Ongelma: Sass käyttää yhtä laskentamenetelmää, JavaScript toista, ja oma ajattelusi kolmatta. Tulokset eivät täsmää, mikä aiheuttaa pikselintyöntöturhautumista.

Korjaus: Käytä tätä muuntajaa totuuden lähteenä. Lisää se kirjanmerkkeihin, viittaa siihen koodikatselmoinnin aikana ja varmista, että koko tiimisi käyttää samaa muuntomenetelmää.

Usein Kysytyt Kysymykset

Mikä on ero REM- ja EM-yksiköiden välillä?

Viitepiste eroaa täysin. REM-yksiköt katsovat aina juurielementin <html> fonttikokoa—riippumatta siitä, kuinka syvälle sisäkkäin elementtisi ovat, 1rem vastaa samaa laskettua arvoa. EM-yksiköt katsovat välittömän vanhempansa fonttikokoa, mikä luo kaskadimaisen vaikutuksen.

Ajattele asiaa näin: jos sisäkkäin on kolme <div>-elementtiä, joilla jokaisella on font-size: 1.2em, sisimmän divin teksti on merkittävästi suurempi kuin odotit, koska jokainen taso kertaa edellisen. font-size: 1.2rem jokaisella tasolla kaikilla kolmella divilla on identtiset fonttikoot, koska ne kaikki viittaavat juureen.

Tämä on syy, miksi REM tuli suosituksi typografiassa, kun selaintuki parani—se poistaa perintäketjujen seuraamisen henkisen taakan.

Mikä CSS-yksikkö on paras responsiiviseen web-suunnitteluun?

Yksikään yksikkö ei voita jokaisessa tilanteessa. Parhaat responsiiviset suunnittelut yhdistävät yksiköitä strategisesti:

Käytä REM:iä: Globaaleihin välistyksiin, typografian skaaloihin, komponenttien väleihin ja kaikkiin mittauksiin, jotka tulisi skaalata käyttäjän fonttiasetuksilla

Käytä EM:iä: Komponentin sisäisiin välistyksiin (painikkeen padding, kortin raot), mediakyselyihin (kunnioittavat käyttäjän asetuksia) ja elementteihin, jotka tulisi skaalata paikallisessa kontekstissaan

Käytä pikseleitä: 1px-reunaviivat (näyttävät teräviltä), varjostukset (hienojakoiset varjot vaativat tarkkuutta) ja SVG-viivanpaksuudet

Käytä prosentteja tai näkymäyksiköitä: Säiliöiden leveydet, koko korkeuden osiot

Olen nähnyt koodipohjia, jotka yrittävät käyttää yhtä yksikköä kaikkialla—se aina luo ylläpidollisia haasteita. Käytä kutakin yksikköä siellä, missä se tarjoaa eniten hyötyä.

(Käännös jatkuu samalla tavalla koko dokumentille)

Viitteet ja lisälukemisto

  1. "CSS Values and Units Module Level 3." W3C-suositus. https://www.w3.org/TR/css-values-3/

  2. Marcotte, Ethan. "Responsiivinen web-suunnittelu." A List Apart, 25. toukokuuta 2010. https://alistapart.com/article/responsive-web-design/

  3. Rutter, Richard. "Typografisen tyylin elementit sovellettuna webiin." http://webtypography.net/

  4. "CSS-yksiköt." MDN Web Docs. https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units

  5. "CSS-pikselit vs. fyysiset pikselit." Stack Overflow -dokumentaatio. https://stackoverflow.com/questions/8785643/what-exactly-is-the-difference-between-css-pixels-and-device-pixels

  6. Coyier, Chris. "CSS:n pituudet." CSS-Tricks. https://css-tricks.com/the-lengths-of-css/

  7. "CSS-mukautettujen ominaisuuksien (muuttujien) käyttö." MDN Web Docs. https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties

  8. "rem-yksiköiden ymmärtäminen ja käyttö CSS:ssä." SitePoint. https://www.sitepoint.com/understanding-and-using-rem-units-in-css/

Aloita CSS-yksiköiden muuntaminen tarkasti

Manuaalinen CSS-yksikkömuunnos on tylsää ja virhealtista. Teet laskutoimituksia mielessäsi, epäilet laskelmia ja toivot, että fonttikoot ovat oikein. Tämä PX-REM-EM-muunnin poistaa tämän kitkan.

Syötä pikseliarvosi suunnittelutiedostoista, säädä fonttikokoja vastaamaan projektisi määrityksiä ja saa tarkat REM- ja EM-arvot välittömästi. Kopioi ne suoraan koodiin. Olit sitten toteuttamassa uutta suunnittelujärjestelmää, mukauttamassa olemassa olevaa koodipohjaa suhteellisilla yksiköillä tai vain yrittämässä ymmärtää näiden yksiköiden suhdetta, muunnin hoitaa matematiikan, jotta voit keskittyä rakentamiseen.

Saavutettavuusvaatimusten mukaisilla sivustoilla työskenteleville kehittäjille tämä työkalu auttaa varmistamaan, että asettelusi skaalautuvat oikein, kun käyttäjät muuttavat fonttiasetuksiaan - vaatimus WCAG 2.1 Taso AA:ssa. Komponenttikirjastoja rakentaville se selventää, mitkä EM-arvot luovat haluamasi mittasuhteet. Kaikille, jotka kääntävät Figma-suunnitelmia tuotannon CSS:ksi, se nopeuttaa muunnostyönkulkua merkittävästi.

Kaavat perustuvat W3C CSS-arvojen ja -yksiköiden moduulin määritykseen, mikä varmistaa, että muunnokset vastaavat tarkalleen sitä, miten selaimet laskevat nämä arvot.