2012-03-26 10 views
5

Qualcuno sa se è ancora possibile creare un'ombra esterna basata su CSS su un'immagine PNG in background trasparente?È possibile creare un'ombra css su un'immagine PNG in background trasparente?

Forse con CSS3, jquery o lato server?

Esempio dopo l'effetto di quello che sto cercando di acheive:

Example

Abbastanza sicuro se è possibile non sarebbe cross browser, ma disposti ad applicare se si degrada bene?

Sentitevi liberi di aggiungere si immette, le tecniche di discussione aperta ..

+0

non riesco a immaginare che sia possibile. Come fa il browser a sapere qual è il mascheramento dell'immagine per gettare l'ombra? – MetalFrog

+0

Non è quella l'immagine del tutorial su come fare esattamente ciò che stai chiedendo qui: http://lineandpixel.com/blog/png-hadow? –

+1

duplicato probabile: http://stackoverflow.com/questions/3186688/drop-shadow-for-png-image-in-css – RozzA

risposta

0

CSS non ha idea di quale sia la forma dell'immagine è, pertanto, non può determinare il contorno e non può applicare un'ombra ad esso.

È possibile creare una copia nera dell'immagine e posizionarla dietro di essa, usando z-index, offset direzionali e un po 'di opacità. Questo è tutto.

+0

Prima di utilizzare 2 immagini solo per creare un'ombra in un png, quindi rendere l'ombra migliore direttamente in png. –

+0

Sì, a questo punto non fa alcuna differenza. Tuttavia non puoi risolvere questo problema dal lato client. Hai bisogno di guardare una soluzione lato server. –

+0

@diodeus immagino tu possa ottenere l'immagine come blob e lavorare sui dati con javascript, quindi non direi "impossibile", ma più probabilmente "non voglio" ... :) – Christoph

0

No, non è possibile. Anche quando lo sfondo è trasparente, l'immagine è ancora un rettangolo e l'ombra verrà applicata al bordo intorno.

Quello che puoi fare è mettere un'ombra grafica direttamente nel png. Funziona benissimo su uno sfondo trasparente.

8

SI! È possibile creare ombre su un file .png trasparente in CSS3! Ne avevo bisogno in un progetto che si stava rivelando come spazzatura in IE10. Invece di usare box-shadow, usa filter: drop-shadow(). La sintassi è praticamente la stessa. Ecco l'articolo: link

La soluzione finale è questo (in caso di rottura link):

.filter-drop-shadow { 
    -webkit-filter: drop-shadow(0 1px 2px rgba(0,0,0,.5)); 
    -moz-filter: drop-shadow(0 1px 2px rgba(0,0,0,.5)); 
    -ms-filter: drop-shadow(0 1px 2px rgba(0,0,0,.5)); 
    -o-filter: drop-shadow(0 1px 2px rgba(0,0,0,.5)); 
    filter: drop-shadow(0 1px 2px rgba(0,0,0,.5)); 
} 
+1

Aaaand l'ho trovato! Invece di usare box-shadow, usa filter: drop-shadow(). La sintassi è praticamente la stessa. Ecco l'articolo: [link] (http://bricss.net/post/33158273857/box-shadow-vs-filter-drop-shadow) –

+0

Il tuo commento è più prezioso della tua risposta. Dovresti modificare la risposta, in quanto non aiuta molto (senza il commento). – looper

+0

Fatto. Grazie per il consiglio. –

Problemi correlati