原生JS无缝滑动轮播图


Posted in Javascript onOctober 22, 2019

本文实例为大家分享了原生JS无缝滑动轮播图的具体实现代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <style type="text/css">
 ul,div,img{
 margin: 0;
 padding: 0;
 list-style: none;
 vertical-align: top;
 }
 #banner{
  width: 400px;
  height: 300px;
  margin:50px auto; 
  position: relative;
  overflow: hidden;
 }
 #banner ul{
  width: 400px;
  position: absolute;
 }
 #banner li img{
  width: 400px;
  height: 300px;
  text-align: center;
  line-height: 300px;
  font-size: 40px;
 }
 #dot{
  height: 20px;
  position: absolute;
  left: calc(50% - 80px);
  bottom: 20px;
 }
 #dot i{
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #fff;
  float: left;
  margin: 0 10px;
  cursor: pointer;
 }
 #dot i.current{
  background: rgb(161,1,34);
 }
 #pages{
  height: 60px;
  width:100%;
  position: absolute;
  top: calc(50% - 30px);
  cursor: pointer;
 }
  #pages i{
  width:30px;
  height: 60px;
  background: rgb(0,0,0);
  font-size: 22px;
  color: #fff;
  text-align: center;
  line-height: 60px;
  opacity: 0.5;
  font-style: normal;
  position: absolute;
  user-select: none;
 }
  #pages i.gt{
  right:0;
  top: 0;
  font-size: 21px;
 }
  #pages i:hover{
  opacity: 0.7;
 }
 </style>
</head>
<body>
 <div id="banner">
 <ul id="ul">
  <li><img src="images2/imgs (1).jpg" alt=""></li>
  <li><img src="images2/imgs (2).jpg" alt=""></li>
  <li><img src="images2/imgs (3).jpg" alt=""></li>
  <li><img src="images2/imgs (4).jpg" alt=""></li>
  <li><img src="images2/imgs (5).jpg" alt=""></li>
  <li><img src="images2/imgs (6).jpg" alt=""></li>
  <li><img src="images2/imgs (7).jpg" alt=""></li>
  <li><img src="images2/imgs (8).jpg" alt=""></li>
 </ul>
 <div id="dot">
  
 </div>
 <div id="pages">
  <i class="lt">^</i>
  <i class="gt">v</i>
 </div>
 </div>
<script src="tool.js"></script>
<script type="text/javascript">
 var lis = $("li", $("#ul")),
 liHeight = lis[0].offsetHeight,
 len = lis.length;
 c = 1; n = 2;
 var first = lis[0].cloneNode(true),
 last = lis[len - 1].cloneNode(true);
 $("#ul").insertBefore(last, lis[0]);
 $("#ul").appendChild(first);
 
 var html = "";
 for(var i = 0; i < len; i++)
 html += "<i></i>";
 len += 2;
 $("#dot").innerHTML = html;
 $("#ul").style.height = liHeight * len + "px";
 $("#ul").style.top = -liHeight + "px";
 
 var dots = $("i", $("#dot"));
 dots[0].className = "current";
 var tf = true;
 function move(){
 var _top = -n * liHeight;
 animate($("#ul"), {top : _top}, 300, function(){
  if(n >= len){
  n = 2;
  c = 1;
  css($("#ul"), "top", -liHeight + "px");
  }else if(n <= 1){
  c = len - 2;
  n = len - 1;
  css($("#ul"), "top", c * -liHeight + "px");
  }
 });
 var dotIndex = n - 1;
 if(dotIndex === len - 2)
  dotIndex = 0;
 else if(dotIndex === -1)
  dotIndex = len -3;
 for(let i =0; i<dots.length; i ++)
  dots[i].className = "";
 dots[dotIndex].className = "current";
 c = n;
 n++;
 }
 var timer = setInterval(move, 3000);
 $("#banner").onmouseover = function(){
 clearInterval(timer);
 }
 $("#banner").onmouseout = function(){
 timer = setInterval(move, 3000);
 }
 
 on($("#dot"), "mouseover", function(e){
 e = e || event;
 var src = e.target || e.srcElement;
 if(src.nodeName === "I"){
  var index = Array.from($("i", this)).indexOf(src);
  n = index + 1;
  move();
 }
 })
 var timeout;
 on($("#pages"), "click",function(e){
 clearTimeout(timeout);
 if(tf){
  tf = false;
  e = e || event;
  var src = e.target || e.srcElement;
  if(src.className === "gt"){
  n = c - 1;
  move();
  }else if(src.className === "lt"){
  move();
  }
 }
 timeout = setTimeout(function(){
  tf = true;
 },400)
 })
</script>
</body>
</html>

更多关于轮播图效果的专题,请点击下方链接查看学习

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

Javascript 相关文章推荐
Javascript UrlDecode函数代码
Jan 09 Javascript
js单例模式的两种方案
Oct 22 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
Mar 28 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
Jun 12 Javascript
js输出数据精确到小数点后n位代码
Jul 02 Javascript
jQuery表单元素选择器代码实例
Feb 06 Javascript
canvas 绘制圆形时钟
Feb 22 Javascript
基于JS实现网页中的选项卡(两种方法)
Jun 16 Javascript
基于Vue.js 2.0实现百度搜索框效果
Dec 28 Javascript
使用Node.js实现ORM的一种思路详解(图文)
Oct 24 Javascript
微信小程序实现类似微信点击语音播放效果
Mar 30 Javascript
微信小程序保持session会话的方法
Mar 20 Javascript
Vue实现开心消消乐游戏算法
Oct 22 #Javascript
p5.js码绘“跳动的小正方形”的实现代码
Oct 22 #Javascript
微信小程序绑定手机号获取验证码功能
Oct 22 #Javascript
微信小程序开发之转发分享功能
Oct 22 #Javascript
微信小程序转发事件实现解析
Oct 22 #Javascript
小程序点击图片实现png转jpg
Oct 22 #Javascript
Node.js 实现抢票小工具 &amp; 短信通知提醒功能
Oct 22 #Javascript
You might like
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
javascript编程起步(第七课)
2007/02/27 Javascript
jscript之List Excel Color Values
2007/06/13 Javascript
js文件包含的几种方式介绍
2014/09/28 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
React组件中的this的具体使用
2018/02/28 Javascript
利用npm 安装删除模块的方法
2018/05/15 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
Python实现的双色球生成功能示例
2017/12/18 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
对于Python深浅拷贝的理解
2019/07/29 Python
Python 处理文件的几种方式
2019/08/23 Python
pymysql模块的操作实例
2019/12/17 Python
python读取ini配置文件过程示范
2019/12/23 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
python中操作文件的模块的方法总结
2021/02/04 Python
Gap工厂店:Gap Factory
2017/11/02 全球购物
2019年Java面试必问之经典试题
2012/09/12 面试题
经济信息系毕业生自荐信范文
2014/03/15 职场文书
2014年团支部工作总结
2014/11/17 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
服务明星事迹材料
2014/12/29 职场文书
安装工程师岗位职责
2015/02/13 职场文书
实习班主任自我评价
2015/03/11 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
千万级用户系统SQL调优实战分享
2022/03/03 MySQL