Perché i colori SVG cambiano dopo l'esportazione
Scopri se un cambiamento di colore SVG deriva da conversione dello spazio colore, ereditarietà CSS, sfumature, fusione, opacità o dall'app che importa il file.
In questa pagina
- Abbina il sintomo al primo controllo
- Isola il problema in cinque minuti
- 1. Mantieni intatto il master modificabile
- 2. Apri l'SVG esportato in due posti
- 3. Ispeziona le istruzioni di pittura
- 4. Riduci un oggetto problematico
- Causa 1: l'esportatore ha convertito lo spazio colore
- Causa 2: currentColor o CSS hanno sostituito la pittura
- Causa 3: una sfumatura o un riferimento di pittura si è interrotto
- Causa 4: opacità e fusione hanno cambiato il risultato visibile
- Causa 5: la destinazione ha importato soltanto parte dell'SVG
- Scegli la minima correzione sicura
- Dove si inserisce PerfectVector
- Lista di controllo della consegna
- FAQ
- Fonti
Un SVG cambia colore dopo l'esportazione quando l'aspetto sorgente e il file consegnato vengono interpretati diversamente. L'esportatore può convertire i valori colore. Un sito può sovrascrivere fill tramite CSS o risolvere currentColor da un genitore. Una sfumatura, impostazione di opacità, modalità di fusione o filtro possono dipendere da una funzione gestita diversamente dalla destinazione. A volte il markup esportato è corretto e un singolo importatore si comporta diversamente.
Non iniziare sostituendo ogni valore esadecimale. Prima individua il punto in cui cambia l'aspetto. Questo indica se correggere l'SVG, cambiare l'esportazione, semplificare una copia di consegna o mantenere la grafica in un altro formato.
La diagnosi rapida
- Sbagliato in ogni visualizzatore: ispeziona valori colore esportati, spazio colore ed effetti.
- Corretto da solo, sbagliato sul sito: ispeziona CSS ereditati,
currentColor, nomi delle classi e ID duplicati. - I riempimenti uniformi restano corretti ma sfumature o aree ombreggiate cambiano: ispeziona riferimenti di pittura, opacità, filtri e modalità di fusione.
- Sbagliato soltanto in un'app: prova l'importatore di quell'app con un solo oggetto semplificato prima di cambiare il master.
- Appare diverso su un nuovo sfondo: confronta compositing e contrasto prima di modificare i colori.
Abbina il sintomo al primo controllo
| Cosa è cambiato | Probabile categoria della causa | Primo controllo |
|---|---|---|
| Ogni riempimento uniforme è alterato | Conversione colore durante l'esportazione | Confronta il campione sorgente con il valore scritto nell'SVG |
| L'SVG diventa di un solo colore quando incorporato | currentColor o CSS ereditati | Aprilo da solo, poi ispeziona color, fill e stroke calcolati nella pagina |
| Un'icona cambia quando più SVG condividono una pagina | Collisione di classi CSS o ID di pittura | Cerca classi generiche e ID ripetuti come paint0 o gradient1 |
| Una sfumatura diventa uniforme, scura o scompare | Riferimento di pittura interrotto o non supportato | Abbina ogni url(#id) a un elemento in <defs> |
| Le aree trasparenti o fuse appaiono sbiadite | Differenza di opacità, fusione, filtro o sfondo | Disattiva un effetto alla volta su un duplicato |
| Il file è corretto nel browser ma sbagliato dopo l'importazione | Supporto della destinazione o conversione nell'importazione | Riduci l'SVG a un oggetto problematico e importa di nuovo |

Isola il problema in cinque minuti
1. Mantieni intatto il master modificabile
Salva un duplicato per le prove. Non appiattire effetti, convertire ogni oggetto in contorni o sostituire colori nell'unica copia modificabile. Queste modifiche possono nascondere la causa e rendere il file più difficile da correggere dopo.
2. Apri l'SVG esportato in due posti
Usa un browser attuale come controllo neutrale, poi apri o importa lo stesso file nella destinazione reale. Confronta entrambi con la grafica sorgente sullo stesso sfondo.
- Se entrambe le visualizzazioni esportate sono sbagliate, indaga l'esportatore o l'SVG serializzato.
- Se il browser autonomo è corretto e la destinazione sbagliata, indaga incorporamento, CSS o supporto dell'importatore.
- Se differiscono soltanto regioni trasparenti o fuse, prova sfondo ed effetti prima di toccare i riempimenti uniformi.
Un browser è un controllo utile, non la prova che ogni app grafica o di produzione importerà lo stesso insieme di funzioni.
3. Ispeziona le istruzioni di pittura
Apri l'SVG in un editor di testo e cerca:
fill=
stroke=
currentColor
url(#
opacity=
fill-opacity=
mix-blend-mode
filter=Stai cercando la struttura, non riscrivendo ancora. Un valore letterale fill="#2F6BFF" indica un percorso diverso da fill="currentColor" o fill="url(#paint0)".
Se è la prima volta che apri markup SVG, la guida più ampia a modificare un SVG spiega i percorsi tramite codice ed editor visivo.
4. Riduci un oggetto problematico
Copia in un nuovo documento il più piccolo oggetto che cambia ancora ed esportalo. Rimuovi una funzione alla volta: prima il filtro, poi la modalità di fusione, poi la sfumatura e infine l'opacità del gruppo. La prima rimozione che corregge il risultato identifica la funzione non supportata o dipendente dal contesto.
Questa prova di riduzione è più sicura dell'appiattimento dell'intera illustrazione perché dà un vincolo di consegna specifico.
Causa 1: l'esportatore ha convertito lo spazio colore
I colori esadecimali e la nota sintassi rgb() descrivono colori sRGB. I CSS moderni possono anche esprimere spazi con gamma più ampia come Display P3 tramite color(), come definito da CSS Color Module Level 4. Un'app grafica può quindi contenere un colore sorgente che richiede conversione prima di diventare un valore esadecimale sRGB, e la conversione può cambiare i numeri o limitare un colore fuori gamma.
Controlla il problema in questo ordine:
- annota spazio colore del documento sorgente e valore numerico dell'oggetto selezionato;
- esporta un unico oggetto uniforme senza opacità o effetti;
- apri l'SVG come testo e leggi il
fillostrokeserializzato; - confronta il numero esportato con la sorgente;
- prova lo stesso file nella destinazione.
Se il valore è cambiato nel file, la conversione è avvenuta durante l'esportazione. Scegli consapevolmente lo spazio colore obiettivo ed esporta nuovamente. Se il valore è invariato ma l'aspetto differisce, passa a CSS, effetti, sfondo o comportamento dell'importatore.
Per lavori di stampa che richiedono separazioni CMYK, colori spot o una specifica composizione del nero, mantieni il master autorevole per la stampa nel formato nativo dell'app grafica e consegna il formato richiesto dalla tipografia, spesso PDF. Un SVG può comunque essere utile per lo schermo, ma non deve diventare silenziosamente il riferimento colore di un flusso che non può descrivere affidabilmente.
Causa 2: currentColor o CSS hanno sostituito la pittura
SVG può essere formattato tramite CSS. La specifica degli stili SVG 2 afferma che attributi di presentazione come fill partecipano alla cascata CSS con specificità zero, quindi i CSS dell'autore possono sovrascriverli. Un SVG inline condivide anche il documento con la pagina circostante, quindi nomi di classi generici possono collidere con gli stili del sito.
currentColor è un riferimento indiretto intenzionale. Il riferimento MDN al colore SVG spiega che fornisce un valore per fill, stroke, punti di colore delle sfumature e altre proprietà di pittura. È utile per icone che devono seguire il testo circostante, ma significa anche che il file non ha un colore fisso in quel punto.
Usa una delle due strategie di consegna:
- Per un'icona web adattabile al tema, mantieni
currentColore imposta uncoloresplicito sull'SVG o sul genitore previsto. - Per una risorsa autonoma che deve mantenere la propria palette, scrivi riempimenti e tratti espliciti e delimita le classi interne con nomi che non collidano.
Quando più SVG inline contengono ID come paint0, clip0 o gradient1, rendili univoci e aggiorna insieme i riferimenti. Non cambiare soltanto l'id; ogni url(#id) deve ancora risolversi.
Se l'obiettivo è una ricolorazione deliberata anziché recuperare un cambiamento nell'esportazione, usa la guida separata a cambiare i colori SVG in sicurezza.
Causa 3: una sfumatura o un riferimento di pittura si è interrotto
Sfumature e motivi SVG sono server di pittura. Una forma vi punta tramite un riferimento come fill="url(#brandGradient)", mentre la definizione della sfumatura generalmente vive in <defs>. La specifica dei server di pittura SVG 2 definisce anche come coordinate e trasformazioni delle sfumature influenzino il risultato.
Tre controlli intercettano la maggior parte dei problemi strutturali:
- ogni
url(#id)ha una definizione corrispondente; - gli ID restano univoci dopo aver combinato più SVG in una pagina o documento;
- la destinazione conserva tipo di pittura, unità, trasformazioni e punti di colore delle sfumature usati dal file.
Se un riempimento uniforme semplice si importa correttamente ma la sfumatura no, mantieni la sfumatura nel master e crea una copia di consegna per la destinazione. Prova prima una sfumatura lineare o radiale più semplice. Se la destinazione ancora non la riproduce e l'aspetto esatto conta più della pittura modificabile, usa un formato o una risorsa appiattita supportati dal flusso ricevente. Etichetta chiaramente quella copia affinché non sostituisca la sorgente modificabile.
Causa 4: opacità e fusione hanno cambiato il risultato visibile
Il pixel visibile non è sempre il riempimento memorizzato. fill-opacity influenza il riempimento di una forma, l'opacity del gruppo viene applicata dopo aver combinato i figli e una modalità di fusione mescola la sorgente con lo sfondo. La specifica W3C Compositing and Blending definisce ordine di renderizzazione e formule di fusione dipendenti dallo sfondo.
Ci sono due conseguenze pratiche:
- Lo stesso SVG può apparire diverso su bianco, nero o una pagina colorata senza che cambi alcun valore colore.
- Spostare l'opacità da un gruppo a ogni figlio può cambiare le sovrapposizioni perché cambia l'ordine di compositing.
Prova sullo sfondo reale. Poi rimuovi mix-blend-mode, filtri, maschere e opacità del gruppo uno alla volta su un duplicato. Se la destinazione non conserva un effetto essenziale, scegli tra un trattamento vettoriale semplificato e una risorsa di consegna appiattita. Non appiattire parti estranee del disegno.
Un rettangolo bianco o colorato dietro la grafica è un caso separato. La guida agli SVG con sfondo trasparente mostra come distinguere una vera forma di sfondo da un'area vuota.
Causa 5: la destinazione ha importato soltanto parte dell'SVG
SVG è uno standard web, ma molti strumenti desktop, di stampa, taglio, presentazione e creazione di siti lo traducono nel proprio modello di oggetti. Il supporto può differire secondo applicazione e versione. Evita regole come «questa app non supporta mai le sfumature», salvo che lo dica la documentazione ufficiale attuale e corrisponda alla tua versione esatta.
Usa invece una prova di importazione controllata:
- importa un singolo tracciato con riempimento uniforme;
- aggiungi la sfumatura originale;
- aggiungi l'opacità;
- aggiungi fusione o filtro;
- fermati alla prima versione che cambia.
Ora conosci il limite di quella destinazione. Mantieni il master completo ed esporta una copia di consegna entro il limite provato. Se sono i tratti a scomparire, segui la diagnosi di esportazione specifica dei tratti anziché convertire ogni linea in riempimento.
Scegli la minima correzione sicura
| Diagnosi | Correzione sicura | Da evitare |
|---|---|---|
| I valori esportati sono cambiati | Esporta nello spazio colore previsto e verifica un campione | Sostituzioni a occhio in tutto il file |
currentColor ha cambiato la risorsa | Imposta il color del genitore previsto o sostituiscilo con pittura esplicita | Sostituire riempimenti estranei |
| CSS o ID collidono | Delimita le classi e rendi gli ID univoci aggiornando tutti i riferimenti | Aggiungere regole !important ampie |
| Manca un server di pittura | Ripristina la definizione corrispondente o riesporta l'oggetto | Indovinare un colore alternativo per ogni sfumatura |
| Fusione od opacità dipendono dal contesto | Prova lo sfondo reale; semplifica una copia di consegna se necessario | Spostare l'opacità tra gruppi e figli senza confronto |
| Un importatore perde una funzione | Riduci al sottoinsieme supportato o usa un altro formato di consegna | Danneggiare il master modificabile per soddisfare un importatore |
Dove si inserisce PerfectVector
PerfectVector è utile quando la sorgente vettoriale è già persa o inutilizzabile e la migliore grafica rimasta è raster. Puoi trasformare quell'immagine in forme vettoriali modificabili, poi ispezionare palette, trasparenza e tracciati prima di aprire il risultato nella destinazione.
Non corregge CSS ereditati, non ripristina definizioni di sfumatura mancanti, non recupera il profilo colore di un'app grafica, non preserva modalità di fusione non supportate e non cambia il parser dell'importatore. Se l'SVG contiene ancora buoni tracciati e istruzioni di pittura, correggi il file anziché ricalcare uno screenshot. Questo conserva più struttura originale.
Lista di controllo della consegna
- Mantieni il master modificabile e applica le correzioni in un duplicato.
- Confronta il file esportato nel browser e nella destinazione reale sullo stesso sfondo.
- Controlla se sono cambiati i valori serializzati di
fillestroke. - Cerca
currentColor, classi generiche e ID ripetuti. - Abbina ogni riferimento
url(#id)alla sua definizione. - Prova separatamente opacità dei gruppi, modalità di fusione, filtri e maschere.
- Semplifica soltanto la funzione che la destinazione non riesce a riprodurre.
- Riapri o reimporta il file finale di consegna prima di sostituire la versione precedente.
FAQ
Perché il mio SVG appare corretto nel browser ma sbagliato dopo l'importazione? Probabilmente usa una funzione o un contesto di stile che la destinazione traduce diversamente. Importa un tracciato uniforme, poi aggiungi di nuovo sfumatura, opacità, fusione o filtro uno alla volta. Il primo passaggio che fallisce identifica il limite della destinazione senza danneggiare il master.
I file SVG sono sempre RGB?
I comuni colori esadecimali e rgb() sono sRGB, mentre i CSS moderni possono esprimere anche spazi come Display P3. App grafiche e di stampa possono convertirli durante esportazione o importazione. Ispeziona il colore serializzato e usa il formato di produzione richiesto dalla tipografia per lavori CMYK o con colori spot.
Perché il mio SVG è diventato nero dopo l'esportazione?
Controlla se usa currentColor, ha perso una regola CSS o fa riferimento a una sfumatura o un ID di pittura mancanti. Il nero può essere un colore ereditato o un sintomo di ripiego anziché la sostituzione del riempimento originale. Confronta il file autonomo con la versione incorporata o importata.
Dovrei sostituire ogni valore esadecimale quando i colori appaiono sbagliati? No. Prima determina se i valori sono cambiati durante l'esportazione. Se i numeri sono intatti, sostituirli può nascondere un problema di CSS, riferimenti di pittura, fusione, sfondo o importatore e rendere il file meno accurato altrove.
PerfectVector può correggere un SVG con colori cambiati dopo l'esportazione? Non quando l'SVG richiede soltanto la correzione di CSS, sfumature, opacità, profilo o comportamento dell'importatore. PerfectVector è adatto quando il vettore originale è perso e devi ricostruire grafica raster piatta adatta come forme vettoriali modificabili.
Fonti
- W3C — Stili SVG 2 — Definisce stili CSS, attributi class e style, attributi di presentazione, cascata ed ereditarietà in SVG.
- MDN — Attributo SVG
color— Spiega comecurrentColorfornisca valori di pittura per riempimenti, tratti, punti di colore delle sfumature e proprietà collegate. - W3C — Server di pittura SVG 2 — Definisce sfumature lineari e radiali, riferimenti di pittura, sistemi di coordinate, trasformazioni e interpolazione colore.
- W3C — CSS Color Module Level 4 — Definisce sintassi colore sRGB e spazi predefiniti più ampi, incluso Display P3.
- W3C — Compositing and Blending Level 1 — Definisce gruppi di opacità, ordine di compositing, sfondi e modalità di fusione per SVG e CSS.
Se la migliore sorgente rimasta è un PNG o JPG, ricostruiscila come SVG con PerfectVector, poi confronta il risultato in un browser autonomo e nella destinazione finale prima di sostituire il vecchio file.
Altro dal blog

SVG feColorMatrix: ricolora senza cambiare i fill
Usa SVG feColorMatrix per ricolorare un'anteprima, mantenere la trasparenza e scegliere sRGB. Confronta il filtro con le modifiche dirette ai riempimenti.

Gradienti SVG: una sfumatura per più tracciati
Distribuisci un gradiente su più tracciati SVG di un logo. Confronta gradientUnits, imposta estremi comuni e correggi il cambio di colore di un gruppo traslato.