Comments (4)
So here is what I made:
var vivus = new Vivus('Layer_1', {
duration: 10000000,
type: 'sync',
start: 'manual'
});
window.addEventListener('wheel', scrolling);
var progress = 0;
var dh = jQuery(document).height(); // document height
var wh = jQuery(window).height(); // window height
var eh = jQuery('#Layer_1').height(); // element height
function scrolling(e) {
var elementoffsettop = jQuery("#Layer_1").offset().top;
var windowsscrollpostion = jQuery(window).scrollTop();
// Define where the scroll starts and end
var scrollStart = elementoffsettop - wh;
var scrollEnd = elementoffsettop + eh - wh/2; // I made it stop while at half screen
var scrollDistance = scrollEnd - scrollStart;
// Calcultate the progress
var animProgress = (windowsscrollpostion - scrollStart)/scrollDistance
animProgress = Math.min(1, Math.max(0, animProgress));
// Little hack to ask for a rendering at frame request.
// Otherwise you trigger a re-draw at every scroll event.
// It should make the scroll/animation smoother
requestVivusUpdate(animProgress);
}
// The logic of all this is to request an animation frame
// and wait for keep the value updated until the frame
// is executed.
var requestVivusUpdateRAF = null;
var requestVivusUpdateVal = 0;
function requestVivusUpdate (progress) {
requestVivusUpdateVal = progress;
if (requestVivusUpdateRAF) {
return;
}
requestVivusUpdateRAF = window.requestAnimationFrame(() => {
console.log(requestVivusUpdateVal);
requestVivusUpdateRAF = null;
vivus.setFrameProgress(requestVivusUpdateVal);
});
}
// Ok there might be some useless calls with value 0 and 1 while outside of the desired scroll
// Feel free to fix this ;-)
I dunno if this helps
from vivus.
Yes! This is brilliant! Much less of a hit on the page, and stops just where it needs to.
Hero!!
from vivus.
😉 you're welcome!
from vivus.
Hi there,
I'm working on writing this so I can trigger different animations while scrolling.
I have it working when I only have one SVG, but when I add another, both don't show. I'm certain vivus supports multiples on a page or am I missing something?
http://jsfiddle.net/benklocek/7aog23cj/
from vivus.
Related Issues (20)
- Trigger SVG to draw as soon as you see it (very large SVG) HOT 1
- Include Start delay without Loop HOT 3
- Is vivus deprecated? HOT 1
- daisy-chaining a series of images? HOT 2
- Beginner, unable to use HOT 8
- Support for Play Pause HOT 4
- Vivus MAP Array Empty, no animation rendered. HOT 2
- Problem using stroke based mask using multiple time the same SVG file
- Is there any rewind too?
- [Feature Request] Animate individual paths HOT 2
- [Error Fix]: There is a grammatical error on the index page. HOT 2
- Text is drawing immediately HOT 2
- Is there any option to draw svg on scroll? HOT 1
- No "ease-in-out" timing function? HOT 3
- Move a pencil while drawing ? HOT 1
- Integration with vue 3? HOT 4
- Callback function for when a path is completed? HOT 1
- Animation automatically replay
- Not working for a simple test HOT 2
- Please add Shuffle/Random animation type to Vivus
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vivus.