Ho inserito il mio commento come risposta perché la mia ipotesi era giusta. Poiché l'immagine è un'immagine .png
, può contenere pixel trasparenti. Come visto dal tuo esempio, il tuo codice sembra non funzionare. Quando si alza l'immagine, ho intuito che gli elementi bianchi della tua immagine sono effettivamente trasparenti.
Quello che ho fatto è semplicemente copiare l'immagine in MS paint e salvarla come .jpg
. Di conseguenza, poiché il formato jpg
non supporta i pixel trasparenti, non ci sono più pixel trasparenti. Quindi questo dovrebbe superare il problema invertito.
Ora, quando si esegue il codice, si vede che funziona in modo impeccabile.
img:hover {
-webkit-filter: grayscale(1) invert(1);
filter: grayscale(1) invert(1);
}
<img src="http://oi64.tinypic.com/6tibys.jpg">
Quindi, l'unica cosa che dovete fare è: aprire l'editor di immagini, e riempire questi corpi "bianchi" con colore bianco. Le parti esterne possono rimanere trasparenti. Ciò risolverà il problema, credo.
Suppongo che il colore all'interno del corpo a quei 2 maschi bianchi (indicato dalla linea nera) è non bianco, ma trasparente. – KarelG