原生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也能包含文件
Oct 26 Javascript
javascript判断用户浏览器插件安装情况的代码
Jan 01 Javascript
javascript重复绑定事件造成的后果说明
Mar 02 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
Nov 08 Javascript
jquery 为a标签绑定click事件示例代码
Jun 23 Javascript
在AngularJS中使用AJAX的方法
Jun 17 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
Aug 21 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
Sep 14 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
Sep 27 Javascript
js仿3366小游戏选字游戏
Apr 14 Javascript
JQuery发送ajax请求时中文乱码问题解决
Nov 14 jQuery
Vue+Java+Base64实现条码解析的示例
Sep 23 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 join函数应用
2011/05/04 PHP
yii2 url重写并隐藏index.php方法
2018/12/10 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
TNC vs IO BO3 第二场2.13
2021/03/10 DOTA
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
Python简单进程锁代码实例
2015/04/27 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
python实现字符串中字符分类及个数统计
2018/09/28 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
2019/01/02 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
物业总经理助理岗位职责
2014/06/29 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
2014教师专业技术工作总结
2014/12/03 职场文书
2014年共青团工作总结
2014/12/10 职场文书
检讨书模板
2015/01/29 职场文书
横空出世观后感
2015/06/09 职场文书
2015最新民情日记范文
2015/06/26 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL