原生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 相关文章推荐
使用js解决由border属性引起的div宽度问题
Nov 26 Javascript
JavaScript中最简洁的编码html字符串的方法
Oct 11 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
Nov 30 Javascript
js实现网页收藏功能
Dec 17 Javascript
JS实现图片剪裁并预览效果
Aug 12 Javascript
JS实现的系统调色板完整实例
Dec 21 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
Mar 06 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
Aug 04 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
Sep 27 Javascript
javascript function(函数类型)使用与注意事项小结
Jun 10 Javascript
微信小程序后台持续定位功能使用详解
Aug 23 Javascript
js面向对象编程OOP及函数式编程FP区别
Jul 07 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脚本的10个技巧(4)
2006/10/09 PHP
php flush类输出缓冲剖析
2008/10/19 PHP
php 应用程序安全防范技术研究
2009/09/25 PHP
PHP学习笔记之二
2011/01/17 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
php实现生成验证码实例分享
2016/04/10 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
浅谈javascript的数据类型检测
2010/07/10 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
jQuery实现给input绑定回车事件的方法
2017/02/09 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
简单谈谈React中的路由系统
2017/07/25 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
[07:54]DOTA2 MV《我的动力鞋》 ImbaTV 出品
2014/11/21 DOTA
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
会计专业毕业生自荐信范文
2013/12/20 职场文书
工作失误检讨书范文大全
2014/01/13 职场文书
租房安全协议书
2014/08/20 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书