当前位置: 首页 > news >正文

轮播图各类切换场景

一、点击右侧按钮,可以无缝衔接顺序播放

核心代码:

next.addEventListener("click", function () {// alert(11)// 变量++i++;// 复原i = i % sliderData.length;// 调用toggle函数toggle();});

二、点击左侧按钮,可以无缝衔接倒序播放

核心代码:

prev.addEventListener("click", function () {// alert(22)// 变量--i--;// 复原: 如果已经是第一张了,再次点击则播放第8张图片(索引号是7)// if (i < 0) {//   // console.log(i)//   i = 7// }// 复原取余的写法// i = (i + 8) % 8i = (i + sliderData.length) % sliderData.length;// 调用 toggle 函数toggle();});

三、定时器自动播放轮播图

核心代码:

let timerId = setInterval(function () {// 每隔1秒钟,自动点击一次右侧按钮next.click();// click() 是程序模拟用户点击事件,自动来执行不需要用户点击}, 3000);

四、鼠标经过轮播图停止自动播放,鼠标离开,开启自动播放

核心代码:

// 4.1 鼠标经过(mouseenter)大盒子就让定时器停止const slider = document.querySelector(".slider");slider.addEventListener("mouseenter", function () {clearInterval(timerId);});// 4.2 鼠标离开(mouseleave)就让大盒子继续开启定时器slider.addEventListener("mouseleave", function () {timerId = setInterval(function () {// 每隔1秒钟,自动点击一次右侧按钮next.click();// click() 是程序模拟用户点击事件,自动来执行不需要用户点击}, 3000);// console.log(timerId)});

五、点击小圆点可以切换图片

核心代码:

  const lis = document.querySelectorAll(".slider-indicator li");for (let j = 0; j < lis.length; j++) {lis[j].addEventListener("click", function () {console.log(j);// 5.2 让信号量i 修改为 当前的索引号i = j;// 5.3 调用 公共 toggle 函数toggle();});}

toggle 函数封装

   function toggle() {// 更换图片、文字、背景颜色、小圆点img.src = sliderData[i].url;p.innerText = sliderData[i].title;footer.style.backgroundColor = sliderData[i].color;document.querySelector(".slider-indicator .active").classList.remove("active");document.querySelector(`.slider-indicator li:nth-child(${i + 1})`).classList.add("active");}

整体代码:

<!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;overflow: hidden;}.slider-wrapper {width: 100%;height: 320px;}.slider-wrapper img {display: block;width: 100%;height: 100%;}.slider-footer {position: relative;height: 80px;padding: 12px 12px 0 12px;background-color: rgb(37, 41, 60);}.slider-footer .toggle {display: flex;position: absolute;right: 0;top: 12px;}.slider-footer .toggle button {width: 28px;height: 28px;margin-right: 12px;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;margin-bottom: 10px;color: #fff;font-size: 18px;}.slider-indicator {display: flex;margin: 0;padding: 0;list-style: none;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">&lt;</button><button class="next">&gt;</button></div></div></div><script>// 初始数据const sliderData = [{url: "./images/slider01.jpg",title: "奔涌吧,后浪!",color: "rgb(37, 41, 60)",},{url: "./images/slider02.jpg",title: "开启剑与雪的黑暗传说!",color: "rgb(43, 35, 26)",},{url: "./images/slider03.jpg",title: "八年的怀旧游戏",color: "rgb(47, 23, 100)",},{url: "./images/slider04.jpg",title: "真正的jo厨出现了!",color: "rgb(36, 31, 33)",},{url: "./images/slider05.jpg",title: "让世界通过B站看到东方大国文化",color: "rgb(58, 91, 216)",},{url: "./images/slider06.jpg",title: "快来分享你的寒假日常吧~",color: "rgb(67, 90, 92)",},{url: "./images/slider07.jpg",title: "哔哩哔哩小年YEAH",color: "rgb(166, 131, 143)",},{url: "./images/slider08.jpg",title: "一站式解决你的电脑配置问题!!!",color: "rgb(53, 29, 25)",},];// 声明一个变量 ilet i = 0;// 获取元素const next = document.querySelector(".toggle .next");const img = document.querySelector(".slider-wrapper img");const p = document.querySelector(".slider-footer p");const footer = document.querySelector(".slider-footer");const prev = document.querySelector(".toggle .prev");// 需求1: 点击右侧按钮,可以无缝衔接顺序播放next.addEventListener("click", function () {// alert(11)// 变量++i++;// 复原i = i % sliderData.length;// 调用toggle函数toggle();});// 需求2: 点击左侧按钮,可以无缝衔接倒序播放prev.addEventListener("click", function () {// alert(22)// 变量--i--;// 复原: 如果已经是第一张了,再次点击则播放第8张图片(索引号是7)// if (i < 0) {//   // console.log(i)//   i = 7// }// 复原取余的写法// i = (i + 8) % 8i = (i + sliderData.length) % sliderData.length;// 调用 toggle 函数toggle();});// 封装 toggle 函数function toggle() {// 更换图片、文字、背景颜色、小圆点img.src = sliderData[i].url;p.innerText = sliderData[i].title;footer.style.backgroundColor = sliderData[i].color;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 () {// 每隔1秒钟,自动点击一次右侧按钮next.click();// click() 是程序模拟用户点击事件,自动来执行不需要用户点击}, 3000);// 需求4:鼠标经过轮播图停止自动播放,鼠标离开,开启自动播放// 4.1 鼠标经过(mouseenter)大盒子就让定时器停止const slider = document.querySelector(".slider");slider.addEventListener("mouseenter", function () {clearInterval(timerId);});// 4.2 鼠标离开(mouseleave)就让大盒子继续开启定时器slider.addEventListener("mouseleave", function () {timerId = setInterval(function () {// 每隔1秒钟,自动点击一次右侧按钮next.click();// click() 是程序模拟用户点击事件,自动来执行不需要用户点击}, 3000);// console.log(timerId)});// 需求5: 点击小圆点可以切换图片// 5.1 利用循环来给小圆点绑定点击事件const lis = document.querySelectorAll(".slider-indicator li");for (let j = 0; j < lis.length; j++) {lis[j].addEventListener("click", function () {console.log(j);// 5.2 让信号量i 修改为 当前的索引号i = j;// 5.3 调用 公共 toggle 函数toggle();});}</script></body>
</html>

效果图:

相关文章:

  • ip做网站域名官网建设
  • 上海网站建设 觉策动力电商数据网站
  • 做汽车介绍视频的网站吗百度指数排名热搜榜
  • 网站建设设计思想游戏代理推广渠道
  • 网站开发如何入门关键一招
  • 重庆做网站团队竞价推广托管服务
  • 【Godot引擎】如何使用内置的全局搜索功能提升开发效率
  • FastAPI+Pyomo实现线性回归解决饮食问题
  • Spring Boot中的WebSocket技术实现
  • 海底三维可视化平台
  • 600+纯CSS加载动画一键获取指南
  • 17.进程间通信(三)
  • 可视化大屏如何制作
  • 正则表达式在Java中的应用(补充)
  • 也说字母L:柔软的长舌
  • Go整合Redis2.0发布订阅
  • 任务25:绘制全局时间线(TimeLine)
  • 方法重写与方法重载详解
  • RK3568+LINUX + CODESYS带授权+实时系统,同时开自己的视觉应用
  • 自主设计一个DDS信号发生器
  • 零基础开始的网工之路第十七天------计算机网络知识
  • Python_day43
  • 二叉树的层序遍历与完全二叉树判断
  • Linux_T(Sticky Bit)粘滞位详解
  • linux——文件系统
  • 04powerbi-度量值-筛选引擎CALCULATE()