Slider html | Home Page Slider using html css javascript







Slider html | Home Page Slider using html css javascript

Welcome🎉 to Code With Random blog. In this blog, we learn that how we create a Slider html. We use HTML, Css, and javascript for this Slider html. Hope you enjoy our blog so let’s start with a basic HTML structure for a Slider html.

HTML code

 <!DOCTYPE html>  
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Slider html </title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div id="main">
<h1>something</h1>
<div class="content">
<p>You can press <kbd>▲</kbd> <kbd>▼</kbd> on your keyboard or swipe up/down to navigate. Mouse wheel works too.</p></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.2.6/gsap.min.js"></script>
<script src="index.js"></script>
</body>
</html>

There is all HTML code for the Slider html. Now, you can see output without CSS, then we write css & javascript for the Slider html.

output

Slider html | Home Page Slider using html css javascript

CSS Code

 html, body {  
padding: 0;
margin: 0;
overflow: hidden;
font-family: "Sen";
}
* {
box-sizing: border-box;
outline: none;
-webkit-tap-highlight-color: transparent;
cursor: none;
user-select: none;
-webkit-user-drag: none;
}
#main {
display: flex;
}
#main .part {
flex: 1;
}
#main .part .section {
width: 100%;
height: 100vh;
position: relative;
overflow: hidden;
}
#main .part .section img {
width: 100vw;
height: 100vh;
object-fit: cover;
position: absolute;
left: var(--x);
pointer-events: none;
}
.cursor {
width: var(--size);
height: var(--size);
border-radius: 50%;
background: white;
position: absolute;
z-index: 999;
pointer-events: none;
mix-blend-mode: difference;
}
.cursor-f {
width: var(--size);
height: var(--size);
position: absolute;
top: 0;
left: 0;
background-image: url("data:image/svg+xml,%3Csvg width='47' height='47' viewBox='0 0 47 47' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M42.4202 42.4202C38.8403 46 33.3594 46 23.5 46C13.6406 46 8.15966 46 4.57983 42.4202C1 38.8403 1 33.3594 1 23.5C1 13.6406 1 8.15966 4.57983 4.57983C8.15966 1 13.6406 1 23.5 1C33.3594 1 38.8403 1 42.4202 4.57983C46 8.15966 46 13.6406 46 23.5C46 33.3594 46 38.8403 42.4202 42.4202Z' stroke='white'/%3E%3C/svg%3E%0A");
background-size: cover;
mix-blend-mode: difference;
pointer-events: none;
opacity: .5;
}
.buttons {
position: absolute;
right: 25px;
top: 50%;
transform: translateY(-50%);
z-index: 99;
}
.buttons button {
border: none;
background-size: contain;
background: url("data:image/svg+xml,%3Csvg width='10' height='29' viewBox='0 0 10 29' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9 0V27L1 17.4857' stroke='white' stroke-width='2' /%3E%3C/svg%3E%0A") no-repeat;
background-position: center;
width: 10px;
height: 30px;
display: block;
margin: 20px 0;
padding: 0 15px;
transition-duration: .6s;
}
.buttons button.next {
transform: scaleY(-1);
}
.buttons button.prev:active {
transform: translateY(8px);
}
.buttons button.next:active {
transform: scaleY(-1) translateY(8px);
}
h1 {
position: absolute;
top: 50%;
transform: translateY(-50%);
left: 0;
right: 0;
margin: auto;
z-index: 99;
color: white;
text-align: center;
font-size: 2.6em;
mix-blend-mode: overlay;
pointer-events: none;
}
.content {
width: 90%;
position: absolute;
bottom: 20px;
text-align: center;
left: 0;
right: 0;
margin: auto;
color: white;
z-index: 99;
font-size: .8em;
}
.content p {
margin: .5em auto;
}
.content kbd {
width: 15px;
height: 15px;
border: 1px solid white;
display: inline-block;
border-radius: 3px;
font-size: .9em;
vertical-align: text-top;
}
.content a {
color: rgba(227,227,227,0.78);
text-decoration: none;
border-bottom: 1px solid currentColor;
}
.content a:hover {
padding-bottom: 1px;
}

Here is our updated output CSS.

output

Slider html | Home Page Slider using html css javascript
nothing in output(let’s write js for output

Javascript code 

 const cols = 3;  
const main = document.getElementById('main');
let parts = [];
let images = [
"https://images.unsplash.com/photo-1549880338-65ddcdfd017b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2550&q=80",
"https://images.unsplash.com/photo-1544198365-f5d60b6d8190?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2550&q=80",
"https://images.unsplash.com/photo-1493246507139-91e8fad9978e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2700&q=80"
];
let current = 0;
let playing = false;
for (let i in images) {
new Image().src = images[i];
}
for (let col = 0; col < cols; col++) {
let part = document.createElement('div');
part.className = 'part';
let el = document.createElement('div');
el.className = "section";
let img = document.createElement('img');
img.src = images[current];
el.appendChild(img);
part.style.setProperty('--x', -100/cols*col+'vw');
part.appendChild(el);
main.appendChild(part);
parts.push(part);
}
let animOptions = {
duration: 2.3,
ease: Power4.easeInOut
};
function go(dir) {
if (!playing) {
playing = true;
if (current + dir < 0) current = images.length - 1;
else if (current + dir >= images.length) current = 0;
else current += dir;
function up(part, next) {
part.appendChild(next);
gsap.to(part, {...animOptions, y: -window.innerHeight}).then(function () {
part.children[0].remove();
gsap.to(part, {duration: 0, y: 0});
})
}
function down(part, next) {
part.prepend(next);
gsap.to(part, {duration: 0, y: -window.innerHeight});
gsap.to(part, {...animOptions, y: 0}).then(function () {
part.children[1].remove();
playing = false;
})
}
for (let p in parts) {
let part = parts[p];
let next = document.createElement('div');
next.className = 'section';
let img = document.createElement('img');
img.src = images[current];
next.appendChild(img);
if ((p - Math.max(0, dir)) % 2) {
down(part, next);
} else {
up(part, next);
}
}
}
}
window.addEventListener('keydown', function(e) {
if (['ArrowDown', 'ArrowRight'].includes(e.key)) {
go(1);
}
else if (['ArrowUp', 'ArrowLeft'].includes(e.key)) {
go(-1);
}
});
function lerp(start, end, amount) {
return (1-amount)*start+amount*end
}
const cursor = document.createElement('div');
cursor.className = 'cursor';
const cursorF = document.createElement('div');
cursorF.className = 'cursor-f';
let cursorX = 0;
let cursorY = 0;
let pageX = 0;
let pageY = 0;
let size = 8;
let sizeF = 36;
let followSpeed = .16;
document.body.appendChild(cursor);
document.body.appendChild(cursorF);
if ('ontouchstart' in window) {
cursor.style.display = 'none';
cursorF.style.display = 'none';
}
cursor.style.setProperty('--size', size+'px');
cursorF.style.setProperty('--size', sizeF+'px');
window.addEventListener('mousemove', function(e) {
pageX = e.clientX;
pageY = e.clientY;
cursor.style.left = e.clientX-size/2+'px';
cursor.style.top = e.clientY-size/2+'px';
});
function loop() {
cursorX = lerp(cursorX, pageX, followSpeed);
cursorY = lerp(cursorY, pageY, followSpeed);
cursorF.style.top = cursorY - sizeF/2 + 'px';
cursorF.style.left = cursorX - sizeF/2 + 'px';
requestAnimationFrame(loop);
}
loop();
let startY;
let endY;
let clicked = false;
function mousedown(e) {
gsap.to(cursor, {scale: 4.5});
gsap.to(cursorF, {scale: .4});
clicked = true;
startY = e.clientY || e.touches[0].clientY || e.targetTouches[0].clientY;
}
function mouseup(e) {
gsap.to(cursor, {scale: 1});
gsap.to(cursorF, {scale: 1});
endY = e.clientY || endY;
if (clicked && startY && Math.abs(startY - endY) >= 40) {
go(!Math.min(0, startY - endY)?1:-1);
clicked = false;
startY = null;
endY = null;
}
}
window.addEventListener('mousedown', mousedown, false);
window.addEventListener('touchstart', mousedown, false);
window.addEventListener('touchmove', function(e) {
if (clicked) {
endY = e.touches[0].clientY || e.targetTouches[0].clientY;
}
}, false);
window.addEventListener('touchend', mouseup, false);
window.addEventListener('mouseup', mouseup, false);
let scrollTimeout;
function wheel(e) {
clearTimeout(scrollTimeout);
setTimeout(function() {
if (e.deltaY < -40) {
go(-1);
}
else if (e.deltaY >= 40) {
go(1);
}
})
}
window.addEventListener('mousewheel', wheel, false);
window.addEventListener('wheel', wheel, false);

Final output

Slider html | Home Page Slider using html css javascript

Now we have completed our javascript section,  Here is our updated output with javascriptHope you like the Slider html. you can see output video and project screenshots. See our other blogs and gain knowledge in front-end development. Thank you 🙏💕!

In this post, we learn how to create a Slider html using simple HTML & CSS, and javascript. If we made a mistake or any confusion, please drop a comment to reply or help you in easy learning.

Written by – Code With Random/Anki 

Codepen by – Arseny M.

Share on:

Leave a Comment