Slider
by Simon Hi
HTML
<div class="supercontainer">
<div class="container">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
CSS
.container {
margin: 0 auto;
display: flex;
width: 50vw;
height: 50vh;
overflow-x: scroll;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
}
.container>div {
min-width: 100%;
height: 100%;
scroll-snap-align: start;
}
.container>div:nth-of-type(1) {
background-color: red;
}
.container>div:nth-of-type(2) {
background-color: orange;
}
.container>div:nth-of-type(3) {
background-color: yellow;
}
.container>div:nth-of-type(4) {
background-color: green;
}
.container>div:nth-of-type(5) {
background-color: blue;
}
.container>div:nth-of-type(6) {
background-color: indigo;
}
.container>div:nth-of-type(7) {
background-color: violet;
}
.container+form {
text-align: center;
}
.container+form button {
margin: 1em;
border: 0;
background: transparent;
padding: 0;
width: 0;
height: 0;
border-top: 1em solid transparent;
border-bottom: 1em solid transparent;
}
.container+form button:first-of-type {
border-right: 1em solid black;
}
.container+form button:last-of-type {
border-left: 1em solid black;
}
.container+form button:first-of-type:focus {
border-right: 1em solid red;
}
.container+form button:last-of-type:focus {
border-left: 1em solid red;
}
.container+form button:focus {
outline: 0;
}
.container.noScrollBar::-webkit-scrollbar {
display: none;
}
.container.noScrollBar {
-ms-overflow-style: none;
scrollbar-width: none;
}
JavaScript
(function() {
var p = document.querySelector(".container");
var list = document.querySelectorAll(".container>div");
var f = document.createElement("form");
if (p.nextSibling) p.parentNode.insertBefore(f, p.nextSibling);
else p.parentNode.appendChild(f);
p.classList.add("noScrollBar");
function magic(ev) {
var b = ev.target;
var d = b.getAttribute("data-direction");
var w = p.clientWidth;
p.scrollLeft += w * parseInt(d, 10);
}
function addButton(v) {
var b;
b = document.createElement("button");
b.setAttribute("type", "button");
b.setAttribute("data-direction", v);
b.className = v;
f.appendChild(b);
b.addEventListener("click", magic);
}
addButton("-1");
addButton("1");
})();