Creating a scrollable div with left and right scroll on click event. I wanted to make the scroll effect smooth with CSS transition or any other way, please help
<div class="cardsliderblock">
<div class="sliderBlock" id="Slidercontent">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
</div>
<span class="btns horizon-prev" id="left-button"><</span>
<span class="btns horizon-next" id="right-button" >></span>
</div>
//JS
const rightBtn = document.querySelector('#right-button');
const leftBtn = document.querySelector('#left-button');
rightBtn.addEventListener("click", function(event) {
const conent = document.querySelector('#Slidercontent');
conent.scrollLeft += 150;
event.preventDefault();
});
leftBtn.addEventListener("click", function(event) {
const conent = document.querySelector('#Slidercontent');
conent.scrollLeft -= 150;
event.preventDefault();
});
// CSS
.sliderBlock {
display: flex;
height: 200px;
border: solid 1px red;
width: 800px;
overflow: hidden;
overflow-x: auto;
transition: 2s all ease;
}
.sliderBlock>div {
width: calc(100% / 5.5);
margin-right: 2.2%;
border: solid 1px black;
min-width: 143px;
}
.sliderBlock>div:nth-child(5n) {}
.btns {
display: inline-block;
width: 20px;
height: 20px;
background: red;
}
2
Answers
For Smooth Scroll you need to use
Element.scrollTo()
method instead ofscrollLeft
property. withscrollTo
you can pass thebehavior
option, setting it tosmooth
.Learn more about
Element.scrollTo()
Demo:
You can use
to make this smooth