How to Create an SVG Drop Shadow
Solution with the CSS filter property
In the example below, we have an <svg> element with a class of "shadow" and add a <rect> element inside. For the "shadow" class, we specify the CSS filter property with its "drop-shadow" value. Note that we use a -webkit-prefix with it as well.
Example of creating an SVG drop shadow with CSS:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.shadow {
-webkit-filter: drop-shadow( 4px 4px 3px rgba(0, 0, 0, .7));
filter: drop-shadow( 4px 4px 3px rgba(0, 0, 0, .7));
}
</style>
</head>
<body>
<svg class="shadow">
<rect x="10" y="10" width="200" height="100" fill="lightgreen" />
</svg>
</body>
</html>
Result
Solution with the SVG <feDropShadow> element
To create a drop shadow of an input image, you can use the SVG <feDropShadow> filter primitive, which can be used only within a <filter> element.
Here, you can change the color and opacity of the drop shadow with presentation attributes (flood-color and flood-opacity).
Example of creating an SVG drop shadow with CSS:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<svg viewBox="0 0 30 10" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="shadow">
<feDropShadow dx="0.2" dy="0.4" stdDeviation="0.2" flood-color="blue" />
</filter>
<filter id="shadow2">
<feDropShadow dx="0" dy="0" stdDeviation="0.5" flood-color="green" />
</filter>
</defs>
<circle cx="5" cy="50%" r="4" style="fill:lightgrey; filter:url(#shadow);" />
<circle cx="15" cy="50%" r="4" style="fill:lightgrey; filter:url(#shadow2);" />
</svg>
</body>
</html>