Teisenda värv RGB, HSL ja kuueteistkümnendi vahel

Teisendab kergelt värve RGB, HSL, Hex erinevatesse vormingutesse. Sisesta lihtsalt oma värvi väärtused ja tööriist genereerib kohe ekvivalendid erinevates vormingutes, hõlbustades tööd teie disaini- ja arendusprojektides

Miks teisendada värve vormingute vahel?

Veebis värvidega töötamine hõlmab pidevat žongleerimist mitme tähise vahel. Värvimuundur väldib käsitsi tehtavaid vigu ja võimaldab olenevalt kasutuskontekstist koheselt ühelt vormingult teisele lülituda. Igal vormingul on oma tugevad küljed ja teadmine, millist neist kasutada, on üks esiotsa arendaja reflekse.

Siin on tüüpilised kasutusviisid, mis motiveerivad värvide teisendamist:

  • RGB on CSS-is ja JavaScriptis natiivne, mida inimesed loevad, et mõista domineerivat (punased, rohelised, sinised kanalid vahemikus 0–255).
  • HSL muudab tooni muutmise triviaalseks: reguleerige lihtsalt küllastust või heledust ilma iga kanalit ümber arvutamata.
  • HEX on kopeerimise ja kleepimise kanooniline vorming: kuus tähemärki, ühilduvad kõikjal, sobivad ideaalselt Figma, Sketchi mudelite või stiilijuhiste jaoks.
  • CSS-is ja JavaScriptis on kõige levinumad toimingud HEX-st RGB-ks, RGB-st HEX-iks, HEX-st HSL-iks ja nende vastastikarvud.

Selgitatud värvivormingud

RGB ja RGBA (punane, roheline, sinine, alfa)

Iga kanal on kodeeritud täisarvuna vahemikus 0 kuni 255, mis vastab ühele baidile komponendi kohta ja annab 16 777 216 võimalikku värvi. RGBA alfakanal on vahemikus 0 (läbipaistev) kuni 1 (läbipaistmatu) ja kontrollib läbipaistvust.

kood>
.button {
    taustavärv: rgb(20, 0, 182);
    äärise värv: rgba(20, 0, 182, 0,5);
}

HEX ja HEX8 (kuueteistkümnendsüsteem)

Väga populaarne kompaktvorming: kuuekohaline #RRGGBB, kus iga paar tähistab RGB-kanalit aluses 16. Kaheksa märgiga variant #RRGGBBAA lisab alfakanali kuueteistkümnendsüsteemis (00 läbipaistev, FF läbipaistmatu). Samuti on olemas lühike märge #RGB: #F53 on samaväärne koodiga #FF5533.

kood>
.title { värv: #1400B6; }
.shadow { värv: #1400B680; } /* alfa 50% */
.accent { värv: #F53; } /* lühivorm */

HSL ja HSLA (toon, küllastus, heledus, alfa)

HSL kirjeldab värve tajutavalt. Hue on nurk värvirattal (0 kuni 360°), Küllastus ja Heledus on protsendid. See on eelistatud vorming variatsioonide genereerimiseks: kursoriga hõljutatud nupu heledamaks muutmine, deaktiveeritud oleku desatureerimine, sidusa paleti loomine, muutes ainult tooni.

kood>
$esmane: hsl(247, 100%, 36%);
$primary-hover: hsl(247, 100%, 46%);   /* selgem */
$primary-muted: hsl(247, 30%, 36%);    /* vähem küllastunud */

Muud olemasolevad vormingud

Printimisel kasutatakse CMYK-i (tsüaan, magenta, kollane, võti): see kirjeldab värvi tintide lahutamise teel ega ole ekraanil asjakohane. OKLCH ja LAB on tajuliselt ühtlased ruumid, mis ilmusid CSS-i värvitasemel 4; need võimaldavad paremini kontrollida heledust. See tööriist keskendub RGB-, HEX- ja HSL-konversioonidele, mis katavad valdava enamuse veebivajadustest.

Kuidas konversioon toimib?

HEX kuni RGB tähendab stringi sõelumist märgipaaridena ja iga paari tõlgendamist 16 põhitäisarvuna:

kood>
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-st HEX-iks on vastupidine toiming: iga kanal teisendatakse 16. baasiks, polsterdatakse kahe märgini ja seejärel ühendatakse.

kood>
const toHex = (n) => n.toString(16).padStart(2, '0');
const hex = '#' + toHex(20) + toHex(0) + toHex(182); // '#1400b6'

RGB-st HSL-i on algoritmilisem. Normaliseerime kanalid vahemikus 0 kuni 1, arvutame heleduse tuletamiseks min ja max, seejärel küllastuse, seejärel tooni vastavalt domineerivale kanalile. Täielik valem on dokumenteeritud CSS-i värvimooduli 3. taseme spetsifikatsioonis.

Kuidas kasutada värvimuundurit

Tööriist töötab mõlemas suunas RGB, HEX ja HSL vahel. Konversiooni tegemiseks toimige järgmiselt.

  1. Valige sisendvorming: RGB, HEX või HSL.
  2. Sisestage väärtus (näiteks #1400B6, rgb(20, 0, 182) või hsl(247, 100%, 36%)).
  3. Alustage teisendamist: kohe kuvatakse kahe teise vormingu ekvivalendid.
  4. Kopeerige soovitud tulemus spetsiaalse nupu abil ja kleepige see oma stiililehele või küljendusse.

Arvutamine toimub brauseri poolel, andmeid serverisse ei saadeta.

Konkreetsed kasutusjuhtumid

  • Veebikujundus ja CSS: hankige maketist HEX ja hankige samaväärne HSL, et luua hõljutus- või aktiivne olek ilma toonist kõrvale kaldumata.
  • Visuaalne identiteet ja palett: vähendage põhivärvi mitmes variandis (hele, tume, summutatud), mängides heleduse või HSL-i küllastusega.
  • Illustratsioon ja graafika: teisendage ekraanivärv (RGB) kuueteistkümnendkoodiks, et edastada tarkvara või klient.
  • Juurdepääsetavus: teisendage RGB-vormingusse, et seejärel arvutada taustavärviga kontrastsuhe (WCAG AA nõuab tavateksti jaoks 4,5:1).
  • CSS-i muutujad ja eeltöötlejad: suunake kujundusmärgid ühest võrdlusvärvist SASS-faili või Tailwindi teemasse.

Näited konversioonidest

Mõned täielikud teisendused, et illustreerida vastavust kolme vormingu vahel:

kood>
#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%)

Alfa-kanaliga:

kood>
#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)

Värvikoodi teisendamise KKK

Mis vahe on HEX ja HEX8 vahel?

Klassikaline HEX kodeerib kolme RGB-kanalit üle kuue tähemärgi (). HEX8 lisab alfakanali jaoks kaks märki (#RRGGBBAA), mis aitab hallata läbipaistvust ühes stringis. #1400B6FF ja #1400B6 annavad visuaalselt sama värvi, läbipaistmatud.

Kas me peaksime CSS-is eelistama HSL-i või RGB-d?

Need kaks on renderdamisel samaväärsed. HSL on ekspressiivsem koherentse paleti või olekuvariantide (hover, fookus) genereerimiseks, kuna me muudame ühte tajuparameetrit. RGB jääb lõuendilt või andurilt pärit andmetega töötamisel praktiliseks.

Miks annab minu HEX oodatust erinevat tooni?

Kolm levinumat põhjust: segiajamine lühikese #RGB ja pika #RRGGBB vahel (märgid on dubleeritud, mitte ühendatud), märgi kopeerimise viga või kuvamine kalibreerimata ekraanil. Samuti kontrollige, et teie CSS ei kataks põhiläbipaistmatust, mis muudab lõplikku renderdamist.

Milleks kasutatakse RGBA ja HSLA alfakanalit?

Alfa-kanal juhib värvi läbipaistmatust 0 (täielikult läbipaistev) kuni 1 (täielikult läbipaistmatu). See on kasulik ülekatete, varjude, keelatud olekute või kujutiste ülekatete jaoks. Erinevalt CSS-i atribuudist läbipaistmatus mõjutavad RGBA ja HSLA ainult sihitud värvi, mitte selle lapsi.

Kas saame teisendada värvi ilma täpsust kaotamata?

RGB ja HEX vahel on teisendus täpne, mõlemad vormingud kodeerivad sama teavet 24 bitti. HSL-i teisendamine hõlmab tooni, küllastuse ja heleduse ümardamist; edasi-tagasi RGB > HSL > RGB võib seetõttu teatud kanalitel tagastada ühe ühiku võrra nihutatud väärtuse.

Miks kasutada veebikonverterit, mitte ettevõttesisest funktsiooni?

Ühekordseks testimiseks tehke paleti prototüüp või kontrollige kiiresti mudelist eraldatud HSL-värvi HEX-ekvivalenti – võrgumuundur on kohe saadaval. Korduva programmilise vajaduse jaoks on sobivam teek nagu color, chroma-js või tinycolor2.

Korduma kippuvad küsimused

Kas minu värvid saadetakse serverisse?

Ei. RGB, HEX ja HSL teisendamine on rangelt matemaatiline ja toimub brauseri poolel. Ühtegi sisestatud väärtust ei edastata cdrn-serverisse ega kolmandale osapoolele, mistõttu on tööriist pärast lehe laadimist kasutatav isegi võrguühenduseta.

Mis vahe on lühikesel HEX-tähisel #F53 ja pikal tähisel #FF5533?

Kolmekohaline lühivorm on CSS-i otsetee, kus iga number dubleeritakse pika vormi rekonstrueerimiseks. Seetõttu annab #F53 täpselt koodi #FF5533, st rgb(255, 85, 51). Lühikujuliselt on esindatavad ainult need värvid, kus igal kanalil on kaks identset numbrit.

Minu HEX-koodis on 8 tähemärki, kuidas seda tõlgendada?

Viimased kaks märki tähistavad alfakanalit kuueteistkümnendsüsteemis alates 00 (täiesti läbipaistev) kuni FF (täiesti läbipaistmatu). Näiteks #1400B680 vastab rgba(20, 0, 182, 0.5). Seda HEX8 tähistust toetavad kõik kaasaegsed CSS-i brauserid.

Kas see tööriist teisendab CMYK-vormingusse?

Ei. CMYK on trükkimisel kasutatav lahutav ruum, mis sõltub masina kolorimeetrilisest profiilist. Teoreetiline RGB-st CMYK-i teisendus on olemas, kuid see ei kajasta tegelikku renderdamist pressimisel. Tõsise printimise jaoks eksportige oma fail professionaalsest tarkvarast (Illustrator, InDesign, Affinity) printeri pakutava ICC-profiiliga.

Kas saame teisendada OKLCH- või LAB-värvi?

Selles versioonis mitte. Tööriist on suunatud RGB-le, HEX-ile ja HSL-ile, mis katavad enamiku esiotsa vajadustest. OKLCH ja LAB on tajuliselt ühtsed ruumid, mis on määratletud CSS Color Level 4 ja nõuavad raskemat teisendusmaatriksit. Kui töötate täiustatud juurdepääsetavate palettidega, tegelevad nende konversioonidega sellised teegid nagu culori või colorjs.io.

Miks minu HSL-i tulemus veidi erineb mõnest teisest konverterist?

RGB-st HSL-iks teisendamine hõlmab tooni (kraadides) ja küllastuse ja heleduse protsendi jagamist ja ümardamist. Olenevalt teostusest võib ümardada ühikuni või kümnendkohani, mis tekitab ühe ühiku hälbeid, mis on visuaalselt märkamatud. Kõik selle tööriista tagastatud väärtused vastavad CSS-i värvimooduli 3. taseme spetsifikatsioonile.

Päringunäide

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":"..."}'

Sisendskeem

Väli Tüüp Kohustuslik Vaikimisi
type choice (hsl, rgb, hex)
red number
green number
blue number
hue number
saturation number
lightness number
hex string

Lõpp-punktid

  • GET https://cdrn.fr/api/v1/tools - loetleb kõik saadaolevad tööriistad
  • GET https://cdrn.fr/api/v1/tools/color-converter - toob selle tööriista skeemi
  • POST https://cdrn.fr/api/v1/tools/color-converter/execute - täidab selle tööriista JSON-payloadiga