Konverzija boje između RGB, HSL i heksadecimalne
- Nadzorna ploča
- Dokumentacija
- API
Zašto pretvarati boje između formata?
Rad s bojom na webu uključuje stalno žongliranje između nekoliko zapisa. Pretvarač boja izbjegava ručne pogreške i omogućuje trenutno prebacivanje s jednog formata na drugi, ovisno o kontekstu korištenja. Svaki format ima svoje prednosti, a znati koji koristiti jedan je od refleksa front-end programera.
Evo tipičnih upotreba koje motiviraju pretvorbu boja:
- RGB izvorni je u CSS-u i JavaScriptu, čitljiv je ljudima kako bi razumjeli dominantu (crveni, zeleni, plavi kanali na 0-255).
- HSL čini promjenu nijanse trivijalnom: samo podesite zasićenost ili svjetlinu bez ponovnog izračunavanja svakog kanala.
- HEX je kanonski format za kopiranje i lijepljenje: šest znakova, kompatibilan posvuda, idealan za Figma, Sketch modele ili stilske vodiče.
- Konverzije HEX u RGB, RGB u HEX, HEX u HSL i njihove recipročne vrijednosti najčešće su operacije u CSS-u i JavaScriptu.
Objašnjeni formati boja
RGB i RGBA (crvena, zelena, plava, alfa)
Svaki kanal je kodiran kao cijeli broj između 0 i 255, što odgovara jednom bajtu po komponenti i daje 16.777.216 mogućih boja. RGBA alfa kanal kreće se od 0 (proziran) do 1 (neproziran) i kontrolira prozirnost.
.gumb {
boja pozadine: rgb(20, 0, 182);
boja obruba: rgba(20, 0, 182, 0,5);
}
HEX i HEX8 (heksadecimalni zapis)
Vrlo popularan kompaktni format: #RRGGBB od šest znakova, gdje svaki par predstavlja RGB kanal u bazi 16. Varijanta #RRGGBBAA od osam znakova dodaje alfa kanal u heksadecimalnom obliku (00 proziran, FF neproziran). Kratka oznaka #RGB također postoji: #F53 je ekvivalent #FF5533.
.naslov { boja: #1400B6; }
.shadow { boja: #1400B680; } /* alfa 50% */
.akcent { boja: #F53; } /* kratki oblik */
HSL i HSLA (boja, zasićenost, svjetlina, alfa)
HSL perceptivno opisuje boju. Nijansa je kut na kotaču boja (0 do 360°), Zasićenost i Svjetlina su postoci. Ovo je preferirani format za generiranje varijacija: osvjetljavanje gumba nad kojim lebdi, desaturacija deaktiviranog stanja, stvaranje koherentne palete mijenjanjem samo nijanse.
$primarni: hsl(247, 100%, 36%);
$primary-hover: hsl(247, 100%, 46%); /* jasnije */
$primarni-prigušeni: hsl(247, 30%, 36%); /* manje zasićen */
Ostali postojeći formati
CMYK (Cyan, Magenta, Yellow, Key) koristi se u ispisu: opisuje boju oduzimanjem tinti i nije relevantan na ekranu. OKLCH i LAB perceptivno su uniformni prostori koji su se pojavili u CSS razini boja 4; omogućuju bolju kontrolu osvjetljenja. Ovaj se alat fokusira na RGB, HEX i HSL pretvorbe, koje pokrivaju veliku većinu web potreba.
Kako funkcionira konverzija?
HEX u RGB predstavlja raščlanjivanje niza u parovima znakova i tumačenje svakog para kao cijelog broja s bazom 16:
const hex = '#1400B6';
const r = parseInt(hex.slice(1, 3), 16); // 20
const g = parseInt(hex.slice(3, 5), 16); // 0
const b = parseInt(hex.slice(5, 7), 16); // 182
RGB u HEX je obrnuta operacija: svaki kanal se pretvara u bazu 16, dopunjuje u dva znaka, a zatim spaja.
const toHex = (n) => n.toString(16).padStart(2, '0');
const hex = '#' + toHex(20) + toHex(0) + toHex(182); // '#1400b6'
RGB u HSL je više algoritamski. Normaliziramo kanale između 0 i 1, izračunavamo min i max kako bismo zaključili svjetlinu, zatim zasićenost, a zatim nijansu prema dominantnom kanalu. Potpuna formula dokumentirana je u specifikaciji CSS Color Module Level 3.
Kako koristiti pretvarač boja
Alat radi u oba smjera između RGB, HEX i HSL. Da biste izvršili pretvorbu:
- Odaberite format unosa: RGB, HEX ili HSL.
- Unesite vrijednost (na primjer
#1400B6,rgb(20, 0, 182)ilihsl(247, 100%, 36%)). - Pokrenite pretvorbu: ekvivalenti u druga dva formata prikazuju se odmah.
- Kopirajte željeni rezultat pomoću namjenskog gumba i zalijepite ga u svoju tablicu stilova ili izgled.
Izračun se vrši na strani preglednika, podaci se ne šalju poslužitelju.
Konkretni slučajevi uporabe
- Web dizajn i CSS: dohvatite HEX iz makete i nabavite ekvivalentni HSL za generiranje lebdenja ili aktivnog stanja bez odstupanja od nijanse.
- Vizualni identitet i paleta: odbijte primarnu boju u nekoliko varijacija (svijetla, tamna, prigušena) igrajući na svjetlini ili HSL zasićenosti.
- Ilustracije i grafike: transponirajte boju zaslona (RGB) u heksadecimalni kod za prijenos softveru ili klijentu.
- Pristupačnost: pretvorite u RGB format kako biste izračunali omjer kontrasta (WCAG AA zahtijeva 4,5:1 za normalan tekst) s bojom pozadine.
- CSS varijable i predprocesori: unesite tokene dizajna u SASS datoteku ili temu Tailwind iz jedne referentne boje.
Primjeri konverzija
Neke potpune pretvorbe za ilustraciju korespondencije između tri formata:
#1400B6 -> rgb(20, 0, 182) -> hsl(247, 100%, 36%)
#FF5733 -> rgb(255, 87, 51) -> hsl(11, 100%, 60%)
#2ECC71 -> rgb(46, 204, 113) -> hsl(145, 63%, 49%)
#F1C40F -> rgb(241, 196, 15) -> hsl(48, 89%, 50%)
#FFFFFF -> rgb(255, 255, 255) -> hsl(0, 0%, 100%)
#000000 -> rgb(0, 0, 0) -> hsl(0, 0%, 0%)
S alfa kanalom:
#1400B680 -> rgba(20, 0, 182, 0,50) -> hsla(247, 100%, 36%, 0,50)
#FF5733CC -> rgba(255, 87, 51, 0,80) -> hsla(11, 100%, 60%, 0,80)
Često postavljana pitanja o pretvorbi kodova boja
Koja je razlika između HEX i HEX8?
Klasični HEX kodira tri RGB kanala preko šest znakova (#RRGGBB). HEX8 dodaje dva znaka za alfa kanal (#RRGGBBAA), što pomaže u upravljanju transparentnošću u jednom nizu. #1400B6FF i #1400B6 vizualno daju istu boju, neprozirnu.
Trebamo li preferirati HSL ili RGB u CSS-u?
Dva su ekvivalentna u prikazivanju. HSL je izražajniji za generiranje koherentne palete ili varijanti stanja (lebdjenje, fokus), jer mijenjamo jedan perceptivni parametar. RGB ostaje praktičan pri radu s podacima s platna ili senzora.
Zašto moj HEX daje drugačiju nijansu od očekivane?
Tri uobičajena uzroka: zabuna između kratkog #RGB i dugog #RRGGBB (znakovi su duplicirani, nisu spojeni), pogreška kopiranja na znaku ili prikaz na nekalibriranom zaslonu. Također provjerite da vaš CSS ne prekriva nadređenu neprozirnost koja mijenja konačno prikazivanje.
Za što se koristi alfa kanal RGBA i HSLA?
Alfa kanal kontrolira neprozirnost boje, od 0 (potpuno prozirno) do 1 (potpuno neprozirno). Korisno je za preklapanja, sjene, onemogućena stanja ili preklapanja slika. Za razliku od svojstva CSS opacity, RGBA i HSLA utječu samo na ciljanu boju, a ne na njezine potomke.
Možemo li pretvoriti boju bez gubitka preciznosti?
Između RGB i HEX konverzija je točna, oba formata kodiraju iste informacije na 24 bita. Pretvorba u HSL uključuje zaokruživanje nijansi, zasićenosti i svjetline; povratno putovanje RGB > HSL > RGB stoga može vratiti vrijednost pomaknutu za jednu jedinicu na određenim kanalima.
Zašto koristiti mrežni pretvarač umjesto interne funkcije?
Za jednokratni test, napravite prototip palete ili brzo provjerite HEX ekvivalent HSL boje izdvojene iz modela, mrežni pretvarač je odmah dostupan. Za programsku potrebu koja se ponavlja, biblioteka kao što je color, chroma-js ili tinycolor2 ostaje prikladnija.
Često postavljana pitanja
Šalju li se moje boje na poslužitelj?
Ne. Konverzija između RGB, HEX i HSL je strogo matematička i obavlja se na strani preglednika. Nijedna unesena vrijednost ne prenosi se na cdrn poslužitelj ili treću stranu, što alat čini upotrebljivim čak i izvan mreže nakon što se stranica učita.
Koja je razlika između kratke HEX notacije #F53 i duge notacije #FF5533?
Kratki oblik od tri znaka je CSS prečac gdje se svaka znamenka duplicira kako bi se rekonstruirao dugi oblik. #F53 stoga daje točno #FF5533, tj. rgb(255, 85, 51). U kratkom obliku mogu se prikazati samo boje kod kojih svaki kanal ima dva ista broja.
Moj HEX kod ima 8 znakova, kako ga mogu protumačiti?
Posljednja dva znaka predstavljaju alfa kanal u heksadecimalnom obliku, od 00 (potpuno proziran) do FF (potpuno neproziran). Na primjer, #1400B680 odgovara rgba(20, 0, 182, 0.5). Ovu HEX8 notaciju podržavaju svi moderni preglednici u CSS-u.
Pretvara li se ovaj alat u CMYK?
Ne. CMYK je subtraktivni prostor koji se koristi u ispisu i ovisi o kolorimetrijskom profilu stroja. Teorijska pretvorba RGB u CMYK postoji, ali ne odražava stvarni prikaz na tisku. Za ozbiljan ispis, izvezite svoju datoteku iz profesionalnog softvera (Illustrator, InDesign, Affinity) s ICC profilom koji isporučuje pisač.
Možemo li pretvoriti OKLCH ili LAB boju?
Ne u ovoj verziji. Alat cilja na RGB, HEX i HSL koji pokrivaju veliku većinu front-end potreba. OKLCH i LAB perceptualno su uniformni prostori definirani CSS Color Level 4 i zahtijevaju težu matricu konverzije. Ako radite na napredno dostupnim paletama, biblioteke poput culori ili colorjs.io obrađuju te pretvorbe.
Zašto se moj HSL rezultat malo razlikuje od drugog pretvarača?
Pretvorba RGB u HSL uključuje dijeljenje i zaokruživanje nijansi (u stupnjevima) i postotaka zasićenosti i svjetline. Ovisno o izvedbi, zaokruživanje se može vršiti na jedinicu ili na decimalno mjesto, čime se dobivaju vizualno neprimjetna odstupanja jedne jedinice. Sve vrijednosti koje vraća ovaj alat u skladu su sa specifikacijom CSS Color Module Level 3.
Primjer zahtjeva
curl -X POST https://cdrn.fr/api/v1/tools/color-converter/execute \
-H "Content-Type: application/json" \
-d '{"type":"hsl","red":"...","green":"...","blue":"...","hue":"...","saturation":"...","lightness":"...","hex":"..."}'
Ulazna shema
| Polje | Tip | Obavezno | Zadano |
|---|---|---|---|
type |
choice (hsl, rgb, hex) | ✓ | – |
red |
number | ✓ | – |
green |
number | ✓ | – |
blue |
number | ✓ | – |
hue |
number | ✓ | – |
saturation |
number | ✓ | – |
lightness |
number | ✓ | – |
hex |
string | ✓ | – |
Krajnje točke
GET https://cdrn.fr/api/v1/tools- ispisuje sve dostupne alateGET https://cdrn.fr/api/v1/tools/color-converter- dohvaća shemu ovog alataPOST https://cdrn.fr/api/v1/tools/color-converter/execute- izvršava ovaj alat s JSON payloadom