JavaScript实现轮播图片完整代码


Posted in Javascript onMarch 07, 2020

本文实例为大家分享了JavaScript实现轮播图片的具体代码,供大家参考,具体内容如下

JS代码注释清晰明了,一看就懂!

<!DOCTYPE html>
<html lang="en">

 <head>
 <meta charset="UTF-8">
 <title>最简单的轮播效果</title>
 <style>
 * {
 margin: 0;
 padding: 0
 }
 
 .box {
 width: 500px;
 height: 300px;
 border: 1px solid #ccc;
 margin: 100px auto;
 padding: 5px;
 }
 
 .inner {
 width: 500px;
 height: 300px;
 position: relative;
 overflow: hidden;
 }
 
 .inner img {
 width: 500px;
 height: 300px;
 vertical-align: top
 }
 
 ul {
 width: 1000%;
 position: absolute;
 list-style: none;
 left: 0;
 top: 0;
 }
 
 .inner li {
 float: left;
 }
 
 ol {
 position: absolute;
 height: 20px;
 right: 20px;
 bottom: 20px;
 text-align: center;
 padding: 5px;
 }
 
 ol li {
 display: inline-block;
 width: 20px;
 height: 20px;
 line-height: 20px;
 background-color: #fff;
 margin: 5px;
 cursor: pointer;
 }
 
 ol .current {
 background-color: red;
 }
 </style>
 </head>

 <body>
 <div class="box" id="box">
 <div class="inner">
 <!--轮播图-->
 <ul>
  <li>
  <div><img src="img/001.png" alt=""></div>
  </li>
  <li>
  <div><img src="img/1.png" alt=""></div>
  </li>
  <li>
  <div><img src="img/6.png" alt=""></div>
  </li>
  <li>
  <div><img src="img/3.png" alt=""></div>
  </li>
  <li>
  <div><img src="img/4.png" alt=""></div>
  </li>

 </ul>
 </div>
 </div>
 <script>
 /**
 *
 * @param id 传入元素的id
 * @returns {HTMLElement | null} 返回标签对象,方便获取元素
 */
 function my$(id) {
 return document.getElementById(id);
 }
 //获取各元素,方便操作
 var box = my$("box");
 var inner = box.children[0];
 var ulObj = inner.children[0];
 var list = ulObj.children;
 var olObj = inner.children[1];
 var imgWidth = inner.offsetWidth;
 var right = my$("right");
 var pic = 0;
 //根据li个数,创建小按钮
 for(var i = 0; i < list.length; i++) {
 var liObj = document.createElement("li");
 //olObj.appendChild(liObj);
 liObj.innerText = (i + 1);
 liObj.setAttribute("index", i);
 //为按钮注册mouseover事件
 liObj.onmouseover = function() {
  //先清除所有按钮的样式
  for(var j = 0; j < olObj.children.length; j++) {
  olObj.children[j].removeAttribute("class");
  }
  this.className = "current";
  pic = this.getAttribute("index");
  animate(ulObj, -pic * imgWidth);
 }
 }
 //设置ol中第一个li有背景颜色
 //olObj.children[0].className = "current";
 //克隆一个ul中第一个li,加入到ul中的最后=====克隆
 ulObj.appendChild(ulObj.children[0].cloneNode(true));
 var timeId = setInterval(onmouseclickHandle, 4000);
 function onmouseclickHandle() {
 //如果pic的值是5,恰巧是ul中li的个数-1的值,此时页面显示第六个图片,而用户会认为这是第一个图,
 //所以,如果用户再次点击按钮,用户应该看到第二个图片
 if(pic == list.length - 1) {
  //如何从第6个图,跳转到第一个图
  pic = 0; //先设置pic=0
  ulObj.style.left = 0 + "px"; //把ul的位置还原成开始的默认位置
 }
 pic++; //立刻设置pic加1,那么此时用户就会看到第二个图片了
 animate(ulObj, -pic * imgWidth); //pic从0的值加1之后,pic的值是1,然后ul移动出去一个图片
 
 }
 //设置任意的一个元素,移动到指定的目标位置
 function animate(element, target) {
 clearInterval(element.timeId);
 //定时器的id值存储到对象的一个属性中
 element.timeId = setInterval(function() {
  //获取元素的当前的位置,数字类型
  var current = element.offsetLeft;
  //每次移动的距离
  var step = 10;
  step = current < target ? step : -step;
  //当前移动到位置
  current += step;
  if(Math.abs(current - target) > Math.abs(step)) {
  element.style.left = current + "px";
  } else {
  //清理定时器
  clearInterval(element.timeId);
  //直接到达目标
  element.style.left = target + "px";
  }
 }, 10);
 }
 </script>
 </body>

</html>

精彩专题分享:jQuery图片轮播 JavaScript图片轮播

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery基础知识filter()和find()实例说明
Jul 06 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
Dec 13 Javascript
JavaScript中获取Radio被选中的值
Nov 11 Javascript
跟我学习javascript解决异步编程异常方案
Nov 23 Javascript
jQuery实现鼠标跟随效果
Feb 20 Javascript
ES6生成器用法实例分析
Apr 10 Javascript
单行 JS 实现移动端金钱格式的输入规则
May 22 Javascript
详细讲解vue2+vuex+axios
May 27 Javascript
vue中简单弹框dialog的实现方法
Feb 26 Javascript
JavaScript监听一个DOM元素大小变化
Apr 26 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
Aug 28 Javascript
详解Vue 的异常处理机制
Nov 30 Vue.js
JS实现瀑布流效果
Mar 07 #Javascript
Vue中使用better-scroll实现轮播图组件
Mar 07 #Javascript
JavaScript实现栈结构Stack过程详解
Mar 07 #Javascript
node创建Vue项目步骤详解
Mar 06 #Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
Mar 06 #Javascript
小程序跳转H5页面的方法步骤
Mar 06 #Javascript
js实现点赞按钮功能的实例代码
Mar 06 #Javascript
You might like
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
php中函数前加&amp;符号的作用分解
2014/07/08 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
2013/12/23 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
深入理解js中的加载事件
2017/02/08 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
django 自定义用户user模型的三种方法
2014/11/18 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
详解Python进程间通信之命名管道
2017/08/28 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
MYSQL基础面试题
2012/05/13 面试题
文秘应届生求职信
2014/07/05 职场文书
小学生春游活动方案
2014/08/20 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
大学感恩节活动总结
2015/05/05 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
Redis的字符串是如何实现的
2021/10/24 Redis
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript