Μετατροπή pixel (px) σε rem

Τελευταίος έλεγχος περιεχομένου:

Με την προεπιλεγμένη βάση των 16 pixel, τα 24 px είναι 1,5 rem και τα 14 px είναι 0,875 rem. Ο υπολογισμός είναι μία διαίρεση: pixel διά το βασικό μέγεθος γραμματοσειράς. Γράψτε τη διάσταση από το σχέδιο στο πρώτο πεδίο και, αν η σελίδα σας έχει άλλη βάση, βάλτε τη στο Βασικό font-size.

px
rem
σε

Τι είναι το rem και γιατί οι διαστάσεις σε pixel γράφονται σε rem;

Τα αρχεία σχεδίασης δίνουν τις διαστάσεις σε pixel: τίτλος 28 pixel, απόσταση ανάμεσα σε δύο ενότητες 32 pixel. Το pixel του CSS είναι σταθερή μονάδα, που το πρότυπο την ορίζει ως το 1/96 της ίντσας[1]. Γι’ αυτό ο μετατροπέας px σε ίντσες μετρά 96 pixel σε μια ίντσα στην προεπιλεγμένη του ανάλυση. Το rem είναι σχετική μονάδα: ένα rem ισούται με το υπολογισμένο μέγεθος γραμματοσειράς του στοιχείου html, του ριζικού στοιχείου της σελίδας[1].

Επειδή το rem υπολογίζεται πάντα από το ριζικό στοιχείο, δεν πολλαπλασιάζεται σε ένθετα στοιχεία όπως το em, που το μετατρέπει ο μετατροπέας em σε px. Για να μετατρέψετε οποιαδήποτε διάσταση από pixel σε rem, αρκεί να ξέρετε το μέγεθος γραμματοσειράς του html. Μετά τη μετατροπή η διάσταση ακολουθεί τη ρύθμιση του αναγνώστη: ένας τίτλος 24 pixel μένει 24 pixel με την προεπιλογή και γίνεται 30 pixel για τον αναγνώστη που διάλεξε Μεγάλο στο Chrome ή Μεγάλο μέγεθος γραμματοσειράς στο Edge.

Κώδικας CSS με τον κανόνα .hero σε μέγεθος γραμματοσειράς 60px και κανόνα τίτλων σε 220px
Και τα δύο μεγέθη γραμματοσειράς της φωτογραφίας είναι γραμμένα σε pixel: 60px στον κανόνα .hero και 220px στον κανόνα που ενώνει τις κλάσεις .heading και .sub-heading. Με βάση 16 pixel το πρώτο γίνεται 3.75rem και το δεύτερο 13.75rem, και έπειτα μεγαλώνουν και τα δύο μαζί με τη ρύθμιση του αναγνώστη. Φωτογραφία: Ferenc Almasi, Unsplash.

Πόσα rem είναι τα 24 px;

Τα 24 pixel ισούνται με 1,5 rem με την προεπιλεγμένη βάση των 16 pixel. Ο τύπος είναι μία διαίρεση: rem = pixel ÷ βασικό μέγεθος γραμματοσειράς. Κάθε 16 pixel κάνουν 1 rem και ένα pixel είναι 0,0625 rem. Έτσι τα 8 pixel είναι 0,5 rem. Τα 32 pixel είναι 2 rem.

Αν το φύλλο στυλ χρησιμοποιεί άλλη βάση, διαιρέστε με αυτήν. Με την τεχνική 62,5% η βάση γίνεται 10 pixel και τα 24 pixel ισούνται με 2,4 rem. Με βάση 20 pixel τα 24 pixel είναι 1,2 rem. Γράψτε τη βάση στο τρίτο πεδίο και ο μετατροπέας θα σας δώσει την τιμή που γράφετε στο φύλλο στυλ.

Ορισμένες διαστάσεις δεν διαιρούνται ακριβώς με το 16, γι’ αυτό το αποτέλεσμα φαίνεται με έως τέσσερα δεκαδικά ψηφία. Τα 13 pixel, για παράδειγμα, είναι 0,8125 rem, και το CSS δέχεται αυτόν τον αριθμό όπως είναι. Το πεδίο αποτελέσματος δείχνει κόμμα, ενώ το κουμπί Αντιγραφή αποτελέσματος αντιγράφει το 0.8125 με τελεία, οπότε το επικολλάτε κατευθείαν και γράφετε από πίσω rem.

Με ποιον τύπο μετατρέπονται τα pixel σε rem;

Ο τύπος είναι rem = px ÷ font-size, όπου font-size είναι το μέγεθος γραμματοσειράς του στοιχείου html. Πάρτε έναν τίτλο 28 pixel από το σχέδιο. Με βάση 16 pixel δίνει 28 ÷ 16 = 1,75, οπότε στο φύλλο στυλ γράφετε font-size: 1.75rem.

Οι διαστάσεις που διαιρούνται ακριβώς με το 4 δίνουν τιμή με έως δύο δεκαδικά ψηφία: τα 12 pixel, για παράδειγμα, είναι 0,75 rem. Οι υπόλοιπες ζυγές διαστάσεις δίνουν τρία δεκαδικά ψηφία, όπως τα 14 pixel, που είναι 0,875 rem, και οι μονές δίνουν τέσσερα, όπως τα 15 pixel, που είναι 0,9375 rem. Μια διάσταση όπως τα 13,5 pixel δίνει και πέμπτο δεκαδικό ψηφίο, γι’ αυτό το αποτέλεσμα στρογγυλοποιείται σε τέσσερα και γίνεται 0,8438 rem.

Για την αντίστροφη κατεύθυνση χρησιμοποιήστε τον μετατροπέα rem σε px. Αν χρειάζεστε τιμή σχετική με το μέγεθος γραμματοσειράς του γονικού στοιχείου, μετατρέψτε τη διάσταση στον μετατροπέα px σε em. Αν η διάσταση στο αρχείο είναι σε στιγμές (pt), μετατρέψτε την πρώτα σε pixel με τον μετατροπέα pt σε px.

Συμπιεσμένος κώδικας CSS με διαστάσεις σε pixel όπως font-size:13px και margin:16px 0 20px
Πρόκειται για συμπιεσμένο φύλλο στυλ, στο οποίο όλες οι διαστάσεις που φαίνονται είναι σε pixel. Με βάση 16 pixel το font-size:13px γίνεται 0.8125rem. Το margin:16px 0 20px γίνεται 1rem 0 1.25rem. Φωτογραφία: Rahul Mishra, Unsplash.

Πίνακας μετατροπής px σε rem σε τρία βασικά μεγέθη

Ο πίνακας περιέχει διαστάσεις από 1 έως 400 pixel. Η πρώτη στήλη είναι για την προεπιλεγμένη βάση των 16 pixel, η δεύτερη για την τεχνική 62,5% που κάνει τη βάση 10 pixel και η τρίτη για τη βάση των 20 pixel του αναγνώστη που διάλεξε Μεγάλο στο Chrome. Οι επισημασμένες γραμμές είναι τα 16 και τα 24 pixel.
Διάσταση σε pixelrem με βάση 16 pixelrem με βάση 10 pixelrem με βάση 20 pixel
1 px0,0625 rem0,1 rem0,05 rem
2 px0,125 rem0,2 rem0,1 rem
4 px0,25 rem0,4 rem0,2 rem
6 px0,375 rem0,6 rem0,3 rem
8 px0,5 rem0,8 rem0,4 rem
10 px0,625 rem1 rem0,5 rem
11 px0,6875 rem1,1 rem0,55 rem
12 px0,75 rem1,2 rem0,6 rem
13 px0,8125 rem1,3 rem0,65 rem
14 px0,875 rem1,4 rem0,7 rem
15 px0,9375 rem1,5 rem0,75 rem
16 px1 rem1,6 rem0,8 rem
17 px1,0625 rem1,7 rem0,85 rem
18 px1,125 rem1,8 rem0,9 rem
20 px1,25 rem2 rem1 rem
22 px1,375 rem2,2 rem1,1 rem
24 px1,5 rem2,4 rem1,2 rem
25 px1,5625 rem2,5 rem1,25 rem
26 px1,625 rem2,6 rem1,3 rem
28 px1,75 rem2,8 rem1,4 rem
30 px1,875 rem3 rem1,5 rem
32 px2 rem3,2 rem1,6 rem
36 px2,25 rem3,6 rem1,8 rem
40 px2,5 rem4 rem2 rem
44 px2,75 rem4,4 rem2,2 rem
48 px3 rem4,8 rem2,4 rem
50 px3,125 rem5 rem2,5 rem
56 px3,5 rem5,6 rem2,8 rem
60 px3,75 rem6 rem3 rem
64 px4 rem6,4 rem3,2 rem
72 px4,5 rem7,2 rem3,6 rem
80 px5 rem8 rem4 rem
96 px6 rem9,6 rem4,8 rem
100 px6,25 rem10 rem5 rem
120 px7,5 rem12 rem6 rem
128 px8 rem12,8 rem6,4 rem
160 px10 rem16 rem8 rem
192 px12 rem19,2 rem9,6 rem
200 px12,5 rem20 rem10 rem
256 px16 rem25,6 rem12,8 rem
320 px20 rem32 rem16 rem
400 px25 rem40 rem20 rem
Κάθε κελί το υπολόγισε ο μετατροπέας διαιρώντας τη διάσταση σε pixel με τη βάση και το έγραψε με έως τέσσερα δεκαδικά ψηφία, όπως το πεδίο αποτελέσματος.

Πώς γράφονται σε rem γραμμές από ένα φύλλο στυλ;

Κάθε γραμμή είναι γραμμένη σε pixel, όπως έρχεται από το σχέδιο, και δίπλα της βρίσκεται η ίδια τιμή σε rem με βάση 16 pixel και με τη βάση των 10 pixel της τεχνικής 62,5%. Οι στήλες τιμών είναι κώδικας CSS, γι’ αυτό τα δεκαδικά γράφονται με τελεία.
Γραμμή σε pixelrem με βάση 16 pixelrem με βάση 10 pixel (62,5%)
font-size: 16px1rem1.6rem
font-size: 14px0.875rem1.4rem
font-size: 28px1.75rem2.8rem
padding: 12px 24px0.75rem 1.5rem1.2rem 2.4rem
margin-bottom: 32px2rem3.2rem
border-radius: 8px0.5rem0.8rem
max-width: 1200px75rem120rem
@media (min-width: 768px)48rem48rem
Στην τελευταία γραμμή η τιμή μένει 48rem και στις δύο στήλες. Το rem μέσα σε media query υπολογίζεται από την αρχική τιμή του μεγέθους γραμματοσειράς, και ο κανόνας που γράφεται στο στοιχείο html δεν την επηρεάζει[2]. Το μετρήσαμε σε Chrome και Firefox σε σελίδα με την τεχνική 62,5%: ο κανόνας @media (min-width: 48rem) άρχισε να ισχύει σε πλάτος 768 pixel. Όταν ανεβάσαμε το μέγεθος γραμματοσειράς του προγράμματος περιήγησης στα 20 pixel, άρχισε να ισχύει σε πλάτος 960 pixel.

Ποιες γραφές δέχεται και υπολογίζει ο μετατροπέας px σε rem;

Κάθε πεδίο δέχεται και υπολογίζει κάθε γραφή της δικής του ενότητας σε αυτόν τον πίνακα, οπότε δεν χρειάζεται να διορθώσετε τη διάσταση πριν την επικολλήσετε. Επικολλήστε τη όπως την αντιγράψατε από το σχέδιο ή το φύλλο στυλ, με μονάδα ή χωρίς. Η μεσαία στήλη δείχνει το αποτέλεσμα που υπολόγισε ο ίδιος ο μετατροπέας με βάση 16 pixel.
Τι γράφετε ή επικολλάτεΥπολογισμός του μετατροπέαΤι γίνεται με αυτή τη γραφή
Πρώτο πεδίο: διάσταση σε pixel, βάση 16 pixel
241,5 remΜόνο ο αριθμός, όπως φαίνεται η διάσταση στο πάνελ μετρήσεων της εφαρμογής σχεδίασης.
24px1,5 remΗ μονάδα κολλημένη στον αριθμό: διαβάζουμε τον αριθμό και αγνοούμε το px.
24πχ1,5 remΤο px γραμμένο με ελληνικό πληκτρολόγιο χωρίς αλλαγή γλώσσας γίνεται «πχ»: κρατάμε τον αριθμό.
13,50,8438 remΔιάσταση με υποδιαστολή κόμμα: το αποτέλεσμα φαίνεται με τέσσερα δεκαδικά ψηφία μετά τη στρογγυλοποίηση.
1.2000,075 remΌταν ο αριθμός έχει μία μόνο τελεία, τη διαβάζουμε πάντα ως υποδιαστολή, άρα η διάσταση είναι 1,2 pixel. Κάτω από το πεδίο εμφανίζεται υπόδειξη· για χίλια διακόσια pixel γράψτε 1200 ή 1 200.
1,2000,075 remΤο κόμμα σε αυτή τη σελίδα το διαβάζουμε ως υποδιαστολή ακόμη κι αν ακολουθούν τρία ψηφία, άρα και εδώ η διάσταση είναι 1,2 pixel. Κάτω από το πεδίο εμφανίζεται υπόδειξη με τη δεύτερη πιθανή ανάγνωση, 1200.
1200px75 remΠλάτος περιέκτη με μονάδα και χωρίς διαχωριστικό χιλιάδων: κάνει 75 rem.
padding: 20px;1,25 remΟλόκληρη γραμμή από το φύλλο στυλ: κρατάμε τον αριθμό και αγνοούμε το όνομα της ιδιότητας και το ερωτηματικό.
−8px-0,5 remΤο τυπογραφικό μείον «−» μπροστά από τον αριθμό το διαβάζουμε ως αρνητικό πρόσημο, όπως σε ένα αρνητικό περιθώριο.
Πεδίο «Βασικό font-size»: ο μετατροπέας υπολογίζει τη βάση
62,5%10 pxΠοσοστό όπως το γράφετε για το στοιχείο html: το 62,5% της προεπιλεγμένης βάσης των 16 pixel είναι 10.
font-size: 18px18 pxΓραμμή αντιγραμμένη από το φύλλο στυλ: κρατάμε το 18 ως βάση.
Δοκιμάσαμε κάθε γραφή στο ίδιο το πεδίο πριν τη γράψουμε εδώ. Αν κάτω από το πεδίο εμφανιστεί μήνυμα που ζητά έναν μόνο αριθμό, αφήστε στο πεδίο μόνο τη διάσταση.

Πώς μετατρέπω διαστάσεις του Figma ή ολόκληρο φύλλο στυλ από px σε rem;

Για λίγες διαστάσεις αρκεί ο μετατροπέας. Όταν οι διαστάσεις είναι πολλές, οι εφαρμογές σχεδίασης και τα εργαλεία build μπορούν να υπολογίσουν μόνα τους το rem.

  1. Διάσταση από αρχείο σχεδίασης

    Αντιγράψτε τη διάσταση σε pixel από το πάνελ μετρήσεων και επικολλήστε τη στο πρώτο πεδίο. Αν η σελίδα ορίζει μέγεθος γραμματοσειράς για το στοιχείο html, γράψτε το στο πεδίο Βασικό font-size πριν αντιγράψετε το αποτέλεσμα.
  2. Dev Mode στο Figma

    Στα πληρωμένα πλάνα το Dev Mode δείχνει τις διαστάσεις κατευθείαν σε rem. Οι ονομασίες εδώ είναι στα αγγλικά, όπως στο περιβάλλον του Figma. Στην ενότητα Code του πάνελ Inspect πατήστε Inspect settings δίπλα στο μενού γλώσσας και διαλέξτε τη μονάδα rem. Για να αλλάξετε τη βάση, επιλέξτε από το ίδιο σημείο Set unit scale… και γράψτε τη βάση στο παράθυρο Unit scale.
  3. Συνάρτηση στη Sass

    Η Sass διαιρεί αριθμούς με τη συνάρτηση math.div() από το module sass:math[3]. Η συνάρτηση @function rem($px) { @return math.div($px, 16px) * 1rem; } κάνει το rem(24px) ίσο με 1.5rem.
  4. PostCSS για ολόκληρο φύλλο στυλ

    Το πρόσθετο postcss-pxtorem μετατρέπει τα px σε rem στα αρχεία CSS κατά το build[4]. Η προεπιλεγμένη βάση του είναι 16 και με τις προεπιλεγμένες ρυθμίσεις μετατρέπει μόνο τις ιδιότητες γραμματοσειράς: font, font-size, line-height και letter-spacing. Τα media queries μένουν σε pixel.

Pixel: μετατροπή σε άλλες μονάδες

Πηγές

  1. CSS Values and Units Module Level 4 — W3C
  2. Media Queries Level 4 — W3C
  3. sass:math — Sass
  4. postcss-pxtorem — GitHub
  5. <length> CSS type — MDN Web Docs
  6. Web Content Accessibility Guidelines (WCAG) 2.2 — W3C

Όλες τις τιμές των πινάκων τις υπολογίσαμε από τους ορισμούς των μονάδων και τις ελέγξαμε αριθμητικά πριν από τη δημοσίευση. Τα ιστορικά στοιχεία και οι ονομασίες των τοπικών μονάδων βασίζονται στις πηγές που αναφέρονται παραπάνω.

Τελευταίος έλεγχος περιεχομένου: · συντάχθηκε και ελέγχθηκε από την ομάδα της Arteon

Συχνές ερωτήσεις για τη μετατροπή px σε rem

Πόσα rem είναι τα 16 px;

Τα 16 pixel είναι 1 rem με την προεπιλεγμένη βάση των 16 pixel. Με την τεχνική 62,5%, δηλαδή με βάση 10 pixel, είναι 1,6 rem.

Πόσα rem είναι τα 14 px και τα 12 px;

Με βάση 16 pixel τα 14 pixel είναι 0,875 rem και τα 12 pixel είναι 0,75 rem.

Είναι τα 24 pixel πάντα 1,5 rem;

Αυτό ισχύει μόνο με βάση 16 pixel. Αν η σελίδα γράψει άλλο μέγεθος για το στοιχείο html, διαιρέστε με αυτό: με βάση 10 pixel τα 24 pixel είναι 2,4 rem και με βάση 20 pixel είναι 1,2 rem.

Γιατί διαιρούμε με το 16;

Επειδή τα 16 pixel είναι συνηθισμένη προεπιλογή μεγέθους γραμματοσειράς στα προγράμματα περιήγησης, την οποία ο χρήστης μπορεί να αλλάξει[5]. Στη μέτρησή μας αυτό το μέγεθος χρησιμοποιούσαν τα Chrome, Edge και Firefox πριν από κάθε αλλαγή ρυθμίσεων.

Αλλάζει η τεχνική 62,5% τις τιμές rem στα media queries;

Όχι. Ο κανόνας @media (min-width: 48rem) αρχίζει να ισχύει στα 768 pixel με την τεχνική και χωρίς αυτήν, γιατί το rem μέσα σε media query υπολογίζεται από την αρχική τιμή του μεγέθους γραμματοσειράς[2]. Γι’ αυτό μετατρέψτε τα όρια των media queries διαιρώντας με το 16.

Ποια είναι η διαφορά ανάμεσα στη μετατροπή px σε rem και px σε em;

Το rem υπολογίζεται από το μέγεθος γραμματοσειράς του στοιχείου html, άρα διαιρείτε με την ίδια βάση σε όλη τη σελίδα. Το em υπολογίζεται από το μέγεθος γραμματοσειράς του γονικού στοιχείου, άρα διαιρείτε με το μέγεθος του γονικού. Για αυτόν τον υπολογισμό υπάρχει ο μετατροπέας px σε em.

Πρέπει ένα περίγραμμα 1px να γραφτεί σε rem;

Αν θέλετε το περίγραμμα να μένει πάχους ενός pixel σε κάθε ρύθμιση, αφήστε το 1px. Αν το γράψετε 0.0625rem, για τον αναγνώστη που διάλεξε βάση 20 το πάχος του γίνεται 1,25 pixel. Και το postcss-pxtorem αφήνει την ιδιότητα border σε pixel με τις προεπιλεγμένες ρυθμίσεις του[4].

Μεγαλώνει το κείμενο σε rem με τη ρύθμιση του αναγνώστη;

Ναι. Το κείμενο σε rem μεγαλώνει με το μέγεθος γραμματοσειράς που διαλέγει ο αναγνώστης στο πρόγραμμα περιήγησης, ενώ το κείμενο σε pixel μένει ίδιο. Το κριτήριο 1.4.4 Resize Text των WCAG καλύπτει αυτή την περίπτωση: το κείμενο να μεγεθύνεται έως 200% χωρίς απώλεια περιεχομένου ή λειτουργίας[6].

Στιγμιότυπο οθόνης του δωρεάν εργαλείου της Arteon: Μετατροπή pixel (px) σε rem

Βοηθήστε μας να βελτιώσουμε τα εργαλεία μας

Βρήκατε διάσταση που δίνει άλλο αποτέλεσμα στο πρόγραμμα περιήγησής σας ή έχετε μια ιδέα για τον μετατροπέα; Γράψτε μας.