<!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>轮播图点击切换</title>
<style>
* {
box-sizing: border-box;
}
.slider {
width: 560px;
height: 400px;
margin: auto;
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>
</head>
<body>
<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>
<script>
// 1. 初始数据
const data = [{
url: './images/slider01.jpg',
title: '奋斗',
color: 'rgb(132, 91, 48)'
},
{
url: './images/slider02.jpg',
title: '风景图1',
color: 'rgb(74, 75, 24)'
},
{
url: './images/slider03.jpg',
title: '海边!',
color: 'rgb(53, 40, 38)'
},
{
url: './images/slider04.jpg',
title: '雪景',
color: 'rgb(191, 190, 196)'
},
{
url: './images/slider05.jpg',
title: '重庆洪崖洞',
color: 'rgb(109, 112, 109)'
},
{
url: './images/slider06.jpg',
title: '重庆火锅',
color: 'rgb(166, 131, 143)'
},
{
url: './images/slider07.jpg',
title: '重庆小面',
color: 'rgb(55, 33, 28)'
},
{
url: './images/slider08.jpg',
title: '重庆火锅宣传图',
color: 'rgb(228, 81, 76)'
},
]
// 获取元素
const img = document.querySelector('.slider-wrapper img')
const p = document.querySelector('.slider-footer p')
const footer = document.querySelector('.slider-footer')
// 1. 右按钮业务
// 1.1 获取右侧按钮
const next = document.querySelector('.next')
let i = 0 // 信号量 控制播放图片张数
// 1.2 注册点击事件
next.addEventListener('click', function() {
i++
i = i >= data.length ? 0 : i
// 1.3 得到对应的对象
// console.log(data[i])
// 调用函数
toggle()
})
// 2. 左侧按钮业务
// 2.1 获取左侧按钮
const prev = document.querySelector('.prev')
// 1.2 注册点击事件
prev.addEventListener('click', function() {
i--
i = i < 0 ? data.length - 1 : i
// 1.3 得到对应的对象
// console.log(data[i])
// 调用函数
toggle()
})
// 声明一个渲染的函数作为复用
function toggle() {
// 1.4 渲染对应的数据
img.src = data[i].url
p.innerHTML = data[i].title
footer.style.backgroundColor = data[i].color
// 1.5 更换小圆点 先移除原来的类名, 当前li再添加 这个 类名
document.querySelector('.slider-indicator .active').classList.remove('active')
document.querySelector(`.slider-indicator li:nth-child(${i + 1})`).classList.add('active')
}
// 3. 自动播放模块
let timerId = setInterval(function() {
// 利用js自动调用点击事件 click() 一定加小括号调用函数
next.click()
}, 1000)
// 4. 鼠标经过大盒子,停止定时器
const slider = document.querySelector('.slider')
// 注册事件
slider.addEventListener('mouseenter', function() {
// 停止定时器
clearInterval(timerId)
})
// 5. 鼠标离开大盒子,开启定时器
// 注册事件
slider.addEventListener('mouseleave', function() {
// 停止定时器
if (timerId) clearInterval(timerId)
// 开启定时器
timerId = setInterval(function() {
// 利用js自动调用点击事件 click() 一定加小括号调用函数
next.click()
}, 1000)
})
// 6. 鼠标经过小li,跳到指定的位置,并修改样式
//6.1获取对象li集合
const indicators = document.querySelectorAll('.slider-indicator li')
//每个小li设置
indicators.forEach((indicator, index) => {
indicator.addEventListener('mouseenter', function() {
i = index
toggle()
})
});
</script>
</body>
</html>
没有合适的资源?快使用搜索试试~ 我知道了~
以上代码实现了一个简单的轮播图功
共9个文件
jpg:8个
html:1个
需积分: 0 1 下载量 6 浏览量
2023-08-20
17:49:40
上传
评论
收藏 4.21MB ZIP 举报
温馨提示
以上代码实现了一个简单的轮播图功能,其中包含以下主要部分: 1. 初始化数据:定义了一个包含轮播图信息的数组 `data`,每个元素包含图片的URL、标题和背景颜色。 2. 获取元素:使用 `querySelector` 方法获取需要操作的元素,如图片、文字和指示器等。 3. 右按钮业务:给右侧的按钮添加点击事件,每次点击时,切换到下一张图片,并更新相应的样式。 4. 左按钮业务:给左侧的按钮添加点击事件,每次点击时,切换到上一张图片,并更新相应的样式。 5. 渲染函数:封装了一个用于切换图片和更新样式的函数 `toggle()`,用于复用代码。 6. 自动播放:使用 `setInterval` 方法设置定时器,每隔一段时间自动切换到下一张图片。 7. 停止定时器:当鼠标悬停在轮播图大盒子上时,清除定时器,停止自动播放。 8. 开启定时器:当鼠标离开轮播图大盒子时,重新设置定时器,继续自动播放。 9. 指示器切换:给每个小指示器添加鼠标进入事件,当鼠标悬停在指示器上时,切换到相应的图片,并更新指示器的样式。
资源推荐
资源详情
资源评论
收起资源包目录
slideshow.zip (9个子文件)
slideshow
轮播图完整版.html 6KB
images
slider04.jpg 45KB
slider08.jpg 513KB
slider05.jpg 499KB
slider01.jpg 22KB
slider03.jpg 1.96MB
slider06.jpg 253KB
slider07.jpg 392KB
slider02.jpg 571KB
共 9 条
- 1
资源评论
qq_47746614
- 粉丝: 164
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功