全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

完美实现js焦点轮播效果(二)(图片可滚动)

本文在前一篇js焦点轮播效果的基础上,使用函数递归实现图片滑动切换,采用辅助图片实现图片无限滚动等技巧,具体内容如下

假如前后不加一张图片的话,图片顺序为[1,2,3,4,5],当你点到第 5 张图时,再点“下一张”(就是要回到第 1 张图那里),这时候,你想象下那个画面,会一瞬间“刷刷刷”地闪过中间那几张图片才能到第 1 张图那里,这样,太难看了吧。

为了解决这个问题,所以要在第 5 张那里加多一张 1 图,图片顺序为 [1,2,3,4,5,1]。当你在第 5 张图点下一张时,图片滚动顺序是这样的:5 ----> (1) ----> 1,(注:中间的那个 1 是指后面多加的 1 图),一旦到了那个“多加的 1 图”,轮播就会瞬间回到 前面的 1 图那里。

因为都是“1 图”,所以视觉上不会有那个一次“刷刷刷”闪过好几张图片的效果。

效果如图:

实现代码:

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
  <style type="text/css">
    *{
      margin: 0;
      padding: 0;
      list-style: none;
      text-decoration: none;
    }
    .wrap{
      width: 490px;
      height: 170px;
      margin: 100px auto;
      border: 1px solid #000000;
      position: relative;
      overflow: hidden;
    }
    #pic{
      width: 3430px;
      position: absolute;
    }
    #pic li{
      float: left;
      height: 170px;
    }
    #list{
      position: absolute;
      bottom: 10px;
      left:150px ;
    }
    #list li{
      float: left;
      width: 15px;
      height: 15px;
      background: #fff;
      margin: 0 10px;
      border-radius: 50%;
      cursor: pointer;
    }
    #list .on{
      background: #e27a00;
    }
    .Prev{
      top: 30px;
      left: 0;
    }
    .Next{
      top: 30px;
      right: 0;
    }
    .Prev,.Next{
      position: absolute;
      font-size: 80px;
      font-weight: bold;
      color:#fff ;
      -webkit-transition: all 0.35s ease-in-out
    }
    .Next:hover,
    .Prev:hover{
      background: #ccc;
      background: rgba(204, 204, 204, 0.4);
    }

  </style>
  <script type="text/javascript">
    window.onload=function(){
      var wrap=document.getElementById('wrap');
      var pic=document.getElementById('pic');
      var Li=document.getElementById('list').getElementsByTagName('li');
      var prev=document.getElementById('Prev');
      var next=document.getElementById('Next');
      var animated=false;
      var index=0;
      var timer=null;
      next.onclick=function(){
        if(animated){//如果图片正在滚动时要返回,否则index会变化
          return;
        }
        else{
          index++;
          if(index>=Li.length){
            index=0;
          }
        }

        showlist();
        if(animated == false){//if(!animated)
          animate(-490);
        }
      }
      prev.onclick=function(){
        if(animated){
          return;
        }
        else{
          index--;
          if(index<=0){
            index=Li.length-1;
          }
        }

        showlist();
        if(!animated){//判断其是否滚动完
          animate(490);
        }
      }
      for(var i=0;i<Li.length;i++){
        Li[i].num=i;
        Li[i].onclick=function(){
          if(this.className=="on"){
            return;
          }
          var offset = -490*(this.num-index);
          if(!animated){
            animate(offset);
          }
          index=this.num;
          showlist();
        }
      }
      //图片变换
      function animate(offset){
        animated=true;
        var newLeft=parseInt(pic.style.left) + offset;
        var time=300//位移总时间
        var interval=10;//位移间隔时间
        var speed=offset/(time/interval);//每次位移量

        function go(){
          if((speed < 0 && parseInt(pic.style.left) > newLeft )|| (speed > 0 && parseInt(pic.style.left) < newLeft)){
            pic.style.left = parseInt(pic.style.left) + speed + 'px';
            setTimeout(go,interval);
          }else{
            animated=false;
            pic.style.left= newLeft + 'px';
            if(newLeft > -490){
              pic.style.left = -2450 + 'px';
            }
            if(newLeft < -2450){
              pic.style.left = -490 + 'px';
            }
          }
        }
        go();
      }
      //圆点变换
      function showlist(){
        for(var i=0;i<Li.length;i++){
          Li[i].className="";
        }
        Li[index].className="on";
      }
      //自动播放
      function play(){
        timer=setInterval(function(){
          next.onclick();
        },2000);
      }
      function stop(){
        clearInterval(timer);
      }
      wrap.onmouseover=stop;
      wrap.onmouseout=play;
      play();
    }
  </script>
</head>
<body>
<div class="wrap" id="wrap">
  <ul id="pic" style="left: -490px;">
    <li><a href="#"><img src="/54111d7d00018ba604900170.jpg" alt="5"/></a></li>
    <li><a href="#"><img src="/54111cd9000174cd04900170.jpg" alt="1"/></a></li>
    <li><a href="#"><img src="/54111dac000118af04900170.jpg" alt="2"/></a></li>
    <li><a href="#"><img src="/54111d9c0001998204900170.jpg" alt="3"/></a></li>
    <li><a href="#"><img src="/54111d8a0001f41704900170.jpg" alt="4"/></a></li>
    <li><a href="#"><img src="/54111d7d00018ba604900170.jpg" alt="5"/></a></li>
    <li><a href="#"><img src="/54111cd9000174cd04900170.jpg" alt="1"/></a></li>
  </ul>
  <ul id="list">
    <li class="on"></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
  </ul>
  <a href="javascript:;" class="Prev" id="Prev">&lt;</a>
  <a href="javascript:;" class="Next" id="Next">&gt;</a>
</div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js焦点轮播效果  # js焦点轮播  # js图片轮播  # 原生Js 实现的简单无缝滚动轮播图的示例代码  # 如何使用JavaScript实现无缝滚动自动播放轮播图效果  # JavaScript基于面向对象实现的无缝滚动轮播示例  # javascript实现异形滚动轮播  # JS实现排行榜文字向上滚动轮播效果  # js轮播图无缝滚动效果  # JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴  # JS简单的轮播的图片滚动实例  # 原生js实现轮播图的示例代码  # JavaScript滚动轮播图制作原理详解  # 到第  # 加多  # 几张  # 递归  # 多加  # 下一张  # 都是  # 瞬间  # 就会  # 会有  # 看了  # 是这样  # 基础上  # 是指  # 你在  # 当你  # 要在  # 如图  # 要回  # 在前 


相关文章: 建站之星安装失败:服务器环境不兼容?  如何正确选择百度移动适配建站域名?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  建站之星后台管理如何实现高效配置?  ,柠檬视频怎样兑换vip?  Swift开发中switch语句值绑定模式  如何在香港免费服务器上快速搭建网站?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  C++如何使用std::optional?(处理可选值)  盐城做公司网站,江苏电子版退休证办理流程?  湖北网站制作公司有哪些,湖北清能集团官网?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  建站之星后台密码遗忘?如何快速找回?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  如何通过智能用户系统一键生成高效建站方案?  长沙企业网站制作哪家好,长沙水业集团官方网站?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  建站之家VIP精选网站模板与SEO优化教程整合指南  制作网站的软件免费下载,免费制作app哪个平台好?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  宝塔面板创建网站无法访问?如何快速排查修复?  微信小程序 input输入框控件详解及实例(多种示例)  北京网站制作公司哪家好一点,北京租房网站有哪些?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  C#如何使用XPathNavigator高效查询XML  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  广平建站公司哪家专业可靠?如何选择?  测试制作网站有哪些,测试性取向的权威测试或者网站?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  建站主机是否等同于虚拟主机?  如何在宝塔面板中创建新站点?  如何通过虚拟主机快速完成网站搭建?  微信推文制作网站有哪些,怎么做微信推文,急?  如何通过虚拟主机快速搭建个人网站?  表情包在线制作网站免费,表情包怎么弄?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  大连网站设计制作招聘信息,大连投诉网站有哪些?  制作宣传网站的软件,小红书可以宣传网站吗?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  建站之星如何取消后台验证码生成?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  如何在万网开始建站?分步指南解析  高端企业智能建站程序:SEO优化与响应式模板定制开发  贸易公司网站制作流程,出口贸易网站设计怎么做?  如何通过wdcp面板快速创建网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。