• Stars
    star
    1,741
  • Rank 26,741 (Top 0.6 %)
  • Language
    CSS
  • License
    MIT License
  • Created about 9 years ago
  • Updated almost 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A JavaScript library to draw and animate SVG path strokes

Segment

A JavaScript library 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.

<script src="https://cdnjs.cloudflare.com/ajax/libs/segment-js/1.1.3/segment.js"></script>

<svg>
  <path id="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).

var myPath = document.getElementById("my-path"),
    segment = new Segment(myPath);

segment.draw("25%", "75% - 10", 1);

Install with NPM

npm install segment-js

Constructor

The Segment constructor asks for 4 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.
  • circular (optional, default false): Allow begin and end values less than 0 and greater than 100%.

Method draw(begin, end, duration, options)

Name Type Default Description
begin string 0 Path length to start drawing.
end string 100% Path length to finish drawing.
duration float 0 Duration (in seconds) of the animation.
options object null Options 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

Name Type Default Description
delay float 0 Waiting time (in seconds) to start drawing.
easing function linear Easing function (normalized). I highly recommend d3-ease.
circular boolean false If true, when the stroke reaches the end of the path it will resume at the beginning. The same applies in the opposite direction.
callback function null Function to call when the animation is done.

Example

function cubicIn(t) {
    return t * t * t;
}

function done() {
    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) });

More Repositories

1

pieces

Javascript library to draw and animate images, texts or SVG paths as multiple rectangular pieces
JavaScript
226
star
2

path-slider

Animating Elements Along SVG Paths with Javascript
HTML
221
star
3

loading-buttons

Loading buttons demo for x-team article
JavaScript
147
star
4

morphing-hamburger-menu

A CSS only Morphing Hamburger Menu.
CSS
134
star
5

download-button

Download Button full of Micro Interactions
CSS
123
star
6

jelly

Drawing and Animating Jelly Shapes with Canvas
JavaScript
112
star
7

momentum-slider

Create sliders with momentum!
CSS
99
star
8

elastic-slider

An experimental slider using SVG clip-path feature and animations powered by Snap.svg
CSS
83
star
9

brushstroke

Draw creative brushstrokes directly in the browser with a nice API. Be able to draw solid colors, images, or even HTML!
JavaScript
80
star
10

cody

A library to embed demos for front-end developers. No dependencies and fully customizable!
JavaScript
75
star
11

splash-transition

Creating an eye catching animation, just using SVG paths and CSS transitions.
CSS
69
star
12

letters

An experimental plugin for animating SVG letters using Segment.
JavaScript
55
star
13

images-gallery

Images Gallery using PixiJS and WebGL
JavaScript
55
star
14

scroll-based-animation

Scroll Based Animation with JavaScript
JavaScript
48
star
15

spy

Custom Scrollspy with Gumshoe, Smooth Scroll and Anime.js
JavaScript
33
star
16

elastic-range-input

Fancy component to simulate a range input
CSS
33
star
17

creative-upload

Creative Upload Interaction with Javascript and Canvas
CSS
25
star
18

dissection-puzzles

Learn how to create and animate dissection puzzles using just CSS and SVG.
CSS
19
star
19

pieces-slider

A slider made with the Pieces library where slides are animated in a fragmented look.
JavaScript
14
star
20

animated-refresh-icon

Refresh icon animated with SVG, segment, and CSS animations.
JavaScript
10
star