原生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 相关文章推荐
Prototype源码浅析 Enumerable部分之each方法
Jan 16 Javascript
这些年、我收集的JQuery代码小结
Aug 01 Javascript
jQuery中多个元素的Hover事件解决方案
Jun 12 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
Jan 14 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
May 03 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
Sep 05 Javascript
JS文件上传神器bootstrap fileinput详解
Jan 28 Javascript
使用InstantClick.js让页面提前加载200ms
Sep 12 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
Mar 05 Javascript
vue子传父关于.sync与$emit的实现
Nov 05 Javascript
javascript实现超好看的3D烟花特效
Jan 01 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
Oct 28 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
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
JavaScript 三种不同位置代码的写法
2009/10/25 Javascript
JavaScript中的集合及效率
2010/01/08 Javascript
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
jQuery 选择器(61种)整理总结
2016/09/26 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
Python读写配置文件的方法
2015/06/03 Python
Django REST framework 分页的实现代码
2019/06/19 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
Python实现数字的格式化输出
2020/08/01 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
智能旅行箱:Horizn Studios
2018/04/30 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
物业管理求职自荐信
2013/09/25 职场文书
社区国庆节活动方案
2014/02/05 职场文书
五水共治一句话承诺
2014/05/30 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
民事上诉状范文
2015/05/22 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android