最简单的轮播图编写方式,完全js书写 静态图如下:【有机会附上动态图】 主要有定时器进行自动播放功能以及按钮控制图片和文字转动效果
css代码
<style>
* {
box-sizing: border-box;
}
.slider {
width: 560px;
height: 400px;
overflow: hidden;
}
.slider-wrapper {
width: 100%;
height: 320px;
}
.slider-wrapper img {
width: 100%;
height: 100%;
display: block;
}
.slider-footer {
height: 80px;
background-color: rgb(100, 67, 68);
padding: 12px 12px 0 12px;
position: relative;
}
.slider-footer .toggle {
position: absolute;
right: 0;
top: 12px;
display: flex;
}
.slider-footer .toggle button {
margin-right: 12px;
width: 28px;
height: 28px;
appearance: none;
border: none;
background: rgba(255, 255, 255, 0.1);
color: #fff;
border-radius: 4px;
cursor: pointer;
}
.slider-footer .toggle button:hover {
background: rgba(255, 255, 255, 0.2);
}
.slider-footer p {
margin: 0;
color: #fff;
font-size: 18px;
margin-bottom: 10px;
}
.slider-indicator {
margin: 0;
padding: 0;
list-style: none;
display: flex;
align-items: center;
}
.slider-indicator li {
width: 8px;
height: 8px;
margin: 4px;
border-radius: 50%;
background: #fff;
opacity: 0.4;
cursor: pointer;
}
.slider-indicator li.active {
width: 12px;
height: 12px;
opacity: 1;
}
</style>
html代码
<div class="slider">
<div class="slider-wrapper">
<img src="./images/slider01.jpg" alt="" />
</div>
<div class="slider-footer">
<p>对人类来说会不会太超前了?</p>
<ul class="slider-indicator">
<li class="active"></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<div class="toggle">
<button class="prev"><</button>
<button class="next">></button>
</div>
</div>
</div>
js代码
<script>
// 1. 初始数据
const sliderData = [{
url: './images/slider01.jpg',
title: '对人类来说会不会太超前了?',
color: 'rgb(100, 67, 68)'
},
{
url: './images/slider02.jpg',
title: '开启剑与雪的黑暗传说!',
color: 'rgb(43, 35, 26)'
},
{
url: './images/slider03.jpg',
title: '真正的jo厨出现了!',
color: 'rgb(36, 31, 33)'
},
{
url: './images/slider04.jpg',
title: '李玉刚:让世界通过B站看到东方大国文化',
color: 'rgb(139, 98, 66)'
},
{
url: './images/slider05.jpg',
title: '快来分享你的寒假日常吧~',
color: 'rgb(67, 90, 92)'
},
{
url: './images/slider06.jpg',
title: '哔哩哔哩小年YEAH',
color: 'rgb(166, 131, 143)'
},
{
url: './images/slider07.jpg',
title: '一站式解决你的电脑配置问题!!!',
color: 'rgb(53, 29, 25)'
},
{
url: './images/slider08.jpg',
title: '谁不想和小猫咪贴贴呢!',
color: 'rgb(99, 72, 114)'
},
]
const slider = document.querySelector('.slider')
const prev = document.querySelector('.toggle .prev')
const next = document.querySelector('.toggle .next')
const footer = document.querySelector('.slider-footer')
const p = document.querySelector('.slider-footer p')
const img = document.querySelector('.slider-wrapper img')
let i = 0
// 自动播放
//下面有调用的自动播放,这一段代码将不再需要
// const timer = setInterval(function () {
// i++
// img.src = sliderData[i].url
// p.innerHTML = sliderData[i].title
// footer.style.background = sliderData[i].color
// document.querySelector('.slider-indicator .active').classList.remove('active')
// document.querySelector(`.slider-indicator li:nth-child(${i+1})`).classList.add('active')
// if (i === 7) {
// i = -1
// }
// }, 1000)
let timer = setInterval(function () {
next.click()
}, 1000)
//点击进行前一张图片的播放
prev.addEventListener('click', function () {
i--
if (i < 0) {
i = 7
}
img.src = sliderData[i].url
p.innerHTML = sliderData[i].title
footer.style.background = sliderData[i].color
document.querySelector('.slider-indicator .active').classList.remove('active')
document.querySelector(`.slider-indicator li:nth-child(${i+1})`).classList.add('active')
})
//鼠标进入先停止自动播放功能
slider.addEventListener('mouseenter', function () {
clearInterval(timer)
})
//鼠标进入以防图片自动播放速度变快,可以先停止之前的再开启新的定时器
slider.addEventListener('mouseleave', function () {
clearInterval(timer)
timer = setInterval(function () {
next.click()
}, 1000)
})
//点击进行后一张图片的播放
next.addEventListener('click', function () {
i++
if (i > 7) {
i = 0
}
img.src = sliderData[i].url
p.innerHTML = sliderData[i].title
footer.style.background = sliderData[i].color
document.querySelector('.slider-indicator .active').classList.remove('active')
document.querySelector(`.slider-indicator li:nth-child(${i+1})`).classList.add('active')
})
</script>