Skip to content

Instantly share code, notes, and snippets.

@chernysh2909
Created February 21, 2023 14:48
Show Gist options
  • Save chernysh2909/9a8d10adc391f974fa675ffa28b04dee to your computer and use it in GitHub Desktop.
Save chernysh2909/9a8d10adc391f974fa675ffa28b04dee to your computer and use it in GitHub Desktop.
slider
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
body{
background-color: rebeccapurple;
display: flex;
align-items: center;
justify-content: center;
}
.container{
display: flex;
flex-direction: column;
align-items: center;
gap: 50px;
}
.top{
display: flex;
align-items: center;
gap: 50px;
}
.arrow{
height: 150px;
cursor: pointer;
}
.right{
transform: rotate(180deg);
}
.frame{
width: 800px;
height: 500px;
overflow: hidden;
}
.slider{
display: flex;
transition: all 1s ease;
}
.image{
width: 100%;
height: 100%;
object-fit: cover;
}
.bottom{
display: flex;
gap: 30px
}
.button{
width: 15px;
height: 15px;
border-radius: 50%;
border: 1px solid white;
cursor: pointer;
}
</style>
</head>
<body>
<div class="container">
<div class="top">
<img src="https://cdn-icons-png.flaticon.com/512/109/109618.png" alt="" class="arrow left">
<div class="frame">
<div class="slider">
<img src="https://picsum.photos/800/500" alt="" class="image">
<img src="https://picsum.photos/800/400" alt="" class="image">
<img src="https://picsum.photos/800/700" alt="" class="image">
</div>
</div>
<img src="https://cdn-icons-png.flaticon.com/512/109/109618.png" alt="" class="arrow right">
</div>
<div class="bottom">
</div>
</div>
<script>
console.log('vf')
const left = document.querySelector('.left'),
right = document.querySelector('.right'),
slider = document.querySelector('.slider')
images = document.querySelectorAll('.image'),
lenght = images.length
bottom = document.querySelector('.bottom')
let sliderNumber = 1;
for(let i = 0; i<lenght; i++){
const div = document.createElement('div')
div.className = "button"
bottom.appendChild(div)
}
const buttons = document.querySelectorAll('.button')
buttons[0].style.backgroundColor = "white"
const resetBg = ()=>{
buttons.forEach(button=>{
button.style.backgroundColor = "transparent"
})
}
buttons.forEach((button,index)=>{
button.addEventListener('click',()=>{
resetBg()
slider.style.transform=`translateX(-${index*800}px)`
sliderNumber = index + 1
button.style.backgroundColor='white'
})
})
const nextSlide = ()=>{
slider.style.transform=`translateX(-${sliderNumber * 800}px)`
sliderNumber++
}
const prevSlide = ()=>{
slider.style.transform=`translateX(-${(sliderNumber-2) * 800}px)`
sliderNumber--
}
const getFirstSlider = ()=>{
slider.style.transform=`translateX(0px)`
sliderNumber=1
}
const getLastSlider = ()=>{
slider.style.transform=`translateX(-${(lenght - 1) * 800}px)`
sliderNumber= lenght
}
const changeColor=()=>{
resetBg()
buttons[sliderNumber-1].style.backgroundColor="white"
}
right.addEventListener('click', ()=>{
sliderNumber < lenght ? nextSlide() : getFirstSlider()
changeColor()
})
left.addEventListener('click', ()=>{
sliderNumber > 1 ? prevSlide() : getLastSlider()
changeColor()
})
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment