Orginally published at Medium on Feb 28th 2020.
Elegantly slide to a section of a page
Learn how to set up a smooth scrolling with Ruby on Rails and Stimulus Components. This is a simple and clean way to enable users to slide to a different section of a page.
Before You Start
Make sure you have Stimulus installed. Check the package.json file or run yarn why stimulus
. If Stimulus is not yet installed, follow the documentation.
1. Install the package
Add Stimulus ScrollTo to your project
yarn add stimulus-scroll-to
2. Add Stimulus Scroll-To library
import { Application } from 'stimulus'
import { ScrollTo } from 'stimulus-scroll-to'
const application = Application.start()
application.register("scroll-to", ScrollTo)
3. Add sidebar
<div class="flex">
<div class="w-1/5">
<small class="pb-3 text-sm italic">click a link in the sidebar 👇</small>
<ul class="sticky flex flex-col w-full h-auto p-2 space-y-4 bg-white border-4 border-gray-500 rounded-lg top-16">
<li><%= link_to "Introduction", "#introduction", data: {controller: "scroll-to"} %></li>
<li><%= link_to "Technical Overview", "#technical_overview", data: {controller: "scroll-to"} %></li>
<li><%= link_to "Philosophy & Design", "#philosophy_design", data: {controller: "scroll-to"} %></li>
<li><%= link_to "Framework Structure", "#framework_structure", data: {controller: "scroll-to"} %></li>
<li><%= link_to "Trademarks", "#trademarks", data: {controller: "scroll-to"} %></li>
</ul>
</div>
<div class="w-4/5"></div>
</div>
- data-controller=”scroll-to” scopes the imported controller to every individual link_to.
- The hashtag(#) in the link_to will look on the same page for a matching id. From #introduction to id=”introduction”
4. Add content
<div class="w-4/5">
<article>
<ul>
<li>
<p id="introduction">Introduction</p>
<p>PARAGRAPH HERE</p>
</li>
<li>
<p id="techincal_overview">Techincal Overview</p>
<p>PARAGRAPH HERE</p>
</li>
...
</ul>
</article>
</div>
Note that the code snippet above is a simplified, without Tailwind CSS classes, in order to keep the view clean
That’s it, Smooth Scrolling is now functional!
Thanks for reading!
Top comments (1)
it is good in using , keep posting such valuable article which inspire us to do work more . sihr of separation