Shadow for rect in svg - html
I need to make a shadow for rect element for svg. The snippet below does the job, but I don't know how to control the color/opacity of the shadow? Any help will be appreciated!
<svg height="120" width="120">
<defs>
<filter id="f1" x="0" y="0" width="200%" height="200%">
<feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" />
<feBlend in="SourceGraphic" in2="offOut" mode="normal" />
</filter>
</defs>
<rect width="90" height="90" stroke="green" stroke-width="3" fill="yellow" filter="url(#f1)" />
Came across this w3schools page with similar examples. Based on the examples given there, it looks like you need to add few more filters (like feColorMatrix and feGaussianBlur) to bring the desired effect.
Your code with new filters:
<svg height="120" width="120">
<defs>
<filter id="f1" x="0" y="0" width="200%" height="200%">
<feOffset result="offOut" in="SourceGraphic" dx="10" dy="10" />
<feColorMatrix result="matrixOut" in="offOut" type="matrix"
values="0.2 0 0 0 0 0 0.2 0 0 0 0 0 0.2 0 0 0 0 0 1 0" />
<feGaussianBlur result="blurOut" in="matrixOut" stdDeviation="10" />
<feBlend in="SourceGraphic" in2="blurOut" mode="normal" /> </filter>
</defs>
<rect width="90" height="90" stroke="green" stroke-width="3" fill="yellow" filter="url(#f1)" />
You can use this jsfiddle also.
Update:
We can achieve opacity & color change just with feColorMatrix filter. Check this updated jsFiddle.
But, in order achieve the desired color you need to understand more about setting values attribute of feColorMatrix.
Following links may be helpful:
Match colors in feColorMatrix filter
https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feColorMatrix
SVG Drop Shadow - opacity, feOffset and viewBox difficulties
Related
How to make svg sprite a regular picture?
I have such a picture for the background. It should be made normal and put in background <svg class="iphone-background__img" viewBox="0 0 991 828" fill="none" xmlns="http://www.w3.org/2000/svg"> <g filter="url(#filter0_f_479_2171)"> <path d="M726.689 447.055C636.6 301.175 399.748 283.135 292.584 292.35C204.911 229.864 267.12 198.986 369.452 84.6792C471.785 -29.6278 716.462 36.8959 857.979 37.8365C999.495 38.777 1120.33 339.695 1101.17 471.585C1082.02 603.476 839.301 629.405 726.689 447.055Z" fill="#FA00FF" fill-opacity="0.2" /> </g> <defs> <filter id="filter0_f_479_2171" x="0.806396" y="-232.258" width="1352.37" height="1059.42" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> <feFlood flood-opacity="0" result="BackgroundImageFix" /> <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape" /> <feGaussianBlur stdDeviation="125" result="effect1_foregroundBlur_479_2171" /> </filter> </defs> </svg>
SVG light and shadow a 3D feelling
I want to make an svg looks like it's on 3D by adding a small light in the top and left BORDER and a shadow in the bottom and right BORDER something like this #div1 { background: #ddd; } #div1, #div2, #div3 { width: 100px; height: 100px; position: relative; } #div2 { box-shadow: inset -2px -2px 10px 1px #000; position: absolute; } #div3 { box-shadow: inset 2px 2px 14px 1px #fff; position: absolute; } <div id="div1"> <div id="div2"></div> <div id="div3"></div> </div> But I don't know how to do that with svg filter <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="1000"> <defs> <filter id="filter1" x="0" y="0"> <feSpecularLighting result="specOut" specularExponent="20" lighting-color="#bbbbbb"> <fePointLight x="-100" y="-100" z="600"/> </feSpecularLighting> <feComposite in="SourceGraphic" in2="specOut" operator="arithmetic" k1="0" k2="1" k3="1" k4="0"/> </filter> </defs> <path filter="url(#filter1)" fill="#fff" stroke="#000" d="M20,20 L220,20 L220,220 L20,220 L20,20 "></path> </svg> Help please and thanks
Firstly, you are trying to light a pure white rectangle with a dim white light. You aren't going to see anything. If you make the rectangle darker, you'll start to see some effect. <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="300"> <defs> <filter id="filter1" x="0" y="0"> <feSpecularLighting result="specOut" specularExponent="20" lighting-color="#bbbbbb"> <fePointLight x="-100" y="-100" z="600"/> </feSpecularLighting> <feComposite in="SourceGraphic" in2="specOut" operator="arithmetic" k1="0" k2="1" k3="1" k4="0"/> </filter> </defs> <path filter="url(#filter1)" fill="#666" stroke="#000" d="M20,20 L220,20 L220,220 L20,220 L20,20 "></path> </svg> But in the above example we are only getting gradient of light over our rectangle. How do we make a sort-of bevel edge on the rectangle? It is important to know that it is not really the RGB channels of an element that determine how the lighting filter components behave. The lighting components treat the alpha component of the colour as a bump map. Varying values of alpha become a topological map that effects the way the pixels are lit. One way to create varying values of alpha is to use a gaussian blur filter. Here's what that looks like. Note that it is the alpha channel (SourceAlpha) of our shape that we are blurring. <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="300"> <defs> <filter id="filter2"> <feGaussianBlur in="SourceAlpha" stdDeviation="8" result="blur1"/> <feBlend in="SourceGraphic" in2="blur1" mode="multiply"/> </filter> </defs> <path filter="url(#filter2)" fill="#666" stroke="#000" d="M20,20 L220,20 L220,220 L20,220 L20,20 "></path> </svg> Now if use that blurred alpha channel, we get something close to what you are after. You can fiddle with the blur, the lighting filter values, and the feComposite values to adjust the effect. Note that I've also switched to using an feDistantLight here. I think it is more appropriate for this purpose. <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="300"> <defs> <filter id="filter2"> <feGaussianBlur in="SourceAlpha" stdDeviation="8" result="blur1"/> <feSpecularLighting result="specOut" in="blur1" specularConstant="1.2" specularExponent="12" lighting-color="#fff"> <feDistantLight azimuth="225" elevation="45"/> </feSpecularLighting> <feComposite in="SourceGraphic" in2="specOut" operator="arithmetic" k1="0" k2="1" k3="1" k4="0"/> </filter> </defs> <path filter="url(#filter2)" fill="#666" stroke="#000" d="M20,20 L220,20 L220,220 L20,220 L20,20 "></path> </svg> Update To handle the situation where shapes overlap (see comments), then you will need to clip away any parts of the blur that is outside the shape. You can do that with another feComposite operation. <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="300"> <defs> <filter id="filter2"> <feGaussianBlur in="SourceAlpha" stdDeviation="8" result="blur1"/> <feSpecularLighting result="specOut" in="blur1" specularConstant="1.2" specularExponent="12" lighting-color="#fff"> <feDistantLight azimuth="225" elevation="45"/> </feSpecularLighting> <feComposite in="SourceGraphic" in2="specOut" operator="arithmetic" k1="0" k2="1" k3="1" k4="0" result="result"/> <feComposite operator="atop" in2="SourceGraphic"/> </filter> </defs> <path filter="url(#filter2)" fill="#666" stroke="#000" d="M20,20 L220,20 L220,220 L20,220 L20,20 "></path> <path filter="url(#filter2)" fill="#666" stroke="#000" d="M40,40 L200,40 L200,110 L40,110 L40,40 "></path> <path filter="url(#filter2)" fill="#666" stroke="#000" d="M40,120 L200,120 L200,200 L40,200 L40,120 "></path> </svg>
Add filter only to <image/> inside SVG, but not to the entire SVG
I have small problem with styling SVG and image inside. In SVG I have two filters. First effect (#innershadow) is to whole SVG object, second I want to apply only to image inside, because wave (#turbulance) effect spoils the whole svg object. The effect I want to achieve is sharp edges with shadows inside SVG and a blurred image inside. (SVG and #turbulance effect is animated) Is it possible? .svg { filter: url("#innershadow") url("#turbulence"); } <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 2100 1500" class="svg" x="0px" y="0px"> <filter id="innershadow" x="-50%" y="-50%" width="200%" height="200%"> <feGaussianBlur in="SourceAlpha" stdDeviation="10" result="blur"></feGaussianBlur> <feOffset dy="12" dx="12"></feOffset> <feComposite in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowDiff"></feComposite> <feFlood flood-color="#444444" flood-opacity="0.75"></feFlood> <feComposite in2="shadowDiff" operator="in"></feComposite> <feComposite in2="SourceGraphic" operator="over" result="firstfilter"></feComposite> <feGaussianBlur in="firstfilter" stdDeviation="10" result="blur2"></feGaussianBlur> <feOffset dy="-12" dx="-12"></feOffset> <feComposite in2="firstfilter" operator="arithmetic" k2="-1" k3="1" result="shadowDiff"></feComposite> <feFlood flood-color="#444444" flood-opacity="0.75"></feFlood> <feComposite in2="shadowDiff" operator="in"></feComposite> <feComposite in2="firstfilter" operator="over"></feComposite> </filter> <filter id="turbulence" x="0" y="0" width="100%" height="100%"> <feTurbulence id="sea-filter" numOctaves="0.1" seed="2" baseFrequency="0.02 0.05"></feTurbulence> <feDisplacementMap scale="20" in="SourceGraphic"></feDisplacementMap> <animate xlink:href="#sea-filter" attributeName="baseFrequency" dur="60s" keyTimes="0;0.5;1" values="0.02 0.06;0.04 0.08;0.02 0.06" repeatCount="indefinite"/> </filter> <defs> <pattern id="img1" patternUnits="userSpaceOnUse" x="0" y="0" height="100%" width="100%"> <image xlink:href="../../assets/images/backgrounds/wall-main.png" x="0" y="0" height="100%" width="100%" preserveAspectRatio="xMidYMid slice"/> </pattern> </defs> <path fill="url(#img1)" filter="url(#innershadow); url(#turbulence)" > <animate repeatCount="indefinite" attributeName="d" dur="5s" values="M382,118c100.383-77.825,276.671,59.258,448,34,65.577-9.668,196.57-94.87,294-58,83.39,31.556,92.13,116.309,174,136,108.23,26.031,207.9-110.974,286-74,61.42,29.075,37.81,132.343,110,186,47.83,35.547,81.23,14.642,132,52,51.7,38.043,88.14,109.739,82,176-6.17,66.5-50.93,79.125-60,144-10.14,72.489,46.43,113.009,26,170-29.24,81.6-166.19,63.417-218,148-53.48,87.31,29.83,209.23-26,264-44.42,43.57-141.41-7.81-226,14-93.36,24.07-100.33,81.2-194,104-111.76,27.2-217.186-20.32-268-52-70.153-43.73-98.14-121.36-180-146-83.052-25-141.572,21.65-252,46-131.847,29.08-259.955,29.4-324-40-85.126-92.25,17.341-275.707-12-436-23.665-129.279-80.6-204.706-36-294,33.223-66.508,93.383-72.786,138-128C349.1,273.539,310,173.817,382,118Z; M500,190c90.412-66.126,238.022,65.138,388,26,86.586-22.595,152.56-120.7,236-104,94.03,18.821,101.05,142.366,196,170,115.58,33.639,245.25-120.028,314-76,38.98,24.962,16.27,88.038,60,136,36.16,39.655,72.52,30.721,114,68,29.47,26.484,75.25,85.812,64,146-15.53,83.071-131.92,94.889-144,172-12.37,78.965,107.48,140.205,90,192-28.41,84.17-381.55,26.287-402,96-14.33,48.86,147.88,116.62,138,192-4.81,36.7-57.51,62.76-150,102-79.12,33.57-154.38,62.03-210,70-115.07,16.49-217.716-1.22-252-18-104.652-51.21-150.906-194.87-242-198-73.985-2.54-105.059,84.42-190,98-112.843,18.04-211.468-78.6-246-120-83.04-99.54-53.27-201.986-90-356-36.055-151.181-93.562-237.142-48-288,55.26-61.683,186.476,13.989,268-52C476.816,378.965,421.53,247.392,500,190Z; M500,238C621.91,181.654,670.957,61.767,796,44c50.491-7.174,172,34.215,306,118,95.1,59.463,151.04,109.438,226,112,134.95,4.612,236.05-139.415,334-104,60.82,21.99,62.5,101.2,122,156,35.17,32.392,126.79,61.5,136,110,9.71,51.11-75.16,127.335-96,168-43.83,85.544-49.3,148.558-38,198,22.31,97.671,140.35,163.962,124,220-15.75,53.99-135.29,38.81-192,106-67.3,79.73-5.52,200.99-70,254-55.53,45.65-226.87-25.52-290-30-68.89-4.89-132.47,22.44-214-4-84.21-27.3-124.8-95.16-216-108-84.892-11.95-141.558,31.08-236,76-153.42,72.98-293.092,83.99-342,70-117.669-33.66-209.643-140.55-242-250-37.527-126.93,29.383-207.227,24-322C126.26,691.617,18.046,548.78,70,440c17.439-36.513,83.745-86.988,188-128C347.2,276.909,413.476,277.991,500,238Z; M382,118c100.383-77.825,276.671,59.258,448,34,65.577-9.668,196.57-94.87,294-58,83.39,31.556,92.13,116.309,174,136,108.23,26.031,207.9-110.974,286-74,61.42,29.075,37.81,132.343,110,186,47.83,35.547,81.23,14.642,132,52,51.7,38.043,88.14,109.739,82,176-6.17,66.5-50.93,79.125-60,144-10.14,72.489,46.43,113.009,26,170-29.24,81.6-166.19,63.417-218,148-53.48,87.31,29.83,209.23-26,264-44.42,43.57-141.41-7.81-226,14-93.36,24.07-100.33,81.2-194,104-111.76,27.2-217.186-20.32-268-52-70.153-43.73-98.14-121.36-180-146-83.052-25-141.572,21.65-252,46-131.847,29.08-259.955,29.4-324-40-85.126-92.25,17.341-275.707-12-436-23.665-129.279-80.6-204.706-36-294,33.223-66.508,93.383-72.786,138-128C349.1,273.539,310,173.817,382,118Z "/> </path> </svg>
Since the expected results has sharp edges the #turbolence filter must be applied only to the fill. To achieve this, shape and fill must be on separate layers: an easy solution is to create a <rect> filled with your image and an animated <mask> for the sharp edge. In the CSS, then, it is possible to assign each single filter to the right element. .svg { filter: url("#innershadow"); } .svg .myfill { filter: url("#turbulence"); } <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 2100 1500" class="svg" x="0px" y="0px"> <filter id="innershadow" x="-50%" y="-50%" width="200%" height="200%"> <feGaussianBlur in="SourceAlpha" stdDeviation="10" result="blur"></feGaussianBlur> <feOffset dy="12" dx="12"></feOffset> <feComposite in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowDiff"></feComposite> <feFlood flood-color="#444444" flood-opacity="0.75"></feFlood> <feComposite in2="shadowDiff" operator="in"></feComposite> <feComposite in2="SourceGraphic" operator="over" result="firstfilter"></feComposite> <feGaussianBlur in="firstfilter" stdDeviation="10" result="blur2"></feGaussianBlur> <feOffset dy="-12" dx="-12"></feOffset> <feComposite in2="firstfilter" operator="arithmetic" k2="-1" k3="1" result="shadowDiff"></feComposite> <feFlood flood-color="#444444" flood-opacity="0.75"></feFlood> <feComposite in2="shadowDiff" operator="in"></feComposite> <feComposite in2="firstfilter" operator="over"></feComposite> </filter> <filter id="turbulence" x="0" y="0" width="100%" height="100%"> <feTurbulence id="sea-filter" numOctaves="0.1" seed="2" baseFrequency="0.02 0.05"></feTurbulence> <feDisplacementMap scale="20" in="SourceGraphic"></feDisplacementMap> <animate xlink:href="#sea-filter" attributeName="baseFrequency" dur="60s" keyTimes="0;0.5;1" values="0.02 0.06;0.04 0.08;0.02 0.06" repeatCount="indefinite"/> </filter> <defs> <pattern id="img1" patternUnits="userSpaceOnUse" x="0" y="0" height="100%" width="100%"> <image xlink:href="../../assets/images/backgrounds/wall-main.png" x="0" y="0" height="100%" width="100%" preserveAspectRatio="xMidYMid slice"/> </pattern> <mask id="myMask"> <path fill="#fff"> <animate repeatCount="indefinite" attributeName="d" dur="5s" values="M382,118c100.383-77.825,276.671,59.258,448,34,65.577-9.668,196.57-94.87,294-58,83.39,31.556,92.13,116.309,174,136,108.23,26.031,207.9-110.974,286-74,61.42,29.075,37.81,132.343,110,186,47.83,35.547,81.23,14.642,132,52,51.7,38.043,88.14,109.739,82,176-6.17,66.5-50.93,79.125-60,144-10.14,72.489,46.43,113.009,26,170-29.24,81.6-166.19,63.417-218,148-53.48,87.31,29.83,209.23-26,264-44.42,43.57-141.41-7.81-226,14-93.36,24.07-100.33,81.2-194,104-111.76,27.2-217.186-20.32-268-52-70.153-43.73-98.14-121.36-180-146-83.052-25-141.572,21.65-252,46-131.847,29.08-259.955,29.4-324-40-85.126-92.25,17.341-275.707-12-436-23.665-129.279-80.6-204.706-36-294,33.223-66.508,93.383-72.786,138-128C349.1,273.539,310,173.817,382,118Z; M500,190c90.412-66.126,238.022,65.138,388,26,86.586-22.595,152.56-120.7,236-104,94.03,18.821,101.05,142.366,196,170,115.58,33.639,245.25-120.028,314-76,38.98,24.962,16.27,88.038,60,136,36.16,39.655,72.52,30.721,114,68,29.47,26.484,75.25,85.812,64,146-15.53,83.071-131.92,94.889-144,172-12.37,78.965,107.48,140.205,90,192-28.41,84.17-381.55,26.287-402,96-14.33,48.86,147.88,116.62,138,192-4.81,36.7-57.51,62.76-150,102-79.12,33.57-154.38,62.03-210,70-115.07,16.49-217.716-1.22-252-18-104.652-51.21-150.906-194.87-242-198-73.985-2.54-105.059,84.42-190,98-112.843,18.04-211.468-78.6-246-120-83.04-99.54-53.27-201.986-90-356-36.055-151.181-93.562-237.142-48-288,55.26-61.683,186.476,13.989,268-52C476.816,378.965,421.53,247.392,500,190Z; M500,238C621.91,181.654,670.957,61.767,796,44c50.491-7.174,172,34.215,306,118,95.1,59.463,151.04,109.438,226,112,134.95,4.612,236.05-139.415,334-104,60.82,21.99,62.5,101.2,122,156,35.17,32.392,126.79,61.5,136,110,9.71,51.11-75.16,127.335-96,168-43.83,85.544-49.3,148.558-38,198,22.31,97.671,140.35,163.962,124,220-15.75,53.99-135.29,38.81-192,106-67.3,79.73-5.52,200.99-70,254-55.53,45.65-226.87-25.52-290-30-68.89-4.89-132.47,22.44-214-4-84.21-27.3-124.8-95.16-216-108-84.892-11.95-141.558,31.08-236,76-153.42,72.98-293.092,83.99-342,70-117.669-33.66-209.643-140.55-242-250-37.527-126.93,29.383-207.227,24-322C126.26,691.617,18.046,548.78,70,440c17.439-36.513,83.745-86.988,188-128C347.2,276.909,413.476,277.991,500,238Z; M382,118c100.383-77.825,276.671,59.258,448,34,65.577-9.668,196.57-94.87,294-58,83.39,31.556,92.13,116.309,174,136,108.23,26.031,207.9-110.974,286-74,61.42,29.075,37.81,132.343,110,186,47.83,35.547,81.23,14.642,132,52,51.7,38.043,88.14,109.739,82,176-6.17,66.5-50.93,79.125-60,144-10.14,72.489,46.43,113.009,26,170-29.24,81.6-166.19,63.417-218,148-53.48,87.31,29.83,209.23-26,264-44.42,43.57-141.41-7.81-226,14-93.36,24.07-100.33,81.2-194,104-111.76,27.2-217.186-20.32-268-52-70.153-43.73-98.14-121.36-180-146-83.052-25-141.572,21.65-252,46-131.847,29.08-259.955,29.4-324-40-85.126-92.25,17.341-275.707-12-436-23.665-129.279-80.6-204.706-36-294,33.223-66.508,93.383-72.786,138-128C349.1,273.539,310,173.817,382,118Z "/> </path> </mask> </defs> <rect class="myfill" fill="url(#img1)" filter="url(#innershadow) url(#turbulence)" mask="url(#myMask)" width="2100" height="1500" ></rect> </svg>
SVG feGaussianBlur stdDeviation value issue in IE
I have this SVG code in my HTML that renders a triangle with a shadow below it: <svg class="svg-triangle"> <defs> <filter id="shadow" x="0" y="0" width="200%" height="200%"> <feOffset result="offOut" in="SourceAlpha" dx="0" dy="-1" /> <feGaussianBlur result="blurOut" in="offOut" stdDeviation="2,5" /> <feBlend in="SourceGraphic" in2="blurOut" mode="normal" /> </filter> </defs> <polygon points="0,0 22,0 11,7" filter="url(#shadow)"/> </svg> That code works fine on Chrome and Firefox, but that's what happens when it get rendered on Internet Explorer 11, the gaussian blur stdDeviation value becomes: <feGaussianBlur result="blurOut" in="offOut" stdDeviation="1.65726e+009" /> And the shadow is obviously not showed Any ideas on why this is happening? Thank you
SVG drop shadow with filters is truncated
I am trying to make a drop shadow for the following SVG shape: <svg style="overflow:visible; "> <defs> <marker orient="auto" refY="4" refX="2" markerHeight="13" markerWidth="13" id="_x0000_s1094end"> <path style="fill:yellow; " d="M2,2 L2,6 L6,4 L2,2" /> </marker> </defs> <path d="M 288,164 L 108,176" style="stroke-width:8; stroke:yellow; marker-end:url(#_x0000_s1094end); " y="4" x="4"/> </svg> After the drop shadow the shape is suppossed to look like this (ignore the bits except for the arrow and its shadow): I tried the following SVG: <svg style="overflow:visible; "> <defs> <marker orient="auto" refY="4" refX="2" markerHeight="13" markerWidth="13" id="_x0000_s1094end"> <path style="fill:yellow; " d="M2,2 L2,6 L6,4 L2,2" /> </marker> <filter id="f1" x="0" y="0" width="500%" height="500%"> <feOffset result="offOut" in="SourceAlpha" dx="-8" dy="-8" /> <feBlend in="SourceGraphic" in2="offOut" mode="normal" /> </filter> </defs> <path d="M 288,164 L 108,176" style="stroke-width:8; stroke:yellow; marker-end:url(#_x0000_s1094end); " y="4" x="4" filter="url(#f1)"/> </svg> http://fiddle.jshell.net/md3rT/ What I get is this: The resulting SVG is coming out truncated. Also, how can I change the opacity of the shadow? Thanx in advance!
To stop truncating, just make the filter cover the shape (the drop shadow is above and to the left so the filter needs to cover that region). <filter id="f1" x="-180%" y="-500%" width="500%" height="1000%"> <feOffset result="offOut" in="SourceAlpha" dx="-8" dy="-8" /> <feBlend in="SourceGraphic" in2="offOut" mode="normal" /> </filter> If you want the shadow not to be opaque, something involving a non-opaque flood would seem to do the trick. For a general drop shadow you need something like this... <feGaussianBlur in="alpha-channel-of-feDropShadow-in" stdDeviation="stdDeviation-of-feDropShadow"/> <feOffset dx="dx-of-feDropShadow" dy="dy-of-feDropShadow" result="offsetblur"/> <feFlood flood-color="flood-color-of-feDropShadow" flood-opacity="flood-opacity-of-feDropShadow"/> <feComposite in2="offsetblur" operator="in"/> <feMerge> <feMergeNode/> <feMergeNode in="in-of-feDropShadow"/> </feMerge> Although, in Firefox and Chrome you can use the SVG Filter Effects <feDropShadow> filter or a CSS drop-shadow filter instead.
This is what I think you're looking for. It expands the filter region, keeps the drop shadow unblurred and dials the opacity on the shadow down to 50%. (I've also found browsers to get crotchety when you don't provide explicit dimensions for inline SVG.) <svg x="0px" y="0px" width="500px" height="300px" style="overflow:visible;" viewBox="0 0 500 300"> <defs> <marker orient="auto" refY="4" refX="2" markerHeight="13" markerWidth="13" id="_x0000_s1094end"> <path style="fill:yellow; " d="M2,2 L2,6 L6,4 L2,2" /> </marker> <filter id="f1" x="-50%" y="-100%" width="200%" height="400%"> <feOffset result="offOut" in="SourceAlpha" dx="-8" dy="-8" /> <feComponentTransfer> <feFuncA type="discrete" tableValues="0 .5"/> </feComponentTransfer> <feComposite operator="over" in="SourceGraphic"/> </filter> </defs> <path d="M 288,164 L 108,176" style="stroke-width:8; stroke:yellow; marker-end:url(#_x0000_s1094end); " y="4" x="4" filter="url(#f1)"/> </svg>