Custom scrollbar in CSS

main Image

You can customize the scrollbar in CSS using pseudo-elements with WebKit browsers. You can use the following pseudo-elements in CSS to customize the scrollbar.

Sr# Selector Description
1. ::-webkit-scrollbar The scrollbar
2. ::-webkit-scrollbar-thumb Draggable scrolling handle of scrollbar.
3. ::-webkit-scrollbar-track Track of the scrollbar.
4. ::-webkit-scrollbar-track-piece Track of scrollbar that’s not covered by the handle.
5. ::-webkit-scrollbar-button Buttons on the scrollbar
6. ::-webkit-scrollbar-corner Bottom corner of the scrollbar, where both horizontal and vertical scrollbars meet.
7. ::-webkit-resizer Draggable resizing handle that appears at the bottom corner of some elements (TextArea).
8. -webkit-box-shadow Shadow of the scrollbar.

The scrollbar of the browser might not appear if your content does not exceed the browser height. To view the scroll bar you need to add more content to the page or force the browser to show the scroll bar using CSS as below:

body {
  overflow-y: scroll; /* Show vertical scrollbar */
  overflow-x: scroll; /* Show horizontal scrollbar */
}

Using the above CSS code, we can force the browser to show the scrollbar but the scrolling track might not appear if your content on the page is not enough as compared to the browser width.

Using the scrollbar pseudo-elements, we can customize the browser scrollbar using CSS as below:

/* width */
::-webkit-scrollbar {
  width: 12px;
}

/* Track */
::-webkit-scrollbar-track {
  background: #f1f1f1;
}

/* Handle */
::-webkit-scrollbar-thumb {
  background: #adadad;
  border-radius: 5px;
}

/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
  background: #9b9b9b;
}

::-webkit-scrollbar-track {
  -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
}

Also, we can customize the scroll of HTML elements e.g. sidebar navigation. In CSS, we can define the content dimension and if the content exceeds the dimension, we can scroll it to view the full content.

In HTML, paste the long text:

<p class="content">
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse commodo
  dui et lectus.
</p>

In the CSS, paste the code as below.

.content {
  overflow-y: scroll;
  max-width: 960px;
  height: 160px;
  border: 1px solid grey;
}

/* Handle */
.content::-webkit-scrollbar-thumb {
  background: lightcoral;
  border-radius: 5px;
}

So when the content height exceeds 160px height, we need to scroll to view the full content.

Thanks for reading the post.

If you want to learn how to build a full-stack subscription website, please check out my course.

If you find this post useful, please share it on your social platform to reach out to more people.

Share this Blog