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 相关文章推荐
通过下拉框的值来确定输入框是否可以为空的代码
Oct 18 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
Dec 26 Javascript
关于火狐(firefox)及ie下event获取的两种方法
Dec 27 Javascript
JS刷新框架外页面七种实现代码
Feb 18 Javascript
简介JavaScript中search()方法的使用
Jun 06 Javascript
纯css实现窗户玻璃雨滴逼真效果
Aug 23 Javascript
JavaScript添加随滚动条滚动窗体的方法
Feb 23 Javascript
Angularjs上传文件组件flowjs功能
Aug 07 Javascript
详解react-native-fs插件的使用以及遇到的坑
Sep 12 Javascript
前端使用crypto.js进行加密的函数代码
Aug 16 Javascript
vue 使用localstorage实现面包屑的操作
Nov 16 Javascript
Vue.js中v-bind指令的用法介绍
Mar 13 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
C# Assembly类访问程序集信息
2009/06/13 PHP
php函数与传递参数实例分析
2014/11/15 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
浅谈JavaScript实现面向对象中的类
2014/12/09 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
python zip文件 压缩
2008/12/24 Python
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
python爬虫_自动获取seebug的poc实例
2017/08/05 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
如何运行带参数的python脚本
2019/11/15 Python
python的等深分箱实例
2019/11/22 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
零基础小白多久能学会python
2020/06/22 Python
Python项目跨域问题解决方案
2020/06/22 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
解除劳动合同协议书范本2014
2014/09/25 职场文书
2014年度工作总结报告
2014/12/15 职场文书
大班上学期个人总结
2015/02/13 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
js实现自动锁屏功能
2021/06/02 Javascript
试了下Golang实现try catch的方法
2021/07/01 Golang
java高级用法JNA强大的Memory和Pointer
2022/04/19 Java/Android
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库