Μετάβαση στον επιλογέα χρωμάτων

Τι είναι το OKLCH: η μορφή χρώματος που επιτέλους συμφωνεί με το μάτι

Το OKLCH περιγράφει ένα χρώμα με βάση το πόσο ανοιχτό φαίνεται, πόσο έντονο είναι και ποια απόχρωση έχει. Σε αντίθεση με το HSL, η ίδια τιμή φωτεινότητας φαίνεται πράγματι εξίσου φωτεινή σε κάθε απόχρωση, κι έτσι οι παλέτες, οι καταστάσεις hover και η προσβάσιμη αντίθεση γίνονται προβλέψιμες.

4 λεπ. ανάγνωσης

Τι είναι το OKLCH

Το OKLCH είναι η πολική μορφή του Oklab, ενός αντιληπτικού χρωματικού χώρου που δημοσίευσε ο Björn Ottosson το 2020. Έχει τρεις αριθμούς. Το L είναι η αντιληπτή φωτεινότητα, από 0 (μαύρο) έως 1 ή 100% (λευκό). Το C είναι η χρωματική ένταση (chroma), δηλαδή η ποσότητα χρώματος, από 0 (γκρι) έως περίπου 0,37 για τα πιο έντονα χρώματα που μπορούν να δείξουν οι οθόνες. Το H είναι η γωνία της απόχρωσης, από 0 έως 360 μοίρες.

Έτσι φαίνεται το ίδιο χρώμα γραμμένο σε διαφορετικές μορφές. Κάθε τιμή παρακάτω υπολογίζεται ζωντανά από το PickShade, οπότε μπορείτε να την αντιγράψετε όπως είναι.

Παράδειγμα: #ff5733
ΜορφήΤιμή
HEX
RGB
HSL
OKLCH
OKLab

Γιατί το OKLCH είναι καλύτερο από το HSL

Η φωτεινότητα του HSL είναι ένας τύπος, όχι αυτό που αντιλαμβάνεται το μάτι. Το hsl(60 100% 50%) είναι ένα φωτεινό κίτρινο και το hsl(240 100% 50%) ένα σκούρο μπλε, κι όμως και τα δύο δηλώνουν φωτεινότητα 50%. Αν στήσετε μια παλέτα στο HSL, κάθε απόχρωση θέλει χειροκίνητη διόρθωση.

Στο OKLCH τα χρώματα με το ίδιο L φαίνονται εξίσου φωτεινά. Μπορείτε να κρατήσετε σταθερά τα L και C και να περιστρέψετε το H για ένα σύνολο αποχρώσεων που δείχνουν ισορροπημένες ή να κρατήσετε τα H και C και να αλλάζετε το L σε βήματα για μια καθαρή κλίμακα τόνων. Γι’ αυτό το Tailwind CSS v4 ορίζει ολόκληρη την προεπιλεγμένη παλέτα του σε OKLCH.

Η φωτεινότητα προβλέπει και την αντίθεση. Κείμενο που διαφέρει στο L κατά 0,4 περίπου ή περισσότερο από το φόντο του συνήθως διαβάζεται άνετα, κι αυτό κάνει πολύ πιο εύκολο να σκεφτείτε προσβάσιμους συνδυασμούς χρωμάτων.

Σύνταξη στη CSS

Η φωτεινότητα γράφεται ως ποσοστό ή ως αριθμός από 0 έως 1. Η χρωματική ένταση είναι αριθμός. Η απόχρωση είναι γωνία σε μοίρες. Η διαφάνεια μπαίνει μετά από κάθετο.

CSS

color: oklch(62.8% 0.258 29.23);
background: oklch(0.7 0.15 250 / 50%);
border-color: oklch(from var(--brand) calc(l - 0.1) c h);

Υποστήριξη στα προγράμματα περιήγησης

Η oklch() δουλεύει σε κάθε σύγχρονο πρόγραμμα περιήγησης: Safari από την 15.4, Chrome και Edge από την 111, Firefox από την 113. Αυτό καλύπτει πολύ πάνω από το 90% των χρηστών. Για πολύ παλιά προγράμματα περιήγησης, βάλτε μια εφεδρική τιμή HEX στη γραμμή πριν από την τιμή OKLCH.

CSS

color: #ff5733;
color: oklch(68% 0.21 33.7);

Όρια χρωματικής έντασης και χρωματικό εύρος

Το OKLCH μπορεί να περιγράψει χρώματα που καμία οθόνη δεν μπορεί να δείξει. Η μέγιστη χρωματική ένταση εξαρτάται από τη φωτεινότητα και την απόχρωση: ένα έντονο κίτρινο υπάρχει μόνο σε υψηλή φωτεινότητα, ένα έντονο μπλε μόνο σε χαμηλή. Όταν μια τιμή βγαίνει έξω από το χρωματικό εύρος (gamut) του sRGB ή του Display P3, το πρόγραμμα περιήγησης τη φέρνει πίσω μέσα, κάτι που μπορεί να μετατοπίσει το χρώμα.

Το PickShade επισημαίνει τα χρώματα εκτός sRGB και σας δίνει το πλησιέστερο χρώμα που χωράει. Το βρίσκει μειώνοντας τη χρωματική ένταση και κρατώντας φωτεινότητα και απόχρωση, με τη μέθοδο που προτείνει το CSS Color 4.

Πώς μετατρέπετε HEX σε OKLCH

Η μετατροπή γίνεται σε βήματα: HEX σε sRGB, sRGB σε γραμμικό φως, γραμμικό sRGB στον χώρο των κωνίων LMS, κυβική ρίζα, πίνακας προς Oklab και τέλος Oklab σε πολικές συντεταγμένες. Με το χέρι τα λάθη είναι εύκολα, οπότε επικολλήστε οποιοδήποτε χρώμα στον μετατροπέα και αντιγράψτε το αποτέλεσμα.

Ερωτήσεις και απαντήσεις

Υποστηρίζεται το OKLCH σε όλα τα προγράμματα περιήγησης;

Ναι, σε κάθε σύγχρονο πρόγραμμα περιήγησης: Safari 15.4 και νεότερο, Chrome και Edge 111 και νεότερα, Firefox 113 και νεότερο. Αν πρέπει να υποστηρίξετε παλαιότερα, προσθέστε από πάνω μια γραμμή με HEX.

Ποια είναι η διαφορά ανάμεσα σε OKLCH και LCH;

Και τα δύο περιγράφουν φωτεινότητα, χρωματική ένταση και απόχρωση. Η lch() της CSS βασίζεται στο CIELAB, όπου τα μπλε γλιστρούν προς το μωβ όταν αλλάζετε τη φωτεινότητα. Το OKLCH βασίζεται στο Oklab, που κρατά σταθερή την απόχρωση, οπότε οι κλίμακες τόνων του μπλε μένουν μπλε.

Γιατί το χρώμα OKLCH φαίνεται διαφορετικό από αυτό που πληκτρολόγησα;

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

Μπορώ να χρησιμοποιήσω OKLCH με το Tailwind CSS;

Ναι. Το Tailwind CSS v4 χρησιμοποιεί ήδη OKLCH για την προεπιλεγμένη παλέτα του και τα δικά σας χρώματα στο @theme μπορούν να γραφτούν απευθείας σε OKLCH.

Δοκιμάστε το στο PickShade

Σχετικοί οδηγοί