Scroll the Number Line
Try scrolling the number line!

See Creating Scroll Functions section for more information.
Default Scroll Functions and Their Usage
Proportional: proportional
Scrolls are coordinated by proportion of the scrollable content.


Relative Springy: relSpring
Relative springy scrolls the elements, keeping their intial offsets synced. When an element reaches an end, it stays at the end, but if a channel the element is listening to moves, it "springs" back to its synced position.
Start
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque massa justo, eget mattis leo dapibus quis. In hac habitasse platea dictumst. Morbi sit amet volutpat elit, euismod suscipit felis. Nam eget luctus ligula. Praesent vehicula volutpat dui, ornare elementum neque aliquet in. Ut malesuada ante eu dapibus commodo. Quisque lorem turpis, posuere ut turpis eget, placerat porttitor elit. Quisque ultrices augue at tristique dapibus. Aenean eget turpis vitae nulla accumsan rutrum nec nec lacus. Proin quam leo, aliquam non tristique in, feugiat id tortor. Donec vel euismod turpis. Aliquam eu diam laoreet, imperdiet enim in, facilisis dolor. Phasellus et elit orci. Ut commodo lacinia urna sed interdum. Nam nec aliquet sem. Etiam tempor fringilla justo, in efficitur purus.
turpis a vehicula. Sed vitae ultricies tellus. Fusce sagittis pharetra aliquet. Cras nec tincidunt tortor, id suscipit neque. Aliquam at orci ut enim tempor ornare in vel neque. Vivamus tempus dolor a quam maximus accumsan vitae tristique diam. Nulla commodo purus a accumsan ornare. Nunc rhoncus a nunc vel finibus. Nullam augue erat, convallis sed ultricies eget, condimentum non odio. Nullam lectus libero, blandit at scelerisque a, placerat in quam. Mauris at placerat arcu. In ac odio vitae eros consequat tincidunt. Curabitur viverra ut lacus at scelerisque. Quisque consectetur interdum dolor, nec aliquam purus faucibus a. Integer sit amet odio risus. Proin tincidunt et lectus vitae volutpat. Suspendisse viverra at velit et auctor. Donec tristique leo non erat maximus auctor. Phasellus dictum, eros vitae imperdiet molestie, sapien tellus vestibulum nulla, nec posuere leo ligula in augue. Nullam auctor ac est sit amet condimentum. Suspendisse condimentum libero vel mi ornare laoreet. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse ac tincidunt lacus. Duis quis purus libero. Integer magna orci, auctor eget aliquet sit amet, feugiat eget ipsum. Suspendisse sed posuere tortor, nec aliquam arcu. Fusce consequat justo sed tincidunt condimentum. Sed in finibus orci, nec maximus augue.
End
Start
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque massa justo, eget mattis leo dapibus quis. In hac habitasse platea dictumst. Morbi sit amet volutpat elit, euismod suscipit felis. Nam eget luctus ligula. Praesent vehicula volutpat dui, ornare elementum neque aliquet in. Ut malesuada ante eu dapibus commodo. Quisque lorem turpis, posuere ut turpis eget, placerat porttitor elit. Quisque ultrices augue at tristique dapibus. Aenean eget turpis vitae nulla accumsan rutrum nec nec lacus. Proin quam leo, aliquam non tristique in, feugiat id tortor. Donec vel euismod turpis. Aliquam eu diam laoreet, imperdiet enim in, facilisis dolor. Phasellus et elit orci. Ut commodo lacinia urna sed interdum. Nam nec aliquet sem. Etiam tempor fringilla justo, in efficitur purus.
turpis a vehicula. Sed vitae ultricies tellus. Fusce sagittis pharetra aliquet. Cras nec tincidunt tortor, id suscipit neque. Aliquam at orci ut enim tempor ornare in vel neque. Vivamus tempus dolor a quam maximus accumsan vitae tristique diam. Nulla commodo purus a accumsan ornare. Nunc rhoncus a nunc vel finibus. Nullam augue erat, convallis sed ultricies eget, condimentum non odio. Nullam lectus libero, blandit at scelerisque a, placerat in quam. Mauris at placerat arcu. In ac odio vitae eros consequat tincidunt. Curabitur viverra ut lacus at scelerisque. Quisque consectetur interdum dolor, nec aliquam purus faucibus a. Integer sit amet odio risus. Proin tincidunt et lectus vitae volutpat. Suspendisse viverra at velit et auctor. Donec tristique leo non erat maximus auctor. Phasellus dictum, eros vitae imperdiet molestie, sapien tellus vestibulum nulla, nec posuere leo ligula in augue. Nullam auctor ac est sit amet condimentum. Suspendisse condimentum libero vel mi ornare laoreet. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse ac tincidunt lacus. Duis quis purus libero. Integer magna orci, auctor eget aliquet sit amet, feugiat eget ipsum. Suspendisse sed posuere tortor, nec aliquam arcu. Fusce consequat justo sed tincidunt condimentum. Sed in finibus orci, nec maximus augue.
End
1. Integer magna orci
2. Curabitur viverra ut lacus at scelerisque. Quisque consectetur interdum dolor, nec aliquam purus faucibus a.
3. Nunc facilisis vestibulum aliquam. Maecenas consequat odio vitae sem molestie, sed rhoncus sem tincidunt.
4. Cras nec tincidunt tortor, id suscipit neque.
5. Sed fringilla condimentum scelerisque. Proin nec ligula enim.
Relative Loopy: relLoop, relLoopDxy
Relative Loopy also keeps initial offsets synced, but when an element reaches an end, it loops back to the other side.
Start
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque massa justo, eget mattis leo dapibus quis. In hac habitasse platea dictumst. Morbi sit amet volutpat elit, euismod suscipit felis. Nam eget luctus ligula. Praesent vehicula volutpat dui, ornare elementum neque aliquet in. Ut malesuada ante eu dapibus commodo. Quisque lorem turpis, posuere ut turpis eget, placerat porttitor elit. Quisque ultrices augue at tristique dapibus. Aenean eget turpis vitae nulla accumsan rutrum nec nec lacus. Proin quam leo, aliquam non tristique in, feugiat id tortor. Donec vel euismod turpis. Aliquam eu diam laoreet, imperdiet enim in, facilisis dolor. Phasellus et elit orci. Ut commodo lacinia urna sed interdum. Nam nec aliquet sem. Etiam tempor fringilla justo, in efficitur purus.
turpis a vehicula. Sed vitae ultricies tellus. Fusce sagittis pharetra aliquet. Cras nec tincidunt tortor, id suscipit neque. Aliquam at orci ut enim tempor ornare in vel neque. Vivamus tempus dolor a quam maximus accumsan vitae tristique diam. Nulla commodo purus a accumsan ornare. Nunc rhoncus a nunc vel finibus. Nullam augue erat, convallis sed ultricies eget, condimentum non odio. Nullam lectus libero, blandit at scelerisque a, placerat in quam. Mauris at placerat arcu. In ac odio vitae eros consequat tincidunt. Curabitur viverra ut lacus at scelerisque. Quisque consectetur interdum dolor, nec aliquam purus faucibus a. Integer sit amet odio risus. Proin tincidunt et lectus vitae volutpat. Suspendisse viverra at velit et auctor. Donec tristique leo non erat maximus auctor. Phasellus dictum, eros vitae imperdiet molestie, sapien tellus vestibulum nulla, nec posuere leo ligula in augue. Nullam auctor ac est sit amet condimentum. Suspendisse condimentum libero vel mi ornare laoreet. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse ac tincidunt lacus. Duis quis purus libero. Integer magna orci, auctor eget aliquet sit amet, feugiat eget ipsum. Suspendisse sed posuere tortor, nec aliquam arcu. Fusce consequat justo sed tincidunt condimentum. Sed in finibus orci, nec maximus augue.
End
Start
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque massa justo, eget mattis leo dapibus quis. In hac habitasse platea dictumst. Morbi sit amet volutpat elit, euismod suscipit felis. Nam eget luctus ligula. Praesent vehicula volutpat dui, ornare elementum neque aliquet in. Ut malesuada ante eu dapibus commodo. Quisque lorem turpis, posuere ut turpis eget, placerat porttitor elit. Quisque ultrices augue at tristique dapibus. Aenean eget turpis vitae nulla accumsan rutrum nec nec lacus. Proin quam leo, aliquam non tristique in, feugiat id tortor. Donec vel euismod turpis. Aliquam eu diam laoreet, imperdiet enim in, facilisis dolor. Phasellus et elit orci. Ut commodo lacinia urna sed interdum. Nam nec aliquet sem. Etiam tempor fringilla justo, in efficitur purus.
turpis a vehicula. Sed vitae ultricies tellus. Fusce sagittis pharetra aliquet. Cras nec tincidunt tortor, id suscipit neque. Aliquam at orci ut enim tempor ornare in vel neque. Vivamus tempus dolor a quam maximus accumsan vitae tristique diam. Nulla commodo purus a accumsan ornare. Nunc rhoncus a nunc vel finibus. Nullam augue erat, convallis sed ultricies eget, condimentum non odio. Nullam lectus libero, blandit at scelerisque a, placerat in quam. Mauris at placerat arcu. In ac odio vitae eros consequat tincidunt. Curabitur viverra ut lacus at scelerisque. Quisque consectetur interdum dolor, nec aliquam purus faucibus a. Integer sit amet odio risus. Proin tincidunt et lectus vitae volutpat. Suspendisse viverra at velit et auctor. Donec tristique leo non erat maximus auctor. Phasellus dictum, eros vitae imperdiet molestie, sapien tellus vestibulum nulla, nec posuere leo ligula in augue. Nullam auctor ac est sit amet condimentum. Suspendisse condimentum libero vel mi ornare laoreet. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse ac tincidunt lacus. Duis quis purus libero. Integer magna orci, auctor eget aliquet sit amet, feugiat eget ipsum. Suspendisse sed posuere tortor, nec aliquam arcu. Fusce consequat justo sed tincidunt condimentum. Sed in finibus orci, nec maximus augue.
End
1. Integer magna orci
2. Curabitur viverra ut lacus at scelerisque. Quisque consectetur interdum dolor, nec aliquam purus faucibus a.
3. Nunc facilisis vestibulum aliquam. Maecenas consequat odio vitae sem molestie, sed rhoncus sem tincidunt.
4. Cras nec tincidunt tortor, id suscipit neque.
5. Sed fringilla condimentum scelerisque. Proin nec ligula enim.
Relative Soft: relSoft
Relative soft keeps initial offsets synced until elements reach the end. If the user continues scrolling, the subscriber element will lose its offset.
Start
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque massa justo, eget mattis leo dapibus quis. In hac habitasse platea dictumst. Morbi sit amet volutpat elit, euismod suscipit felis. Nam eget luctus ligula. Praesent vehicula volutpat dui, ornare elementum neque aliquet in. Ut malesuada ante eu dapibus commodo. Quisque lorem turpis, posuere ut turpis eget, placerat porttitor elit. Quisque ultrices augue at tristique dapibus. Aenean eget turpis vitae nulla accumsan rutrum nec nec lacus. Proin quam leo, aliquam non tristique in, feugiat id tortor. Donec vel euismod turpis. Aliquam eu diam laoreet, imperdiet enim in, facilisis dolor. Phasellus et elit orci. Ut commodo lacinia urna sed interdum. Nam nec aliquet sem. Etiam tempor fringilla justo, in efficitur purus.
turpis a vehicula. Sed vitae ultricies tellus. Fusce sagittis pharetra aliquet. Cras nec tincidunt tortor, id suscipit neque. Aliquam at orci ut enim tempor ornare in vel neque. Vivamus tempus dolor a quam maximus accumsan vitae tristique diam. Nulla commodo purus a accumsan ornare. Nunc rhoncus a nunc vel finibus. Nullam augue erat, convallis sed ultricies eget, condimentum non odio. Nullam lectus libero, blandit at scelerisque a, placerat in quam. Mauris at placerat arcu. In ac odio vitae eros consequat tincidunt. Curabitur viverra ut lacus at scelerisque. Quisque consectetur interdum dolor, nec aliquam purus faucibus a. Integer sit amet odio risus. Proin tincidunt et lectus vitae volutpat. Suspendisse viverra at velit et auctor. Donec tristique leo non erat maximus auctor. Phasellus dictum, eros vitae imperdiet molestie, sapien tellus vestibulum nulla, nec posuere leo ligula in augue. Nullam auctor ac est sit amet condimentum. Suspendisse condimentum libero vel mi ornare laoreet. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse ac tincidunt lacus. Duis quis purus libero. Integer magna orci, auctor eget aliquet sit amet, feugiat eget ipsum. Suspendisse sed posuere tortor, nec aliquam arcu. Fusce consequat justo sed tincidunt condimentum. Sed in finibus orci, nec maximus augue.
End
Start
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque massa justo, eget mattis leo dapibus quis. In hac habitasse platea dictumst. Morbi sit amet volutpat elit, euismod suscipit felis. Nam eget luctus ligula. Praesent vehicula volutpat dui, ornare elementum neque aliquet in. Ut malesuada ante eu dapibus commodo. Quisque lorem turpis, posuere ut turpis eget, placerat porttitor elit. Quisque ultrices augue at tristique dapibus. Aenean eget turpis vitae nulla accumsan rutrum nec nec lacus. Proin quam leo, aliquam non tristique in, feugiat id tortor. Donec vel euismod turpis. Aliquam eu diam laoreet, imperdiet enim in, facilisis dolor. Phasellus et elit orci. Ut commodo lacinia urna sed interdum. Nam nec aliquet sem. Etiam tempor fringilla justo, in efficitur purus.
turpis a vehicula. Sed vitae ultricies tellus. Fusce sagittis pharetra aliquet. Cras nec tincidunt tortor, id suscipit neque. Aliquam at orci ut enim tempor ornare in vel neque. Vivamus tempus dolor a quam maximus accumsan vitae tristique diam. Nulla commodo purus a accumsan ornare. Nunc rhoncus a nunc vel finibus. Nullam augue erat, convallis sed ultricies eget, condimentum non odio. Nullam lectus libero, blandit at scelerisque a, placerat in quam. Mauris at placerat arcu. In ac odio vitae eros consequat tincidunt. Curabitur viverra ut lacus at scelerisque. Quisque consectetur interdum dolor, nec aliquam purus faucibus a. Integer sit amet odio risus. Proin tincidunt et lectus vitae volutpat. Suspendisse viverra at velit et auctor. Donec tristique leo non erat maximus auctor. Phasellus dictum, eros vitae imperdiet molestie, sapien tellus vestibulum nulla, nec posuere leo ligula in augue. Nullam auctor ac est sit amet condimentum. Suspendisse condimentum libero vel mi ornare laoreet. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse ac tincidunt lacus. Duis quis purus libero. Integer magna orci, auctor eget aliquet sit amet, feugiat eget ipsum. Suspendisse sed posuere tortor, nec aliquam arcu. Fusce consequat justo sed tincidunt condimentum. Sed in finibus orci, nec maximus augue.
End
1. Integer magna orci
2. Curabitur viverra ut lacus at scelerisque. Quisque consectetur interdum dolor, nec aliquam purus faucibus a.
3. Nunc facilisis vestibulum aliquam. Maecenas consequat odio vitae sem molestie, sed rhoncus sem tincidunt.
4. Cras nec tincidunt tortor, id suscipit neque.
5. Sed fringilla condimentum scelerisque. Proin nec ligula enim.
In addition there are several more default scroll functions defined in scrollfuncs.js
!
Creating Scroll Functions
A scroll function returns x and a y position where the element will scroll to.
Scroll functions activate when the channel the element's account is subscribed to broadcasts a message.
You can think of it as .
For the number line demo we are only using the x scroll, so you can think of msg.x
as the in a parametric equation.
Don't forget that the y axis starts from the top left, and consider any possible unit conversions.
Check out scrollfuncs.js
to see how the default scroll functions are implemented.