Can you animate a svg "background-image"?

I want to center a svg-image horzontal and vertical responsive to my window. So I decided to integrate the image in a div background. Now when i want to add stroke-dasharray's and animations with stroke-dashoffset to my svg it doesn't work.

Is this posibble to animate a svg background image?

The svg-image consists only out of many lines.Here my svg file (there are much more lines with only different x and y values):

<svg version="1.1" xmlns="" xmlns:xlink="" x="0px" y="0px" viewBox="0 0 1920 1200" xml:space="preserve">
<g>
<line stroke-linecap="round" fill="none" stroke="#FFFFFF" stroke-width="3" stroke-miterlimit="10" x1="960" y1="600" x2="2346.139" y2="-42.064"/>
</g>
</svg>

And here my Html and Css files:

html, body { padding: 0; margin: 0; height: 100%; width: 100%; background-color: red;
}
.Container { position: relative; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 100%; height: 100%; background-image: url(Space.svg); background-size: cover; background-position: center;
}
.path { stroke-dasharray: 20;
}
 <body> <div> </div> </body>
5

1 Answer

You can animate ... but only in browsers that support it - out you go IE and some other browsers (Edit, as of 2018 Edge now supports this).

This example uses CSS for the animation ... I have successfully used <animate> tags but have not tested extensively.

.svg { background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg width='300' height='70' viewBox='0 0 300 70' xmlns=' type='text/css'%3E %23a%7Banimation:x .5s ease alternate 14%7D%40keyframes x%7Bfrom%7Bfill:%23c2c2c2%7Dto%7Bfill:%23fff%7D%7D%3C/style%3E%3Crect id='a' x='14' y='23' width='28' height='28' fill='%23c2c2c2' /%3E%3Crect x='52' y='33' width='100' height='11' fill='%23c2c2c2' /%3E%3C/svg%3E"); background-repeat: no-repeat; min-height: 200px;
}
<div>Look at my background</div>

Note the actual encoded SVG used above (that I have used in production for an inline UX improvement for a slow-loading google recaptcha iframe) is:

<svg width="300" height="70" viewBox="0 0 300 70" xmlns=""> <style type="text/css"> #a { animation: x .5s ease alternate 14; } @keyframes x { from { fill: #000; } to { fill: #fff; } } </style> <rect x="14" y="23" width="28" height="28" fill="#000" /> <rect x="52" y="33" width="100" height="11" fill="#000" />
</svg>
6

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like