Custom scroll with inertia, smooth parallax and scenes manager.
rolly.js is a library written in javascript for building pages that moves smoothly.
This library offers 3 main features:
- change the behavior of the default scroll for a smoother effect
- quickly and flexibly add a customizable parallax effect to any element on a page
- add any behavior to your scenes bound to the scroll state (custom transforms, seek animations…)
Checkout the demo!
The documentation is available here: https://mickaelchanrion.github.io/rolly/
Click to expand
$ npm install rolly.js
Or add it as a script:
<script src="https://unpkg.com/rolly.js@<VERSION>/dist/rolly.min.js"></script>
Create your scenes:
<body>
<style>
[data-scene] {
max-width: 800px;
padding: 10vh 50px;
margin: 10vh auto;
font-family: sans-serif;
font-size: 100px;
color: #fff;
text-align: center;
background: linear-gradient(
to top,
rgb(252, 92, 125),
rgb(106, 130, 251)
);
border-radius: 5px;
}
[data-scene]:first-child {
background: linear-gradient(
to bottom,
rgb(168, 192, 255),
rgb(63, 43, 150)
);
}
[data-scene]:last-child {
margin-bottom: 50vh;
}
</style>
<div class="app">
<div data-scene data-speed="0.2">rolly.js</div>
<div data-scene>provides…</div>
<div data-scene data-speed="1.2">some delicious…</div>
<div data-scene data-speed="1.4">very delicious…</div>
<div data-scene data-speed="1.6">parallax effects ❤️</div>
</div>
</body>
Import the CSS of rolly: node_modules/rolly.js/css/style.css
Or from unpkg: https://unpkg.com/rolly.js@<VERSION>/css/style.css
import rolly from 'rolly.js';
const r = rolly({
view: document.querySelector('.app'),
native: true,
// other options
});
r.init();
You will find some examples here.
- Create documentation
- Create some examples
- Fix the scrollTo function
- Test and fix issues when
vertical
options is set tofalse
- Change the way the easing is computed. Probably with a clean Lerp function
- Implement different easing for each scene (it would add a nice organic effect 🤩)
- Need a feature?