Amazon Style Horizontal Scroller In jQuery

Amazon Style Horizontal Scroller In jQuery
File Size: 4 KB
Views Total: 181
Last Update:
Publish Date:
Official Website: Go to website
License: MIT
   

A tiny jQuery script to replicate the Amazon-style product scroller that allows the user to horizontally scroll through a group of items with prev/next buttons.

How to use it:

1. Add scrollable content together with prev/next control buttons to the horizontal scroller.

<div class="preview_control_area">
  <div class="data_preview_area">
    <div class="data_preview_frame"><div class="data_preview_content">Item 1</div></div>
    <div class="data_preview_frame"><div class="data_preview_content">Item 2</div></div>
    <div class="data_preview_frame"><div class="data_preview_content">Item 3</div></div>
    <div class="data_preview_frame"><div class="data_preview_content">Item 4</div></div>
    <div class="data_preview_frame"><div class="data_preview_content">Item 5</div></div>
    <div class="data_preview_frame"><div class="data_preview_content">Item 6</div></div>
    ...
  </div>
  <div class="control_button previous_button">Prev</div>
  <div class="control_button next_button">Next</div>
</div>

2. The necessary CSS styles for the horizontal scroller.

.data_preview_area {
  margin:0.5rem 0;
  overflow-x:auto;
  white-space:nowrap;
}

.data_preview_frame {
  width:calc(100% / 5);
  display:inline-block;
}

.data_preview_content {
  height:15rem;
  margin:0 0.5rem;
  background:#34BC9D;
  color: #fff;
  text-align: center;
  line-height: 15rem;
  font-size:1.5rem;
  font-weight:bold;
}

3. Style the prev/next buttons.

.preview_control_area {
  position:relative;
  background-color: #fff;
}

.previous_button {
  position:absolute;
  top:50%;
  left:0;
  transform:translateY(-50%);
}

.next_button {
  position:absolute;
  top:50%;
  right:0;
  transform:translateY(-50%);
}

.control_button {
  background:white;
  border:solid 0.1rem black;
  border-radius:0.25rem;
  padding:0.5rem;
  margin:0 0.25rem;
  cursor:pointer;
  opacity:0.25;
  transition:0.2s;
}

.control_button:hover {
  background:black;
  color:white;
  opacity:0.8;
  transition:0.2s;
}

4. Customize the scrollbar styles. See 10 Best Custom Scroll Bar Plugins for more details.

::-webkit-scrollbar {
  width: 10px;
}

::-webkit-scrollbar-track {
  background: #f1f1f1;
}

::-webkit-scrollbar-thumb {
  background: #888;
}

5. Load the latest jQuery library in the document.

<script src="/path/to/cdn/jquery.slim.min.js"></script>

6. Enable the horizontal scroller.

window.addEventListener("load" , function (){
  $(".previous_button").on("click",function(){ scroll(this,false); });
  $(".next_button").on("click",    function(){ scroll(this,true); });
});

function scroll(elem,next){
  let target  = $(elem).siblings(".data_preview_area");
  let width   = target.outerWidth()
  if (next){
    target.animate({ scrollLeft:"+=" + String(width) } , 300);
  }
  else{
    target.animate({ scrollLeft:"-=" + String(width) } , 300);
  }
}

Changelog:

2021-04-25

  • Bugfixed

This awesome jQuery plugin is developed by seiya0723. For more Advanced Usages, please check the demo page or visit the official website.