2010-10-07 12 views

risposta

11

Aggiunta di un collegamento a Raphael.blur in una risposta separata, secondo la richiesta dell'OP.

http://github.com/DmitryBaranovskiy/raphael/blob/master/plugins/raphael.blur.js

esempio di codice Aggiornamento:

var shadow = canvas.path(p); 
shadow.attr({stroke: "none", fill: "#555", translation: "4,4"}); 
shadow.blur(4); 
var shape = canvas.path(p); 

Si noti che nei commenti di Dmitry accenna che non v'è alcun supporto WebKit. Usa l'elemento <filter> e l'effetto del filtro feGaussianBlur. WebKit ha implementato l'effetto feGaussianBlur, ma i filtri sono unstable e sono disabilitati in Safari (potrebbe funzionare in Chrome 5 - dovrebbero sicuramente funzionare in Chrome 6).

+0

La funzione '.blur' non è documentata? Non riesco a trovarlo da nessuna parte sui documenti di Raphael. O è nativo? –

+0

È un plug-in di Raphael. Puoi ottenerlo al link sopra e includerlo nella tua pagina dopo raphael.js. –

+3

L'URL del plugin sembra essere rotto (ottenendo un 404), qualcuno ha un link funzionante? – soulBit

2

Il modo più semplice per farlo è semplicemente disegnare l'oggetto con un riempimento di colore sfumato, spostato di alcuni pixel, quindi disegnare l'oggetto sopra.

var shadow = canvas.path(p); 
shadow.attr({stroke: "none", fill: "#555", translation: "4,4"}); 
var shape = canvas.path(p); 

È anche possibile regolare l'attributo opacità se necessario.

+0

ma un riempimento un'ombra colorata avrà un bordo solido. Sto cercando un bordo sfocato, dal grigio chiaro allo 0% alfa. sai? –

+1

Raphael ha un plug-in di sfocatura. Non l'ho mai usato, quindi non posso garantire per questo, ma è da Dmitry quindi possiamo presumere che lui sa cosa sta facendo ;-) http://github.com/DmitryBaranovskiy/raphael/blob/master/plugins/ raphael.blur.js –

+0

Oh questo è interessante. Dovresti inviarlo come risposta e lo accetterò. Se non lo fai, risponderò io stesso in 3 giorni. Grazie. Ancora l'ombra esterna dovrebbe essere codificata in Raphael per renderla più semplice. –

15

È possibile utilizzare il Element.glow([glow]) per ottenere un effetto ombra. http://raphaeljs.com/reference.html#Element.glow

+0

+1 che ha funzionato per me. Sto facendo un widget generico di bolle usando Raphael e jQuery. Questo aiuta, grazie. –

+0

Grazie per questo, non pensavo di usare il bagliore. Le impostazioni predefinite per il bagliore sono di un colore nero con una opacità di 0,5 che suggerisce che è destinato a essere utilizzato per disegnare le ombre esterne. –

+0

Il collegamento in questa risposta è ora inattivo. Penso che ora tu debba usare un plugin. –

0

È possibile utilizzare un bagliore per aggiungere ombre.

.glow({ color: '#900', width:10, offsetx:5 }) // random example...

check out il documentation

Problemi correlati