
原生js--手写轮播图
图片轮播:支持手动和自动轮播,展示多张图片 点击控制:用户可以通过底部小方块选择具体显示的图片 左右箭头:提供左右箭头,方便用户手动控制轮播 自动播放:默认3秒一循环播放右侧图片
发布日期:2021-05-15 00:08:01
浏览次数:21
分类:精选文章
本文共 1207 字,大约阅读时间需要 4 分钟。
手写轮播图实现技术说明
功能概述
本轮播图实现通过创造性地利用HTML、CSS和JavaScript技术,实现了以下功能:
技术实现细节
1. 小方块点击功能
- 创建小方块:根据
ul
中图片的数量,动态创建对应数量的小方块 - 初始样式:给第一个小方块添加
current
类名,表示当前显示的图片 - 点击事件:每个小方块点击后,触发图片滚动到指定位置
- 动态滚动:通过
move
函数实现无抖动的平滑滚动
2. 左右按钮控制
- 箭头显示:鼠标移入大盒子时,显示左右箭头
- 按钮点击:左按钮滚动到上一张,右按钮滚动到下一张
- 图片切换:通过计算
count
值,设置ul
的左位置实现切换 - 样式更新:切换后同步更新底部小方块的样式
3. 自动播放功能
- 定时器:使用
setInterval
实现3秒自动播放 - 停止条件:鼠标移入轮播图区域,停止自动播放
- 恢复播放:鼠标移出后再次启动自动播放
- 触发方式:通过
click()
事件模拟按钮点击
技术细节说明
1.1 获取元素
- 大盒子:
box
变量引用主容器 - 可视区域:
screenBox
引用轮播图显示区域 - 图片宽度:
imgWidth
存储可视区域宽度 - 运动
ul
:ul
引用包含图片的ul
标签 - 底部小方块:
ol
引用显示当前位置的ol
标签 - 箭头容器:
arrBox
引用左右箭头的父盒子
1.2 小方块创建
- 使用
for
循环,根据ul
中li
的数量创建对应数量的小方块 - 每个小方块添加文字表示,方便用户识别当前显示的图片
1.3 样式控制
- 默认第一个小方块显示
current
,其他小方块隐藏 - 点击小方块时,通过
move
函数滚动到指定位置 - 更新
count
值,同步更新底部小方块样式
2.1 箭头显示
- 使用
mouseover
和mouseout
事件控制箭头的显示与隐藏 - 大盒子内移入时,箭头显示;移出时箭头隐藏
2.2 滚动逻辑
- 右按钮:计算当前显示的图片索引,滚动到下一张
- 左按钮:滚动到上一张
- 假张处理:当滚动到假张时,立即滚动到真实第一张
- 样式同步:滚动后更新底部小方块的样式
2.3 自动播放
- 使用
setInterval
启动定时器 - 每次定时器触发,调用右按钮点击事件
- 鼓励用户在轮播图上移动鼠标时,手动停止自动播放
- 鼓励开发者在需要定时操作时,谨慎使用
setInterval
3. 自定义函数
move
函数:实现平滑滚动效果- 使用
clearInterval
清除旧定时器 - 计算每次滚动步长
- 平滑移动至目标位置
- 检查是否到达目标位置,清除定时器
- 使用
总结
本轮播图实现通过创造性地利用现代Web技术,结合HTML、CSS和JavaScript,实现了一个功能丰富的轮播图控制系统。通过合理的事件处理和定时器控制,确保了轮播图的流畅性和用户体验的良好性。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月30日 11时04分33秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Jenkins - 部署在Tomcat容器里的Jenkins,提示“反向代理设置有误”
2019-03-06
wxWidgets源码分析(3) - 消息映射表
2019-03-06
wxWidgets源码分析(5) - 窗口管理
2019-03-06
wxWidgets源码分析(7) - 窗口尺寸
2019-03-06
wxWidgets源码分析(8) - MVC架构
2019-03-06
wxWidgets源码分析(9) - wxString
2019-03-06
Mybatis Generator最完整配置详解
2019-03-06
[白话解析] 深入浅出熵的概念 & 决策树之ID3算法
2019-03-06
[梁山好汉说IT] 梁山好汉和抢劫银行
2019-03-06
[源码解析] 消息队列 Kombu 之 基本架构
2019-03-06
[源码分析] 消息队列 Kombu 之 启动过程
2019-03-06
[源码分析] 消息队列 Kombu 之 Consumer
2019-03-06
抉择之苦
2019-03-06
wx.NET CLI wrapper for wxWidgets
2019-03-06
ASP.NET MVC Action Filters
2019-03-06
Powershell中禁止执行脚本解决办法
2019-03-06
HTTP协议状态码详解(HTTP Status Code)
2019-03-06
OO_Unit2 多线程电梯总结
2019-03-06