While working on my wife’s web page, I ran into a difficult challenge. She asked for a page to include parallax scrolling on a template that does not include parallax scrolling as a feature. In this case, we’re using Momentum. I figured I might have to dive into developer mode to achieve this, but I’ve been running into problems getting that to work, so I thought I’d take a stab at it without developer mode.
Requirements were clear:
- Stationary parallax scrolling (image stays stationary while other elements scroll over it)
- Images must be added/edited in the Squarespace online design tools (no hard-coding images here)
- Height of the “window” must be editable in the Squarespace online design tools as well
- Must be able to embed text over the images
After walking through a few examples online, I figured it shouldn’t be too hard to accomplish with some CSS and jQuery. I added several “poster” and “text” blocks to a page and plugged the following code into the page header. You could put this in code injection if you wanted this effect on every page.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<style>
html {
overflow-x: hidden;
}
.image-inset {
background-attachment: fixed;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
padding: 0px;
border: 0px;
width: 100vw;
position: relative;
left: 50%;
right: 50%;
margin-left: -50vw;
margin-right: -50vw;
overflow: hidden;
}
.sqs-block-image .image-block-outer-wrapper.image-block-v2 .intrinsic img {
display: none;
}
.sqs-block-image .image-block-outer-wrapper.image-block-v2 .image-overlay {
display: none;
}
</style>
<script>
$(document).ready(function(){
$('.image-inset').each(function(i,e) {
$(e).css('background-image', 'url("'+$(e).children('img')[0].src+'")');
});
});
</script>
To get this to work on other templates, you might need to tweak the CSS a bit, but it should be doable.