Top Related Projects
Simple & lightweight (<4kb gzipped) vanilla JavaScript library to create smooth & beautiful animations when you scroll.
The javascript library for magical scroll interactions.
Parallax Engine that reacts to the orientation of a smart device
Parallax scrolling for modern browsers
Animate elements as they scroll into view.
🚀 Performance focused, lightweight scroll animation library 🚀
Quick Overview
Rellax is a lightweight, vanilla JavaScript parallax library that adds a smooth parallax scrolling effect to websites. It's designed to be easy to use, with no dependencies, and works on both desktop and mobile devices.
Pros
- Lightweight and dependency-free
- Easy to implement and customize
- Supports horizontal parallax scrolling
- Works well on mobile devices
Cons
- Limited advanced features compared to more complex parallax libraries
- May not be suitable for highly complex parallax designs
- Performance can be affected if overused on a single page
Code Examples
Basic usage:
<div class="rellax">
I'm a slow-moving element
</div>
<script>
var rellax = new Rellax('.rellax');
</script>
Custom speed and vertical offset:
<div class="rellax" data-rellax-speed="2" data-rellax-percentage="0.5">
I move faster and have a custom vertical offset
</div>
Horizontal parallax:
<div class="rellax" data-rellax-horizontal-speed="2" data-rellax-vertical-speed="-1">
I move horizontally and vertically
</div>
Getting Started
-
Include the Rellax script in your HTML:
<script src="https://cdnjs.cloudflare.com/ajax/libs/rellax/1.12.1/rellax.min.js"></script>
-
Add the
rellax
class to elements you want to animate:<div class="rellax"> I'm a parallax element </div>
-
Initialize Rellax in your JavaScript:
var rellax = new Rellax('.rellax');
-
Customize speed and behavior using data attributes:
<div class="rellax" data-rellax-speed="-2"> I move slower in the opposite direction </div>
Competitor Comparisons
Simple & lightweight (<4kb gzipped) vanilla JavaScript library to create smooth & beautiful animations when you scroll.
Pros of lax.js
- More versatile with a wider range of animation effects
- Supports mobile-friendly touch events
- Offers presets for quick implementation of common effects
Cons of lax.js
- Slightly larger file size
- May have a steeper learning curve for complex animations
- Requires more setup for basic parallax effects
Code Comparison
lax.js:
lax.init()
lax.addDriver('scrollY', function () {
return window.scrollY
})
lax.addElements('.selector', {
scrollY: {
translateY: [
["elInY", "elOutY"],
[0, 100],
]
}
})
Rellax:
var rellax = new Rellax('.selector', {
speed: -2,
center: false,
wrapper: null,
round: true,
vertical: true,
horizontal: false
});
Both libraries offer smooth parallax scrolling effects, but lax.js provides more customization options and animation types. Rellax is simpler to set up for basic parallax effects, while lax.js requires more configuration but offers greater flexibility. lax.js supports touch events, making it more suitable for mobile devices. However, its increased functionality comes at the cost of a larger file size and potentially more complex implementation for advanced features.
The javascript library for magical scroll interactions.
Pros of ScrollMagic
- More feature-rich, offering complex animations and scene management
- Supports pin and progress-based animations
- Integrates well with other animation libraries like GSAP
Cons of ScrollMagic
- Steeper learning curve due to more complex API
- Larger file size, which may impact page load times
- Requires more setup and configuration for basic effects
Code Comparison
ScrollMagic:
var controller = new ScrollMagic.Controller();
var scene = new ScrollMagic.Scene({
triggerElement: "#trigger",
duration: 300
})
.setTween("#animate", {scale: 2})
.addTo(controller);
Rellax:
var rellax = new Rellax('.rellax', {
speed: -2,
center: true,
wrapper: null,
round: true,
vertical: true,
horizontal: false
});
ScrollMagic offers more control over animations with scene-based management, while Rellax provides a simpler API for parallax effects. ScrollMagic is better suited for complex, timeline-based animations, whereas Rellax excels in creating lightweight parallax scrolling effects with minimal setup.
Parallax Engine that reacts to the orientation of a smart device
Pros of Parallax
- More feature-rich, offering various parallax effects and options
- Supports mobile devices with gyroscope-based parallax
- Includes a scene graph for complex layouts and animations
Cons of Parallax
- Larger file size and potentially higher performance overhead
- Steeper learning curve due to more complex API
- Less actively maintained (last update in 2019)
Code Comparison
Rellax:
var rellax = new Rellax('.rellax', {
speed: -2,
center: false,
wrapper: null,
round: true,
vertical: true,
horizontal: false
});
Parallax:
var scene = document.getElementById('scene');
var parallaxInstance = new Parallax(scene, {
relativeInput: true,
clipRelativeInput: false,
hoverOnly: true,
inputElement: document.getElementById('input')
});
Both libraries offer simple initialization, but Parallax provides more options for complex setups. Rellax focuses on vertical scrolling parallax, while Parallax offers multi-directional effects and device orientation support.
Rellax is lighter and easier to implement for basic parallax scrolling, making it suitable for simpler projects. Parallax is more powerful but requires more setup, better suited for complex, interactive websites with diverse parallax effects.
Parallax scrolling for modern browsers
Pros of Jarallax
- More feature-rich, offering video backgrounds and advanced parallax effects
- Better browser compatibility, including older versions of Internet Explorer
- Supports both vertical and horizontal parallax scrolling
Cons of Jarallax
- Larger file size due to additional features
- Slightly more complex setup and configuration
- May have a higher performance impact on slower devices
Code Comparison
Rellax initialization:
var rellax = new Rellax('.rellax');
Jarallax initialization:
jarallax(document.querySelectorAll('.jarallax'), {
speed: 0.2
});
Both libraries offer simple initialization, but Jarallax provides more options for customization out of the box. Rellax focuses on simplicity and ease of use, while Jarallax offers a wider range of features and configuration options.
Rellax is lightweight and straightforward, making it ideal for simple parallax effects. Jarallax, on the other hand, is more suitable for complex projects requiring advanced parallax functionality and broader browser support.
Choose Rellax for quick, lightweight implementations, and Jarallax for more feature-rich, customizable parallax experiences.
Animate elements as they scroll into view.
Pros of ScrollReveal
- More feature-rich, offering a wider range of animation options
- Better documentation and examples, making it easier for developers to implement
- Supports both JavaScript and CSS-based animations for better performance
Cons of ScrollReveal
- Larger file size, which may impact page load times
- Steeper learning curve due to more configuration options
- May be overkill for simple parallax effects
Code Comparison
ScrollReveal:
ScrollReveal().reveal('.headline', {
delay: 200,
distance: '50px',
origin: 'bottom',
duration: 1000
});
Rellax:
var rellax = new Rellax('.rellax', {
speed: -2,
center: false,
wrapper: null,
round: true
});
ScrollReveal offers more granular control over animations, while Rellax focuses specifically on parallax effects with simpler configuration. ScrollReveal's code allows for more customization of animation properties, whereas Rellax's implementation is more straightforward for basic parallax scrolling.
Both libraries have their strengths, with ScrollReveal being more versatile for various scroll-based animations and Rellax excelling in lightweight, easy-to-implement parallax effects. The choice between them depends on the specific needs of the project and the desired complexity of scroll animations.
🚀 Performance focused, lightweight scroll animation library 🚀
Pros of Sal
- More advanced animation options, including enter/exit animations and easing functions
- Supports both scroll-based and intersection observer-based animations
- Offers a wider range of customization options for animations
Cons of Sal
- Slightly larger file size compared to Rellax
- May have a steeper learning curve due to more complex configuration options
- Less focused on parallax effects specifically
Code Comparison
Rellax:
var rellax = new Rellax('.rellax', {
speed: -2,
center: false,
wrapper: null,
round: true,
vertical: true,
horizontal: false
});
Sal:
sal({
threshold: 0.5,
once: false,
animateClassName: 'sal-animate',
disabledClassName: 'sal-disabled',
enterEventName: 'sal:in',
exitEventName: 'sal:out',
});
Both libraries offer easy-to-use initialization, but Sal provides more configuration options out of the box. Rellax focuses primarily on parallax scrolling effects, while Sal offers a broader range of scroll-based animations. Sal's code demonstrates its flexibility in handling various animation scenarios, whereas Rellax's code highlights its simplicity for parallax effects.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
RELLAX
Rellax is a buttery smooth, super lightweight, vanilla javascript parallax library. Update: Rellax now works on mobile (v1.0.0).
Getting Started
Using npm
npm install rellax --save
Using yarn
yarn add rellax
CDN
<script src="https://cdn.jsdelivr.net/gh/dixonandmoe/rellax@master/rellax.min.js"></script>
Download Locally
if you're old school like us download and insert rellax.min.js
in your html
<div class="rellax">
Iâm that default chill speed of "-2"
</div>
<div class="rellax" data-rellax-speed="7">
Iâm super fast!!
</div>
<div class="rellax" data-rellax-speed="-4">
Iâm extra slow and smooth
</div>
<script src="https://cdn.jsdelivr.net/gh/dixonandmoe/rellax@master/rellax.min.js"></script>
<script>
// Accepts any class name
var rellax = new Rellax('.rellax');
</script>
<script>
// Also can pass in optional settings block
var rellax = new Rellax('.rellax', {
speed: -2,
center: false,
wrapper: null,
round: true,
vertical: true,
horizontal: false
});
</script>
Features
Speed
Use the data-rellax-speed
attribute to set the speed of a .rellax
element to something other than the default value (which is -2
). A negative value will make it move slower than regular scrolling, and a positive value will make it move faster. We recommend keeping the speed between -10
and 10
.
Responsive Speed
Use responsive speed attributes for breakpoint levels that require a different speed. Defaults to the data-rellax-speed
setting in unspecified breakpoints.
<div class="rellax" data-rellax-speed="7" data-rellax-xs-speed="-5" data-rellax-mobile-speed="3" data-rellax-tablet-speed="-8" data-rellax-desktop-speed="1">
I parallax at all different speeds depending on your screen width.
</div>
Pass an array of breakpoints. Each breakpoint value represents the resolution for mobile, tablet, desktop respectively. Checkout the responsiveness of the demo
<script>
// This is the default setting
var rellax = new Rellax('.rellax', {
breakpoints: [576, 768, 1201]
});
</script>
Centering
After some fantastic work from @p-realinho, we just released the ability to center parallax elements in your viewport! We'll be building a nice demo website, but for now check out the tests folder for several examples of how it works.
There's two ways to implement centering, either on specific elements or as a global option.
-
Element-wise Centering
- Add the
data-rellax-percentage="0.5"
to a specific html element
<div class="rellax" data-rellax-percentage="0.5">
Iâm that default chill speed of "-2" and "centered"
</div>
<div class="rellax" data-rellax-speed="7" data-rellax-percentage="0.5">
Iâm super fast!! And super centered!!
</div>
<div class="rellax" data-rellax-speed="-4" data-rellax-percentage="0.5">
Iâm extra slow and smooth, and hella centered.
</div>
-
Global Centering
- To activate the center feature in your whole html, add the code your
<script>
tag or JS file:
<script>
// Center all the things!
var rellax = new Rellax('.rellax', {
center: true
});
</script>
Z-index
If you want to sort your elements properly in the Z space, you can use the data-rellax-zindex property
<div class="rellax">
Iâm that default chill speed of "-2" and default z-index of 0
</div>
<div class="rellax" data-rellax-speed="7" data-rellax-zindex="5">
Iâm super fast!! And on top of the previous element, I'm z-index 5!!
</div>
Horizontal Parallax
Horizontal parallax is disabled by default. You can enable it by passing horizontal: true
in the settings block.
This feature is intended for panoramic style websites, where users scroll horizontally instead of vertically.
Note that this can work together at the same time with the default vertical parallax. If you do not want this, pass vertical: false
in the settings block.
<script>
// Adding horizantal parallax scrolling
var rellax = new Rellax('.rellax', {
// Activate horizantal scrolling
// Turned off by default
horizontal: true
//Deactivate vertical scrolling
vertical: false
});
</script>
Custom Wrapper
By default, the position of parallax elements is determined via the scroll position of the body. Passing in the wrapper
property will tell Rellax to watch that element instead.
<script>
// Set wrapper to .custom-element instead of the body
var rellax = new Rellax('.rellax', {
wrapper: '.custom-element'
});
</script>
Refresh
<script>
// Start Rellax
var rellax = new Rellax('.rellax');
// Destroy and create again parallax with previous settings
rellax.refresh();
</script>
Destroy
<script>
// Start Rellax
var rellax = new Rellax('.rellax');
// End Rellax and reset parallax elements to their original positions
rellax.destroy();
</script>
Callback
<script>
// Start Rellax
var rellax = new Rellax('.rellax-blur-card', {
callback: function(positions) {
// callback every position change
console.log(positions);
}
});
</script>
Target node
Instead of using a className you can use a node, handy when using React and you want to use refs
instead of className
.
<div ref={ref => { this.rellaxRef = ref }}>
Iâm that default chill speed of "-2"
</div>
var rellax = new Rellax(this.rellaxRef)
In the Wild
If you're using Rellax in production, we'd love to list you here! Let us know: moe@dixonandmoe.com
- Bowmore Scotch
- Generated Photos
- How Much Does a Website Cost
- Linux Man Pages
- Laws of UX
- Finch
- Embedded Payroll
- Product Designer in San Francisco
- EthWorks
- Lorem Ipsum Generator
- Deeson
Development
In the spirit of lightweight javascript, the build processes (thus far) is lightweight also.
- Open demo.html
- Make code changes and refresh browser
- Once feature is finished or bug fixed, use jshint to lint code
- Fix lint issues then use Google Closure Compiler to minify
- ð»
Changelog
Top Related Projects
Simple & lightweight (<4kb gzipped) vanilla JavaScript library to create smooth & beautiful animations when you scroll.
The javascript library for magical scroll interactions.
Parallax Engine that reacts to the orientation of a smart device
Parallax scrolling for modern browsers
Animate elements as they scroll into view.
🚀 Performance focused, lightweight scroll animation library 🚀
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot