Skip to content

Repository files navigation

Segment

A little JavaScript class (without dependencies) to draw and animate SVG path strokes.

See the DEMO.

Read this article to understand how it works.

Basic usage

HTML

Add the segment script, and define a path somewhere.

<scriptsrc="/dist/segment.min.js"></script><svg><pathid="my-path" ...></svg>

JavaScript

Initialize a new Segment with the path. Then draw a segment of stroke every time you want with: .draw(begin, end, duration, options).

varmyPath=document.getElementById("my-path"),segment=newSegment(myPath);segment.draw("25%","75% - 10",1);

Constructor

The Segment constructor asks for 3 parameters:

  • path: DOM element to draw.
  • begin (optional, default 0): Length to start drawing the stroke.
  • end (optional, default 100%): Length to finish drawing the stroke.

Method draw(begin, end, duration, options)

NameTypeDefaultDescription
beginstring0Path length to start drawing.
endstring100%Path length to finish drawing.
durationfloat0Duration (in seconds) of the animation.
optionsobjectnullOptions for animation in object notation.

Note that begin and end can be negative values and can be written in any of these ways:

  • floatValue
  • percent
  • percent + floatValue
  • percent - floatValue

All possible options for draw method

NameTypeDefaultDescription
delayfloat0Waiting time (in seconds) to start drawing.
easingfunctionlinearEasing function (normalized). I highly recommend d3-ease.
circularbooleanfalseIf true, when the stroke reaches the end of the path it will resume at the beginning. The same applies in the opposite direction.
callbackfunctionnullFunction to call when the animation is done.

Example

functioncubicIn(t){returnt*t*t;}functiondone(){alert("Done!");}segment.draw("-25%","75% - 10",1,{delay: 0.5,easing: cubicIn,circular: true,callback: done});

Animating with another library

It's possible to animate the path stroke using another JavaScript library, like GSAP. Segments offers a method called strokeDasharray that is useful for this issue. Here is an example using TweenLite (with CSSPlugin).

TweenLite.to(path,1,{strokeDasharray: segment.strokeDasharray(begin,end)});

About

A little JavaScript class (without dependencies) to draw and animate SVG path strokes

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages