Scurire colore hex per percentuale
Crei le tonalità al passaggio del mouse e da premuto partendo da un esadecimale di marca con una percentuale fissa: #4A90D9 al 20 % diventa #2873C0, sempre lo stesso blu. La luminosità cala in proporzione e si ferma al nero. Gratis nel Suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Colore
- #4A90D9
- Percentuale
- 20
- Originale
- #4A90D9
- Hex
- #2873C0
Designer, ingegneri front-end e autori di design system hanno costantemente bisogno di tonalità più scure di un colore di marca per stati hover, bordi, ombre e testo accessibile su sfondi chiari. Indovinare un nuovo hex a occhio è lento e incoerente tra strumenti. Questa capacità accetta un colore hex e una percentuale di scurimento da zero a cento, converte il colore in HSL, moltiplica la luminosità per uno meno tale percentuale, limita il risultato al nero e restituisce l’hex più scuro con dettagli RGB e HSL. Lo zero per cento mantiene il colore originale; il cento per cento produce il nero.
Cosa significa scurire per percentuale in HSL
I colori sul web sono spesso memorizzati come hex o RGB, ma i passi percettivi di tonalità sono più semplici in HSL: la tinta regge il tono, la saturazione la purezza e la luminosità quanto il campione è vicino al nero o al bianco. Scurire di una percentuale significa ridurre la luminosità tenendo fisse tinta e saturazione, così un blu di marca resta blu — solo più profondo.
Questo strumento moltiplica la luminosità corrente per uno meno la percentuale su cento e poi limita il risultato affinché la luminosità non scenda mai sotto zero. Allo zero per cento la luminosità non cambia, quindi l’uscita coincide con l’hex di ingresso normalizzato. Al cinquanta per cento la luminosità è dimezzata.
Al cento per cento la luminosità diventa zero e il risultato è nero puro indipendentemente dalla tinta di partenza. Quel modello relativo corrisponde a come molti token di design scalano gli stati interattivi: un unico token base più un fattore di scurimento per hover o premuto. La sottrazione assoluta di punti di luminosità può sforare su colori già scuri; la scala relativa con limite al nero resta sempre nell’intervallo e non inventa mai una luminosità negativa.
Contratto di ingresso: colori hex e percentuale 0–100
Passi il colore come stringa hex in forma corta o lunga: #RGB o #RRGGBB, con o senza il cancelletto iniziale. Le forme corte si espandono canale per canale, così #F0A diventa #FF00AA prima della conversione. Il campo percent è obbligatorio e deve essere un numero finito tra zero e cento inclusi.
Valori come meno dieci, centouno o testo non numerico vengono rifiutati; la validazione fallita non viene fatturata. In caso di successo la risposta include original come hex normalizzato a sei cifre in maiuscolo, hex come risultato scurito, il percent numerico che Lei ha inviato, rgb con canali interi da zero a duecentocinquantacinque, e hsl con la tinta in gradi e saturazione e luminosità su una scala da zero a cento dopo il passo di scurimento. L’arrotondamento è deterministico, così rieseguire la stessa coppia non deriva.
Usi percent zero per normalizzare ed espandere un hex corto senza cambiare tonalità, o percent cento quando serve un’ancora nera vera derivata dallo stesso percorso di codice degli scurimenti parziali per pipeline di token coerenti.
Per una tinta o tutti gli stati di un pulsante
Per un controllo puntuale — confermare che un blu primario si scurisca in modo pulito per l’hover di un pulsante, o che un passo del venti per cento soddisfi ancora gli obiettivi di contrasto sul bianco — usi lo strumento gratuito nel browser su questa pagina. Non c’è chiamata di rete dentro la trasformazione, né modello, né dipendenza dall’orologio, quindi i risultati sono sicuri al bordo e memorizzabili in cache.
Se già converte i formati con un convertitore di colore separato, lo conservi per i percorsi HEX–RGB–HSL; usi questo scuritore quando l’intento di ricerca è specificamente una tonalità più scura per percentuale. Abbini entrambi in una pipeline se le serve l’export CMYK dopo lo scurimento, ma il passo di scurimento in sé richiede solo hex in ingresso e colore strutturato in uscita con nero limitato al cento per cento.
Casi d'uso
Stati hover e premuto dell’interfaccia
Derivare tonalità più scure di pulsanti e link da un unico hex di marca così che gli stili hover e attivo restino coerenti tra componenti senza scegliere a mano ogni campione.
Accenti di marca per e-mail e PDF
Precalcolare hex di accento più scuri per bordi e intestazioni in modelli che accettano solo colori statici e non possono calcolare HSL al rendering.
Domande frequenti
Quali ingressi accetta lo scurimento hex per percentuale?
Un colore hex (#RGB o #RRGGBB, # opzionale) e un percent da 0 a 100.
Come si calcola il colore più scuro?
L’hex è convertito in HSL, la luminosità è moltiplicata per (1 − percent/100) e limitata a zero (nero), poi riconvertita in hex, RGB e HSL. Tinta e saturazione restano; percent 100 produce il nero.
Cosa contiene una risposta riuscita?
original (hex di ingresso normalizzato), hex (risultato scurito), percent, rgb {r,g,b} e hsl {h,s,l} dopo lo scurimento.
È la stessa cosa di un convertitore di formati colore?
No. Un convertitore cambia la rappresentazione (HEX, RGB, HSL) senza spostare la tonalità. Questo strumento scurisce specificamente abbassando la luminosità di una percentuale e limita al nero.
Perché una percentuale relativa invece di togliere punti di luminosità?
Togliere punti fissi può esagerare su colori già scuri. Ridurre la luminosità di una percentuale resta sempre nell’intervallo: il 50 % la dimezza, il 100 % arriva al nero e nulla diventa negativo.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/color/darken-percent \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"color":"#4A90D9","percent":20}'const res = await fetch("https://api.kit.forhosting.com/color/darken-percent", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"color": "#4A90D9",
"percent": 20
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/darken-percent",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"color": "#4A90D9",
"percent": 20
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/darken-percent", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"color":"#4A90D9","percent":20}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"color":"#4A90D9","percent":20}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/darken-percent", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"color": "#4A90D9",
"percent": 20
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.darken_percent",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Valori fuori da zero a cento e stringhe hex malformate vengono rifiutati con un errore chiaro invalid_input. Usi lo strumento gratuito del browser per campioni rapidi, oppure l’API a $0.002 per richiesta riuscita quando genera palette in una pipeline.
Cosa significa scurire per percentuale in HSL
Poiché la conversione è matematica pura con arrotondamento fisso, lo stesso hex e la stessa percentuale producono sempre lo stesso hex più scuro nel browser e sul bordo API, rendendo affidabili i test di riferimento e le esecuzioni multi-regione per CI e token di design in ogni ambiente che Lei distribuisce.
Contratto di ingresso: colori hex e percentuale 0–100
Caratteri non validi, lunghezze errate, stringhe vuote e valori non stringa falliscono con invalid_input e un messaggio che nomina il campo. Sono accettati alias per comodità: hex, from o text per il colore, e amount, pct o percentage per la percentuale.
Dove eseguirlo: strumento browser gratuito o API automatizzata
La stessa funzione pura alimenta l’API quando costruisce generatori di temi, esporta token di design in proprietà personalizzate CSS o precalcola scale di tonalità per modelli di e-mail che non possono eseguire script client. Ogni chiamata API riuscita costa $0.002; percentuali non valide fuori da zero a cento e hex malformati non consumano il saldo prepagato. Inserisca l’endpoint in un ponte plugin Figma, un componente aggiuntivo Storybook che anteprima i colori di stato, o un passo server che materializza superfici in modalità scura da una palette base chiara.
Casi di integrazione
Scale di tonalità per token di design
Generare varianti scure a gradini per variabili CSS o JSON di tema applicando percentuali fisse di scurimento ai colori della palette base in CI.
Domande tecniche
Quanto costa l’API?
$0.002 per richiesta riuscita. Lo strumento del browser è gratuito. L’ingresso non valido non viene addebitato.