知识点


轮播图思想:
① 建立一个全局变量索引,始终标记当前显示图片。
② 根据当前图片的数量,动态创建下方的●图片指示器。
③ 轮播图的初始状态为第一张图片在中间,剩余所有图片均放在即将显示图片位置。
④ 当点击>的时候,当前图片调用动画移动函数进行左移,与此同时新的一张图片调用动画函数移入到div中,而会将下一张展示的图片移动到div右侧。
⑤ 需要进行边界判断,如果当前的图片大于图片数量或者小于等于0,重新给索引赋值。
⑥ 当点击图片指示器的时候,首先判定点击的与索引的位置关系,然后进行动画移动。
⑦ 给div添加定时器,自动移动图片。当鼠标进入div,删除定时器,当鼠标移出div,设置定时器。

运行效果

  1. 自动轮播
  2. 点击左右切换图片
  3. 点击下方图片指示器切换图片

代码

引入MyTools.js库
1.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="1.css">
</head>
<body>
<div id="box"><div id="box_content"><div class="box_img"><img src="casual01.jpg" alt=""></div><div class="box_img"><img src="casual02.jpg" alt=""></div><div class="box_img"><img src="casual03.jpg" alt=""></div><div class="box_img"><img src="casual04.jpg" alt=""></div><div class="box_img"><img src="casual05.jpg" alt=""></div></div><div id="box_control"><a href="javascript:;" class="box_control_left"><i><</i></a><a href="javascript:;" class="box_control_right"><i>></i></a><ul></ul></div>
</div>
<script src="../JavaScript学习/00MyTools/MyTools.js"></script>
<script src="1.js"></script>
</body>
</html>

1.css

*{margin: 0;padding: 0;}
a{color: #999;text-decoration: none;position: absolute;top: 50%;transform: translateY(-50%);background-color: rgba(0, 0, 0, .4);
}
a:hover{color: #f8b62b;
}
i{font-size: 50px;font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
#box{height: 482px;width: 830px;background-color: red;position: absolute;left: 50%;top: 50%;transform: translate(-50%,-50%);overflow: hidden;
}
#box_content{height: 100%;width: 100%;cursor: pointer;
}
#box_content img{position: absolute;vertical-align: top;height: 100%;width: 100%;/*left: 830px;*/
}
.box_img{width: 100%;height: 100%;position: absolute;}
.box_control_right{position: absolute;right: 0;
}
.box_control_left{position: absolute;left: 0;
}
ul{position: absolute;bottom: 30px;left: 50%;transform: translateX(-50%);display: flex;justify-content:space-evenly;
}
ul>li{list-style: none;width: 16px;height: 16px;background-color: #fff;margin: 0 3px;border-radius: 50%;cursor: pointer;
}
ul>li.current{background-color: darkorange;
}

1.js

window.addEventListener('load',function (ev) {// 轮播图(function () {// 1. 获取需要标签var boxContent = myTool.$('box_content');var contentImg = boxContent.children;var boxControl = myTool.$('box_control');var controlBottom = boxControl.children[2];// 2. 全局索引var iNow = 0;// 3. 根据图片个数动态添加下方图片指示器for (var i = 0; i < contentImg.length; i++) {var li = document.createElement('li');controlBottom.insertBefore(li,controlBottom.children[0]);}// 4. 让第一个图片指示器选中controlBottom.children[0].className = 'current';// 5. 让除了第一张图片以外所有图片进入待显示区域var scrollImgWidth = boxContent.offsetWidth;for (var j = 1; j < contentImg.length; j++) {contentImg[j].style.left = scrollImgWidth + 'px';}// 6. 处理左右两侧点击var cPrev = boxControl.children[0];var cNext = boxControl.children[1];// 6.1 点击左边cPrev.addEventListener('click',function (evt) {// 1. 当前可视区域图片快速右移// 2. 上一张幻灯片出现在可视区域左侧// 3. 让这张幻灯片做动画进入myTool.slowMoving(contentImg[iNow],{'left':scrollImgWidth},null);iNow--;// 边界处理if (iNow < 0){iNow = contentImg.length - 1;}contentImg[iNow].style.left = -scrollImgWidth + 'px';myTool.slowMoving(contentImg[iNow],{'left':0},null);// 切换索引changeIndex();},false);// 6.2 点击右边cNext.addEventListener('click',function (evt) {autoPlay();},false);// 7. 下侧图片指示器操作for (var k = 0; k < controlBottom.children.length; k++) {// 取出单个li标签var bottomLi = controlBottom.children[k];// 监听鼠标进入(function (index) {bottomLi.addEventListener('mouseover',function (evt) {// 比较当前索引和点击指示器位置关系if (index > iNow){myTool.slowMoving(contentImg[iNow],{'left':-scrollImgWidth},null);contentImg[index].style.left = scrollImgWidth + 'px';}else if(index < iNow){myTool.slowMoving(contentImg[iNow],{'left':scrollImgWidth},null);contentImg[index].style.left = -scrollImgWidth + 'px';}iNow = index;myTool.slowMoving(contentImg[iNow],{'left':0});// 切换索引changeIndex();},false);})(k)}/*** 切换索引操作*/function changeIndex() {for (var i = 0; i < controlBottom.children.length; i++) {controlBottom.children[i].className = '';}// 当前的被选中controlBottom.children[iNow].className = 'current';}/*** 点击右侧和图片自动运动操作*/function autoPlay(){// 1. 当前可视区域图片快速左移// 2. 下一张图片出现在可视区域右侧// 3. 让这张图片做动画进入myTool.slowMoving(contentImg[iNow],{'left':-scrollImgWidth},null);iNow++;// 边界处理if (iNow >= contentImg.length) {iNow = 0;}contentImg[iNow].style.left = scrollImgWidth + 'px';myTool.slowMoving(contentImg[iNow], {"left": 0},null);// 切换索引changeIndex();}// 8. 设置定时器var timerId = setInterval(autoPlay,2000);// 9. 鼠标进入图片div后设置和清除定时器myTool.$('box').addEventListener('mouseover',function () {clearInterval(timerId);});myTool.$('box').addEventListener('mouseout',function () {timerId = setInterval(autoPlay,2000);});})();
},false);

Javascript特效:普通轮播图相关推荐

  1. JavaScript实现网页轮播图

    轮播图也成为焦点图,是网页中比较常见的网页特效 一.功能: 1.鼠标经过轮播图模块,左右两边的按钮显示,鼠标离开轮播图模块,就隐藏左右按钮. 2.点击右(左)侧按钮一次,图片往左(右)播放一张,一以此 ...

  2. 【JavaScript】网页轮播图

    目录 HTML搭建 功能实现 小圆圈事件 左右按钮事件 自动播放 轮播图也叫焦点图,是网页中比较常见的网页特效. 功能: 鼠标经过轮播图模块,左右按钮显示,离开隐藏左右按钮. 点击右侧按钮一次,图片往 ...

  3. 用javascript做网页轮播图

    文章目录 网页轮播图: 功能需求: 动图展示: 代码分析: 主题结构部分: 样式设置: 交互效果: 引用缓动动画(图片滚动的效果) 网页轮播图: 轮播图也称为焦点图,是网页中比较常见的网页特效. 功能 ...

  4. WebAPI第五天学习总结—— 移动端常见特效(轮播图)

    移动端常见特效 案例: 移动轮播图 需求:移动端轮播图功能和基本PC端一致 可以自动播放图片 手指可以拖动播放轮播图 案例分析: 自动播放功能 开启定时器 移动端移动,可以使用translate 移动 ...

  5. Web APIs:PC 端网页特效--常见网页特效案例--轮播图及节流阀思想

    轮播图也称为焦点图,是网页中比较常见的网页特效. 功能需求: 1. 鼠标经过轮播图模块,左右按钮显示,离开隐藏左右按钮. 2. 点击右侧按钮一次,图片往左播放一张,以此类推, 左侧按钮同理. 3. 图 ...

  6. 用JavaScript制作天猫轮播图

    **pacity和rgba的区别:** 1. 都可以设置透明的效果, 2. 用opacity来设置透明效果时文本的内容也会变透明,而用rgba来设置是文本的内容不会改变.例如:opacity:0.3; ...

  7. 原生javascript之实战 轮播图

    成品效果如下图所示: 因为博客园限制图片上传大小被我删了一些帧数,所以图片看起来会有一点卡,现实运行是不会的 搭建HTML和CSS结构 HTML代码如下: 1 <div class=" ...

  8. 前端全栈大佬是如何使用javaScript实现一个轮播图

    效果图: 代码如下: <!DOCTYPE html> <html> <head lang="en"><meta charset=" ...

  9. HTML+JavaScript网页背景轮播图完整源码

    轮播图运行效果 轮播图实现完整源码 <!DOCTYPE html> <html lang="en">

  10. 用HTML5和JavaScript做一个轮播图

    说明: (1)代码中四个div内的图片 " images/14.jpg " , " images/15.jpg " , " images/16.jpg ...

最新文章

  1. UE5废墟破坏游戏场景创建学习教程
  2. mutations vuex 调用_Vuex源码学习(六)action和mutation如何被调用的(前置准备篇)...
  3. jQuery UI 拖动(Draggable) - 延迟开始
  4. 远程拷贝、查看端口、vim常见快捷键、查找替换命令、grep命令、查看存储空间的命令、chkconfig命令、系统自动启动级别、主机名配置、IP地址配置、域名映射、防火墙设置
  5. Android 多选列表
  6. python小技巧积累--题库(持续更新)
  7. 查看mysql日志post_(转)MySQL 日志组提交
  8. 图像处理相关知识(不断更新)
  9. 26期20180606 chmod chown umask 隐藏权限
  10. 使用nginx做反代时遇到413 Request Entity Too Large的解决方法
  11. 基于markdown消息类型实现钉钉报警,让感官更舒服
  12. 自学编程这几点非常重要
  13. bootstrap-table分页插件使用
  14. EVEREST的使用教程
  15. C#获取电脑MAC地址(物理地址)的几种方法
  16. 未来几十年内人类将可在月球定居:生育繁衍下一代
  17. python安装教程(配置环境变量)
  18. 三大通识知识:进程,线程,网络(四)
  19. php 当地天气预报,php 天气预报代码 采集自中央气象台范围覆盖全国_PHP教程
  20. vue进度条组件_ins风格进度栏的Vue组件

热门文章

  1. 24.Yii 组件行为
  2. 24.Plugin System
  3. 52. PHP 伪静态
  4. 5. CSS 类选择器
  5. c语言纵行输入大写字母图形,GitHub - xswei/SVG_Essentials: 《SVG精髓》 阅读笔记
  6. 【转】腾讯云-解决Winscp permission denied的问题
  7. Eclipse快捷键 10个最有用的快捷键(转载收藏)
  8. 使用gc、objgraph干掉python内存泄露与循环引用!
  9. 上手DocumentDB On Azure (二)
  10. 利用老毛桃启动盘制作三合一系统启动:WINPE + CDlinux + Ubuntu