2012-09-30 30 views
7

Ho due immagini, una delle quali è una piccola icona che si sovrappone alla prima immagine. La mia icona ha uno sfondo bianco, quindi quando l'icona viene posizionata sopra l'altra immagine, otteniamo questo effetto dove appare un quadrato bianco sull'immagine. Idealmente, non voglio visualizzare questo sfondo bianco sopra la mia altra immagine. C'è una proprietà CSS che posso applicare alla mia icona per rendere trasparente il suo sfondo bianco?Rendi trasparente lo sfondo dell'immagine in css

+0

È possibile rendere trasparente lo sfondo dell'icona con strumenti come Photoshop. – Kedume

+0

Non puoi fare ciò che vuoi con i CSS, devi usare uno strumento di modifica delle immagini, come diceva il commentatore precedente. – depa

risposta

-6

Il modo migliore è utilizzare un software come Photoshop o Paint.Net.

Consiglierei Paint.Net. Dovresti eliminare lo sfondo bianco in Paint.Net e salvare img come .png.

+8

L'OP ha chiesto di farlo con i CSS. Se non è possibile la risposta corretta è "no" – Paolo

+2

Accetto con @Paolo qui, non hai risposto a questa domanda. –

+4

Risposte come questa mi infastidiscono davvero perché non fanno altro che eludere completamente la domanda e rispondere a qualcosa di completamente diverso. Supponiamo, ad esempio, di collegare a caldo un grafico del prezzo delle azioni da una fonte esterna. Non puoi copiare esattamente il file in paint.net ogni minuto e modificarlo, vero? –

1

No, non ancora ...

Si iss sempre molto vicino al possibile, anche se. Dai un'occhiata a questo articolo sui filtri CSS, una funzione css sperimentale, che sta facendo alcune cose sul lato client che sono pulite.

CSS Filters

+0

I filtri CSS ora sono attivati ​​Di default in Firefox. –

39

in realtà c'è un modo anche se solo attualmente supportato su Chrome, Firefox e Safari. Se il colore di sfondo è bianco, è possibile aggiungere la proprietà CSS:

mix-blend-mode: multiply; 

Si può leggere di più su di esso qui: https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode

+0

wow, so che è stato anche possibile, bello !!! – dreamweiver

+0

Funziona come una magia! Bella risposta! –

+0

Ma questa tecnica non ha funzionato per il browser IE! –

1

mix-blend-mode funziona per alcuni browser, ma abbiamo scoperto che essa provoca prestazioni problemi in chrome, Non ho idea del perché.

Ci è questo genio incidere in cui si crea un layer che è per lo più trasparente, ma quando è posato su uno sfondo bianco, è il colore corrisponderà al colore dello sfondo circostante.

Non mi ricordo dove abbiamo trovato l'hack, se qualcuno sa dove è stato pubblicato, per favore fatemelo sapere nei commenti

Il modo in cui questo colore "magico" si trova; è calcolando quanto deve essere più scuro ogni asse del colore per la quantità di opacità rimossa. La formula per questo è 255 - (255 - x)/opacity. Il problema è: se l'opacità è impostata su un valore troppo basso, la formula ti dà numeri negativi (che non possono essere usati). Se l'opacità è troppo alta, otterrai delle colorazioni sulle parti non bianche dell'immagine.
Inizialmente abbiamo usato un foglio di calcolo che avrebbe eseguito i calcoli e attraverso la prova e l'errore manuale avremmo trovato il colore Goldilox.
Una volta iniziato a usare sass, mi sono reso conto che questo può essere ottenuto con una ricerca binaria. Così ho creato una funzione sass che fa il lavoro per noi.

Check out this gist su sassmeister. Passa il colore dello sfondo alla funzione opacitator sulla riga 56 del codice sass. e utilizzare il colore rgba generato in un div (o uno pseudo elemento) per sovrapporre l'immagine.

1

È possibile creare un contenitore per l'immagine. Poi per il css del contenitore:

overflow:hidden; height: (depends on your image, then make it a smaller px); width:100%; 

Speranza che aiuta. :)