原生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学习基础笔记之DOM对象操作
Nov 03 Javascript
让元素在网页中可拖动示例代码
Aug 13 Javascript
Javascript实现Web颜色值转换
Feb 05 Javascript
jquery实现两边飘浮可关闭的对联广告
Nov 27 Javascript
JS获取多维数组中相同键的值实现方法示例
Jan 06 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
Mar 28 Javascript
小程序ios音频播放没声音问题的解决
Jul 11 Javascript
小程序图片长按识别功能的实现方法
Aug 30 Javascript
Vue对象赋值视图不更新问题及解决方法
Jun 03 Javascript
Vue 实现前端权限控制的示例代码
Jul 09 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
Feb 12 Javascript
vue-cropper插件实现图片截取上传组件封装
May 27 Vue.js
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 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
基于PHP array数组的教程详解
2013/06/05 PHP
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
PHP+shell实现多线程的方法
2015/07/01 PHP
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
Javascript var变量隐式声明方法
2009/10/19 Javascript
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
IE 当eval遇上function的处理
2011/08/09 Javascript
jquery中的on方法使用介绍
2013/12/29 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
js判断是否是手机页面
2017/03/17 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
纯js实现隔行变色效果
2017/11/29 Javascript
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
原生js实现3D轮播图
2020/03/21 Javascript
小程序实现投票进度条
2019/11/20 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
python对数组进行反转的方法
2015/05/20 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
2018/06/25 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
python config文件的读写操作示例
2019/09/27 Python
Python 必须了解的5种高级特征
2020/09/10 Python
HTML5 video视频字幕的使用和制作方法
2018/05/03 HTML / CSS
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
优秀员工评优方案
2014/06/13 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
信用卡工作证明范本
2015/06/19 职场文书
2015年环境监察工作总结
2015/07/23 职场文书
担保书范文
2019/07/09 职场文书