OLD | NEW |
(Empty) | |
| 1 <script> |
| 2 |
| 3 var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); |
| 4 svg.setAttribute('style', 'display: block; width: 0; height: 0'); |
| 5 |
| 6 var defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs'); |
| 7 |
| 8 var dropShadowFilter = document.createElementNS('http://www.w3.org/2000/svg', 'f
ilter'); |
| 9 dropShadowFilter.setAttribute('id', 'drop-shadow'); |
| 10 |
| 11 var gaussianFilter = document.createElementNS('http://www.w3.org/2000/svg', 'feG
aussianBlur'); |
| 12 gaussianFilter.setAttribute('in', 'SourceAlpha'); |
| 13 gaussianFilter.setAttribute('stdDeviation', '0'); |
| 14 dropShadowFilter.appendChild(gaussianFilter); |
| 15 |
| 16 var offset = document.createElementNS('http://www.w3.org/2000/svg', 'feOffset'); |
| 17 offset.setAttribute('dx', '0'); |
| 18 offset.setAttribute('dy', '0'); |
| 19 offset.setAttribute('result', 'offsetblur'); |
| 20 dropShadowFilter.appendChild(offset); |
| 21 |
| 22 var flood = document.createElementNS('http://www.w3.org/2000/svg', 'feFlood'); |
| 23 flood.setAttribute('flood-color', 'rgba(0,0,0,1)'); |
| 24 dropShadowFilter.appendChild(flood); |
| 25 |
| 26 var composite = document.createElementNS('http://www.w3.org/2000/svg', 'feCompos
ite'); |
| 27 composite.setAttribute('in2', 'offsetblur'); |
| 28 composite.setAttribute('operator', 'in'); |
| 29 dropShadowFilter.appendChild(composite); |
| 30 |
| 31 var merge = document.createElementNS('http://www.w3.org/2000/svg', 'feMerge'); |
| 32 var mergeNode = document.createElementNS('http://www.w3.org/2000/svg', 'feMergeN
ode'); |
| 33 merge.appendChild(mergeNode); |
| 34 |
| 35 var mergeNode = document.createElementNS('http://www.w3.org/2000/svg', 'feMergeN
ode'); |
| 36 mergeNode.setAttribute('in', 'SourceGraphic'); |
| 37 merge.appendChild(mergeNode); |
| 38 dropShadowFilter.appendChild(merge); |
| 39 |
| 40 defs.appendChild(dropShadowFilter); |
| 41 svg.appendChild(defs); |
| 42 |
| 43 document.body.appendChild(svg); |
| 44 |
| 45 </script> |
| 46 <svg style="display: block; width: 0; height: 0"> |
| 47 <defs> |
| 48 <filter id="drop-shadow"> |
| 49 <fegaussianblur in="SourceAlpha" stdDeviation="0"></fega
ussianblur> |
| 50 <feoffset dx="0" dy="10" result="offsetblur"></feoffset> |
| 51 <feflood flood-color="rgba(0,0,0,1)"></feflood> |
| 52 <fecomposite in2="offsetblur" operator="in"></fecomposit
e> |
| 53 <femerge> |
| 54 <femergenode></femergenode> |
| 55 <femergenode in="SourceGraphic"></femergenode> |
| 56 </femerge> |
| 57 </filter> |
| 58 </defs> |
| 59 </svg> |
| 60 <canvas id="canvas" width="100" height="100"></canvas> |
| 61 <script> |
| 62 var canvas = document.getElementById('canvas'); |
| 63 var ctx = canvas.getContext('2d'); |
| 64 ctx.filter = 'url(#drop-shadow)'; |
| 65 offset.setAttribute('dy', '10'); |
| 66 ctx.fillStyle = '#0f0'; |
| 67 ctx.fillRect(25, 25, 50, 40); |
| 68 </script> |
OLD | NEW |