原生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 form 验证函数 当前比较流行的错误提示
Jun 23 Javascript
js关于字符长度限制的问题示例探讨
Jan 24 Javascript
jquery-syntax动态语法着色示例代码
May 14 Javascript
js遍历json的key和value的实例
Jan 22 Javascript
JavaScript中数组Array方法详解
Feb 27 Javascript
JS 中LocalStorage和SessionStorage的使用
Aug 17 Javascript
vue购物车插件编写代码
Nov 27 Javascript
vue实现提示保存后退出的方法
Mar 15 Javascript
Vue 自定义动态组件实例详解
Mar 28 Javascript
vue.js做一个简单的编辑菜谱功能
May 08 Javascript
使用vue for时为什么要key【推荐】
Jul 11 Javascript
微信小程序防止多次点击跳转(函数节流)
Sep 19 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
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
php设计模式 Proxy (代理模式)
2011/06/26 PHP
PHP操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
Javascript 中的 &amp;&amp; 和 || 使用小结
2010/04/25 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
javascript使用activex控件的代码
2011/01/27 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
js如何打印object对象
2015/10/16 Javascript
Bootstrap精简教程
2015/11/27 Javascript
jQuery实现简单倒计时功能的方法
2016/07/04 Javascript
js利用appendChild对标签进行排序的实现方法
2016/10/16 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
微信小程序的部署方法步骤
2018/09/04 Javascript
如何安装控制器JavaScript生成插件详解
2018/10/21 Javascript
Vue中props的详解
2019/05/16 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
vue实现评价星星功能
2020/06/30 Javascript
js实现缓动动画
2020/11/25 Javascript
windows下ipython的安装与使用详解
2016/10/20 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
python实现微信小程序自动回复
2018/09/10 Python
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
求职自荐信范文格式
2013/11/29 职场文书
好邻里事迹材料
2014/01/16 职场文书
不假外出检讨书
2014/01/27 职场文书
普通大学毕业生自荐信范文
2014/02/23 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android