Html+Css+JavaScript实现完整的轮播图功能

概要

这个案例具备常见轮播图完整的功能,大家可以根据自己的需求去修改; 代码可以直接复制运行,需要安装sass

主要功能:

(1)鼠标移入轮播图,左右两边的按钮出现,离开则隐藏按钮;(CSS完成)

(2)点击左侧按钮,图片向右播放一张,右侧按钮同理;

(3)图片播放的同时,下面的小圆圈也会随之变化;

(4)点击小圆圈,播放相应的图片;

(5)鼠标移入小圆圈,播放相应的图片(看需求是要点击还是移入,把click改成mouseenter)

(6)鼠标移出轮播图自动播放图片

(7)鼠标移入轮播图暂停播放图片

页面效果:

大家觉得有帮助的话可以点个赞支持下,谢谢啦~

完整代码:

一、Css样式,使用sass预编译器

<style >/* 默认样式 */* {margin: 0;padding: 0;a {text-decoration: none;}li {list-style: none;}}/* 轮播图盒子 */.box {width: 600px;height: 350px;margin: 70px auto;position: relative;overflow: hidden;/* 上、下一页 */.prev,.next {opacity: 0;display: inline-block;cursor: pointer;width: 50px;height: 50px;position: absolute;top: 50%;color: #d2d0d0;z-index: 33;text-align: center;font-size: 40px;transform: translateY(-25px);}/* 上一页不同的属性 */.prev {left: 0;border-radius: 0 25% 25% 0;}/* 下一页不同的属性 */.next {right: 0;border-radius: 25% 0 0 25%;}/* 图片容器 */.images {position: absolute;top: 0;left: 0;width: 1000%;/* 图片 */li {list-style: none;float: left;img {width: 600px;height: 350px;}}}/* 小圆点盒子 */.dots {position: absolute;bottom: 10px;left: 50%;height: 13px;transform: translateX(-50%);background: rgba(255, 255, 255, .3);border-radius: 7px;display: flex;/* 小圆点 */li {width: 10px;height: 10px;border-radius: 50%;border-color: white;background-color: rgb(0, 0, 0, 0.2);margin: 2px 5px;cursor: pointer;}/* 选择的小圆点 */.active {background-color: rgb(247, 243, 243);}}}/* 鼠标移入盒子显示上、下按钮 */.box:hover .prev,.box:hover .next {opacity: 1;}/* 鼠标移入上、下按钮,背景模糊 */.box .prev:hover,.box .next:hover {background-color: rgba(0, 0, 0, 0.2);}
</style>

二、Html结构

<body><div class="box"><!-- 左箭头 --><a href="javascript:;" class="prev"> &lt;</a><!-- 右箭头 --><a href="javascript:;" class="next"> &gt;</a><ul class="images"><li><a href="#"><img src="./src/assets/00.jpg" alt="轮播图图片"></a></li><li><a href="#"><img src="./src/assets/11.jpg" alt="轮播图图片"></a></li><li><a href="#"><img src="./src/assets/12.jpg" alt="轮播图图片"></a></li><li><a href="#"><img src="./src/assets/13.jpg" alt="轮播图图片"></a></li><li><a href="#"><img src="./src/assets/15.jpg" alt="轮播图图片"></a></li><li><a href="#"><img src="./src/assets/16.jpg" alt="轮播图图片"></a></li></ul><ul class="dots"><!-- li 用js动态生成--></ul></div>
</body>

三、JavaScript

<script>/* 功能需求(1)当鼠标经过轮播图,左右两边的按钮出现,离开则隐藏按钮;(CSS完成)(2)点击左侧按钮,图片向右播放一张,右侧同理;(3)图片播放的同时,下面的小圆圈也会随之变化;(4)点击小圆圈,可以播放相应的图片;(5)鼠标移入小圆圈,可以播放相应的图片(看需求是要点击还是移入,把click改成mouseenter)(6)鼠标移出轮播图会自动播放图片(7)鼠标移入轮播图会暂停播放图片*/window.addEventListener('load', function () {// 图片的下标var slideIndex = 0;//circle 控制小圆圈的播放var circle = 0;//获取小圆圈盒子var dots = document.querySelector('.dots');//获取所有图片var images = document.querySelector('.images');//获取轮播图容器var box = document.querySelector('.box')//获取轮播图容器宽度var box_width = box.offsetWidth;//1.获取上、下一页并添加点击事件var prev = document.querySelector(".prev")var next = document.querySelector(".next")//上一页prev.addEventListener("click", function () {if (slideIndex == 0) {//已经第一页了,再上一页就该是最后一页slideIndex = images.children.length - 1images.style.left = -slideIndex * box_width + 'px';}slideIndex--;animate(images, -slideIndex * box_width)// 小圆圈跟随一起变化circle--;circle = circle < 0 ? dots.children.length - 1 : circle;//调用函数circleChange();});//下一页next.addEventListener("click", function () {if (slideIndex == images.children.length - 1) {//已经最后一页了,再下一页就该是第一页images.style.left = 0;slideIndex = 0;}slideIndex++;animate(images, -slideIndex * box_width);// 小圆圈跟随一起变化circle++;if (circle == dots.children.length) {circle = 0;}circleChange();});// 2.动态生成小圆圈 有几张图片,就生成几个小圆圈var dots = document.querySelector('.dots');for (var i = 0; i < images.children.length; i++) {//创建一个小livar li = document.createElement('li');//记录当前小圆圈的索引号 通过创建自定义属性来做li.setAttribute('index', i);dots.appendChild(li);//小圆圈的排他思想 在生成小圆圈的同时绑定点击事件li.addEventListener('click', function () {for (var i = 0; i < dots.children.length; i++) {dots.children[i].className = ' '; //清空样式}this.className = 'active';//点击小圆圈,移动图片,本质移动的是ul//ul 的移动距离 就是小圆圈的索引号 * 图片的宽度 注意是负值// 当我们点击了某个小li 就拿到它的index属性var index = this.getAttribute('index');//当我们点击了某个小li 就要把这个小li 的index给slideIndexslideIndex = index;circle = index;animate(images, -slideIndex * box_width);})}//把dots 里面的第一个小li设置类名为 activedots.children[0].className = 'active';// 实现滑动到最后一张照片时 可以平滑地过渡到第一张,克隆第一张图片 放在ul最后面,在其后克隆小圆点不会多var first = images.children[0].cloneNode(true);images.appendChild(first);//3.点击小圆圈添加激活样式function circleChange() {for (var i = 0; i < dots.children.length; i++) {dots.children[i].className = '';}dots.children[circle].className = 'active';}//定时器自动播放3Svar timer = setInterval(function () {next.click();}, 3000);//3.绑定鼠标移入移出事件//鼠标移入,停止播放,清除计时器box.addEventListener('mouseenter', function () {clearInterval(timer);timer = null;//清除计时器});//鼠标离开,轮播图自动切换 相当于点击右箭头box.addEventListener('mouseleave', function () {timer = setInterval(function () {// 手动调用事件next.click();}, 3000);});//轮播图播放动画function animate(obj, target, callback) {//让元素只有一个定时器在执行,需要清除以前的定时器clearInterval(obj.timer);obj.timer = setInterval(function () {var step = (target - obj.offsetLeft) / 10;step = step > 0 ? Math.ceil(step) : Math.floor(step);if (obj.offsetLeft == target) {//停止动画 本质是停止定时器clearInterval(obj.timer)//回调函数写到定时器结束位置if (callback) {callback();}}//把每次加1这个步长值改为一个慢慢变小的值obj.style.left = obj.offsetLeft + step + 'px';}, 15);}next.click();})
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/638466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

proteus8.15安装教程

proteus8.15安装教程 1.管理员运行 2.一直NEXT到这一步&#xff0c;需要注意&#xff0c;一定要选这一个 3.选中后出现 4.一直下一步到更新 这边结束后准备激活&#xff1a; 1.安装激活插件&#xff0c;先关闭防火墙 2.下一步 3.最后&#xff0c;将数据库放在根目录下 …

从零开始配置pwn环境:sublime配置并解决pwn脚本报错问题

1.sublime安装 Download - Sublime Text ──(holyeyes㉿kali2023)-[~] └─$ sudo dpkg -i sublime-text_build-4169_amd64.deb [sudo] password for holyeyes: Selecting previously unselected package sublime-text. (Reading database ... 409163 files and directori…

huggingface学习 | 云服务器使用hf_hub_download下载huggingface上的模型文件

系列文章目录 huggingface学习 | 云服务器使用git-lfs下载huggingface上的模型文件 文章目录 系列文章目录一、hf_hub_download介绍二、找到需要下载的huggingface文件三、准备工作及下载过程四、全部代码 一、hf_hub_download介绍 hf_hub_download是huggingface官方支持&…

力扣【四数之和】

一、题目描述 18. 四数之和 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&#xff0c;则认为两个四元组重复&#x…

大数据开发之电商数仓(hadoop、flume、hive、hdfs、zookeeper、kafka)

第 1 章&#xff1a;数据仓库 1.1 数据仓库概述 1.1.1 数据仓库概念 1、数据仓库概念&#xff1a; 为企业制定决策&#xff0c;提供数据支持的集合。通过对数据仓库中数据的分析&#xff0c;可以帮助企业&#xff0c;改进业务流程、控制成本&#xff0c;提高产品质量。 数据…

C#中chart控件

C#中chart控件 图表的5大集合 例子 第一步&#xff1a;创建工程 放入chart控件 series集合 选择图标类型 选择绘制曲线的宽度和颜色。 显示数据标签 Title集合 添加标题 调整标题字体&#xff1a;大小和颜色 CharsArea集合 对坐标轴进行说明 设置间隔 设置刻度…

第11章_常用类和基础API拓展练习(字符串相关练习,日期时间API练习,比较器练习,其它API练习)

文章目录 第11章_常用类和基础API拓展练习字符串相关练习1&#xff1a;阅读题1、length说明2、阅读代码&#xff0c;分析结果3、阅读代码&#xff0c;分析结果4、阅读代码&#xff0c;分析结果5、阅读代码&#xff0c;分析结果6、阅读代码&#xff0c;分析结果7、阅读代码&…

【Linux】Linux基本操作(二):rm rmdir man cp mv cat echo

承接上文&#xff1a; 【【Linux】Linux基本操作&#xff08;一&#xff09;&#xff1a;初识操作系统、ls、cd、touch、mkdir、pwd 】 目录 1.rmdir指令 && rm 指令&#xff1a; rmdir -p #当子目录被删除后如果父目录也变成空目录的话&#xff0c;就连带父目录一…

崩溃了!我说用attach进行问题定位,面试官问我原理

Arthas&#xff08;阿尔萨斯&#xff09;是一款开源的Java诊断和监控工具&#xff0c;可以在生产环境中进行实时的应用程序分析和故障排查。Arthas的实现原理主要基于Java Instrumentation API和Java Agent技术。 Java Agent 是 Java 编程语言提供的一种特殊机制&#xff0c;允…

3.php开发-个人博客项目输入输出类留言板访问IPUA头来源

目录 知识点 : 输入输出 配置环境时&#xff1a; 搜索框&#xff1a; 留言板&#xff1a; 留言板的显示&#xff08;html&#xff09;&#xff1a; php代码显示提交的留言&#xff1a; 写入数据库 对留言内容进行显示&#xff1a; php全局变量-$_SERVER 检测来源 墨…

AMEYA360:航顺HK32AUTO39A—适用车载娱乐系统优化方案

车载娱乐系统&#xff0c;顾名思义最开始其功能主要是为驾驶员和乘客提供娱乐体验&#xff0c;但现在智能座舱时代到来&#xff0c;车载信息娱乐系统已成为“人-车-环境”交互的重要载体&#xff0c;是除了驾驶以外的其他任务的中心。 从功能模块上看&#xff0c;车载娱乐系统从…

【算法练习Day50】下一个更大元素II接雨水

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 下一个更大元素II接雨水单调…

9.4 Lambda表达式

9.4 Lambda表达式 1 Lambda语法2. 基于Lambda实现函数式编程3. Stream流式处理 1 Lambda语法 2. 基于Lambda实现函数式编程 3. Stream流式处理

【网站项目】基于SSM的273校园二手交易网站

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

cesium实现动态围栏

项目中使用到了cesium,需要实现动态的围栏的效果&#xff0c; 在网上也找了好多案例&#xff0c;通过着色器来实现效果&#xff0c;为此也有好多博主也附上了自己的代码&#xff0c;也许是因为使用方法不同&#xff0c;复制代码并修改依旧还是没有通过他们的方式实现效果【着色…

STM32标准库开发——PWM驱动代码

PWM驱动初始化代码 使能定时器二时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);设置定时器时钟源 TIM_InternalClockConfig(TIM2);配置定时器二的时基单元 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; TIM_TimeBaseInitStruct.TIM_ClockDivisionTIM_CKD_D…

vmware 安装Rocky-9.3系统

安装系统截图 安装完成&#xff0c;启动 查看版本和内核 开启远程登陆授权 1、编辑配置文件 #提升权限&#xff0c;输入su,并输入密码 su #编辑ssh文件开启root远程登陆 vi /etc/ssh/sshd_config找到以下内容&#xff1a;#PermitRootLogin prohibit-password 添加&#xff1a…

C语言——小细节和小知识11

一、自幂数 1、介绍 自幂数&#xff0c;也被称为阿姆斯特朗数&#xff0c;是一种特殊类型的数&#xff0c;在数学上具有一个有趣的性质&#xff1a;一个 n 位的正整数&#xff0c;其各个位上的数字的 n 次幂之和等于它本身。 这里是自幂数的定义步骤&#xff1a; 确定位数 (…

Windows ssh登录eNSP交换机

目录 1. Cloud IO配置1.1 创建UDP端口1.2 创建本地连接1.3 端口映射设置 2. 交换机配置2.1 配置vlanif2.2 配置vty2.3 配置ssh用户2.4 配置aaa2.5 使用Xshell工具登录2.6 用户和密码2.7 登录成功 3. 使用cmd 登录报错提示3.1 手动指定加密算法&#xff0c;提示密码长度无效3.2 …

Softmax函数介绍

Softmax函数是一种常用的激活函数&#xff0c;用于将一组实数值转换为概率分布。它常用于多类别分类问题中&#xff0c;将输入向量映射为各个类别的概率。 Softmax函数的公式如下&#xff1a; 其中&#xff0c;示输入向量的第 &#xfffd;i 个元素&#xff0c;&#xfffd;n …