SVG Path Animation Plugin with JavaScript - Lazy Line Painter
File Size: | 354 KB |
---|---|
Views Total: | 8227 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |
Lazy Line Painter is a JavaScript library for creating responsive and mobile-compatible SVG Path Animations with no dependencies. Each paths duration can be tweaked in the code.
How to use it:
1. Create your Line art in Illustrator, and then export as an .SVG file.
2. Install and import the Lazy Line Painter.
# NPM $ npm install lazy-line-painter
<script src="/libs/lazylinepainter.js"></script>
3. Call the function LazyLinePainter on your SVG element.
<svg id="example" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 352 230" data-llp-composed="true" > ... </svg>
(function () { document.onreadystatechange = () => { if (document.readyState === "complete") { const svg = document.querySelector("#example"); const config = { // options here }; console.log(svg); const animation = new LazyLinePainter(svg, config); animation.paint(); } }; })();
4. Available settings to customize the SVG path animation.
const config = { // customize the stroke 'strokeWidth': 2, 'strokeDash': null, // e.g. '5, 5' 'strokeColor': '#000', 'strokeOverColor': null, 'strokeCap': 'round', // butt | round | square 'strokeJoin': 'round', // miter | round | bevel 'strokeOpacity': 1, // delay in ms 'delay': 0, // easing effect 'ease': null, // if you selector id doesn't match the key referencing your path data value within svgData. 'overrideKey': null, // whether to draw each path sequentially 'drawSequential': false, // speed multiplier 'speedMultiplier': 1, // reverse the animation 'reverse': false, // is paused 'paused': false, // progress 'progress': 0, // longest duration in ms 'longestDuration': 0, // number of additional plays // -1 for loop 'repeat': 0, // offset offset: this.el.getBoundingClientRect() };
5. You can also pass the options to each SVG path using the following HTML data attributes:
<path
data-llp-stroke-width="10"
data-llp-stroke-color="#000000"
data-llp-stroke-opacity="0.5"
data-llp-stroke-cap="rounded"
data-llp-stroke-join="mitre"
data-llp-stroke-dash="[2,2]"
data-llp-duration="200"
data-llp-delay="200"
data-llp-reverse="true"
data-llp-ease="easeInOutQuad"
/>
6. API methods.
// animates the path animation.paint(reverse, ease, delay); // clears the path animation.erase(); // pauses the animation animation.pause(); // resumes the animation animation.resume(); // sets progress [0 - 1] animation.progress(value); // gets progress const progress = animation.progress(); // destroys the plugin animation.destroy();
7. Event handlers.
animation.on('start', () => {}); animation.on('update', () => {}); animation.on('complete', () => {}); animation.on('start:all', (event) => {}); animation.on('update:all', (event) => { console.log(event.progress); // [0-1] }); animation.on('complete:all', (event) => {}); animation.on('start:id', (event) => {}); animation.on('update:id', (event) => {}); animation.on('complete:id', (event) => {}); animation.on('pause', () => {}); animation.on('resume', () => {}); animation.on('erase', () => {});
Changelog:
v2.0.3 (2023-12-12)
- Remove jQuery dependency
v1.9.6 (2019-01-31)
- Update
v1.9.4 (2019-01-22)
- Update
v1.9.3 (2019-01-11)
- Fixed: safari pathLength issue
- Added: Manage tabbing away
v1.9.2 (2019-01-07)
- Added pause, erase & resume timeline playback events
v1.9.1 (2018-12-18)
- set styles rather than attributes
v1.9.0 (2018-12-17)
- set styles rather than attributes
v1.8.0 (2018-11-19)
- JS & DOC update
v1.7.0 (2015-09-12)
- update.
This awesome jQuery plugin is developed by camoconnell. For more Advanced Usages, please check the demo page or visit the official website.