2

I have an animated SVG whose animation I would like to show when it is being revealed. In other words I need the SVG animation to start only when the user scrolls down to it! But it starts after the page has loaded and finishes immediately before even the user can see it.

Here is my SVG code:

<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="58px" height="58px" viewBox="0 0 58 58" enable-background="new 0 0 58 58" xml:space="preserve" style="height: 85px; width: 85px;">
              <path fill="none" stroke="#E31E26" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M10.946,23.818
 c0.638-0.516,1.297-1.05,1.929-1.592c0.491-0.419,0.92-0.536,1.503-0.411c0.807,0.175,1.642,0.303,2.526,0.441
 c0.325,0.05,0.663,0.103,1.013,0.159c-0.221-0.269-0.436-0.524-0.644-0.773c-0.591-0.708-1.151-1.378-1.651-2.07
 c-0.248-0.343-0.387-0.891-0.34-1.332c0.092-0.853,0.246-1.713,0.394-2.543c0.05-0.276,0.099-0.551,0.146-0.826
 c-0.673,0.422-1.284,0.895-1.875,1.354c-0.307,0.238-0.625,0.484-0.941,0.717c-0.334,0.243-0.851,0.386-1.257,0.34
 c-0.869-0.097-1.749-0.252-2.679-0.416c-0.323-0.057-0.651-0.115-0.996-0.173c0.211,0.261,0.41,0.511,0.604,0.753
 c0.505,0.634,0.983,1.231,1.492,1.779c0.554,0.599,0.708,1.225,0.512,2.093c-0.16,0.714-0.281,1.451-0.396,2.163
 c-0.048,0.297-0.098,0.595-0.147,0.89l0.062,0.054C10.449,24.222,10.697,24.02,10.946,23.818z" class="lJbcJjBX_0"></path>
              <path fill="none" stroke="#E31E26" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M25.466,17.765
 c0.861-0.696,1.75-1.417,2.603-2.148c0.662-0.566,1.242-0.723,2.028-0.554c1.089,0.236,2.216,0.409,3.409,0.595
 c0.438,0.067,0.894,0.138,1.367,0.215c-0.299-0.362-0.589-0.708-0.869-1.043c-0.797-0.956-1.553-1.859-2.229-2.793
 c-0.334-0.462-0.521-1.202-0.458-1.797c0.124-1.151,0.331-2.311,0.532-3.432c0.067-0.372,0.133-0.744,0.197-1.115
 c-0.908,0.57-1.732,1.208-2.53,1.826c-0.414,0.322-0.844,0.653-1.27,0.967c-0.452,0.328-1.148,0.521-1.696,0.458
 c-1.173-0.131-2.36-0.341-3.615-0.562c-0.436-0.076-0.879-0.155-1.343-0.234c0.285,0.352,0.553,0.689,0.815,1.017
 c0.681,0.855,1.326,1.662,2.013,2.401c0.747,0.808,0.955,1.652,0.69,2.824c-0.216,0.963-0.379,1.958-0.535,2.918
 c-0.065,0.401-0.133,0.803-0.199,1.201l0.083,0.073C24.796,18.31,25.13,18.037,25.466,17.765z" class="lJbcJjBX_1"></path>
              <path fill="none" stroke="#E31E26" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M17.941,30.16
 c-0.344-0.54-0.7-1.055-1.112-1.651c-0.15-0.214-0.302-0.436-0.462-0.668c-0.034,0.286-0.07,0.557-0.102,0.818
 c-0.092,0.707-0.17,1.317-0.207,1.938c-0.039,0.644-0.298,1.08-0.837,1.418c-0.543,0.338-1.076,0.712-1.592,1.075
 c-0.211,0.149-0.421,0.296-0.632,0.442l0.016,0.087c0.232,0.025,0.463,0.052,0.695,0.079c0.554,0.066,1.127,0.137,1.692,0.174
 c0.872,0.058,1.433,0.392,1.817,1.087c0.28,0.503,0.625,0.986,0.992,1.5c0.142,0.196,0.286,0.399,0.436,0.614
 c0.034-0.283,0.066-0.553,0.098-0.813c0.087-0.712,0.163-1.326,0.209-1.955c0.048-0.646,0.311-1.082,0.847-1.411
 c0.552-0.335,1.091-0.712,1.613-1.076c0.186-0.129,0.37-0.257,0.556-0.386c-0.951-0.25-1.833-0.395-2.693-0.441
 C18.69,30.959,18.292,30.71,17.941,30.16z" class="lJbcJjBX_2"></path>
              <path fill="none" stroke="#E31E26" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M43.172,46.744L24.923,20.908L21.061,23.682L39.526,49.438Z" class="lJbcJjBX_3"></path>
              <path fill="none" stroke="#E31E26" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M26.924,31.861" class="lJbcJjBX_4"></path>
              <path fill="none" stroke="#E31E26" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M30.689,29.076L26.924,31.861" class="lJbcJjBX_5"></path>
              <style data-made-with="vivus-instant">

                .lJbcJjBX_0 {
                  animation: lJbcJjBX_draw 900ms ease-in-out 0ms forwards;
                  stroke-dasharray: 35 37;
                  stroke-dashoffset: 36;
                }

                .lJbcJjBX_1 {
                  animation: lJbcJjBX_draw 900ms ease-in-out 0ms forwards;
                  stroke-dasharray: 47 49;
                  stroke-dashoffset: 48;
                }

                .lJbcJjBX_2 {
                  animation: lJbcJjBX_draw 900ms ease-in-out 0ms forwards;
                  stroke-dasharray: 29 31;
                  stroke-dashoffset: 30;
                }

                .lJbcJjBX_3 {
                  animation: lJbcJjBX_draw 900ms ease-in-out 0ms forwards;
                  stroke-dasharray: 73 75;
                  stroke-dashoffset: 74;
                }

                .lJbcJjBX_4 {
                  animation: lJbcJjBX_draw 900ms ease-in-out 0ms forwards;
                  stroke-dasharray: 0 2;
                  stroke-dashoffset: 1;
                }

                .lJbcJjBX_5 {
                  animation: lJbcJjBX_draw 900ms ease-in-out 0ms forwards;
                  stroke-dasharray: 5 7;
                  stroke-dashoffset: 6;
                }

                @keyframes lJbcJjBX_draw {
                  100% {
                    stroke-dashoffset: 0;
                  }
                }

                @keyframes lJbcJjBX_fade {
                  0% {
                    stroke-opacity: 1;
                  }

                  92.15686274509804% {
                    stroke-opacity: 1;
                  }

                  100% {
                    stroke-opacity: 0;
                  }
                }
    </style>
</svg>

What is the best way to make this happen?

Thanks for helping!

ProgrammerPer
  • 1,125
  • 1
  • 11
  • 26

1 Answers1

1

Here you will find an explanation how to trigger an animation at any moment instead of on page load: SVG trigger animation with event

And for detecting user scroll position I strongly recommend the ScrollMagic library: http://scrollmagic.io/. You need to set a "scene" at some specific point of the page, and when user enters scene, you can trigger a specific event (in this case, the svg animation).

JoannaFalkowska
  • 2,771
  • 20
  • 37