完美的js图片轮换效果


Posted in Javascript onFebruary 05, 2017

本文实例为大家分享了js轮播图焦点的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>轮播图焦点</title>
  <meta content="还是有地点小瑕疵,1左转变4,4右转变1的时候,图片切换有空白,换下动画模式应该可以?">
  <style>
    *{
      padding: 0;
      margin: 0;
    }
    ul{
      list-style: none;
    }
    .scroll{
      width: 300px;
      height: 200px;
      border: 1px solid red;
      margin: 100px auto;
      position: relative;
      overflow: hidden;
    }
    .scroll ul.imgUl{
      width: 400%;
      position: absolute;
      top: 0;
      left: 0;
    }
    .scroll ul.imgUl li{
      float: left;
    }
    .scroll .imgUl img{
      vertical-align: middle; /* 消除图片间3px的间距 */
    }
    .scroll ul.focus{
      position: absolute;
      left: 50%;
      bottom: 10px;
      margin-left: -80px;
    }
    .scroll ul.focus li{
      width: 20px;
      height: 20px;
      padding: 5px;
      text-align: center;
      margin-right: 10px;
      border: 2px solid yellow;
      float: left;
      color: red;
      font-weight: 700;
      background-color: #333;
      color: white;
    }
    .scroll ul.focus li.current{
      background-color: deeppink;
    }
    .scroll .arrow{
      width: 100%;
      position: absolute;
      top: 50%;
      left: 0;
      margin-top: -20px;
      display: none;
    }
    .scroll .arrow div{
      width: 40px;
      height: 40px;
      font: 700 18px/40px "宋体";
      text-align: center;
      background: rgba(0,0,0,.3);
      color: #fff;
      cursor: pointer;
    }
    .scroll .arrow div.left{
      float: left;
    }
    .scroll .arrow div.right{
      float: right;
    }
  </style>
  <script>
    window.onload = function(){
      function $(id){ return document.getElementById(id);}
      var scrollDiv = $('scrollDiv');
      var imgul = $('images');
      var focusUl = $('focuses');
      var imgLis = imgul.children;
      var leader = 0, target = 0;
      var curIndex = 0;//记录当前图片的序号
      var leftArrow = $('leftArrow');
      var rightArrow = $('rightArrow');
      //可自动生成和图片对应的序号
      /*for(var i=0; i< imgLis.length; i++){
        var newLi = document.createElement('li');
        newLi.innerHTML=i+1;
        focusUl.appendChild(newLi);
      }*/
      var focusLis = focusUl.children;
      for(var i=0; i<focusLis.length; i++){
        focusLis[i].index = i;
        focusLis[i].onmouseover = function(){
          curIndex = this.index;
          switchFocus(curIndex);
          target = -this.index * 300;
        }
      }
      scrollDiv.onmouseover = function(){
        $('arrowDiv').style.display="block";
        clearInterval(timer);
      }
      scrollDiv.onmouseout = function(){
        $('arrowDiv').style.display="none";
        timer = setInterval(autoPlay,3000);
      }
      leftArrow.onclick = function(){
        target +=300;
        curIndex = curIndex==0 ? focusLis.length-1 : curIndex-1;
        switchFocus(curIndex);
      }
      rightArrow.onclick = function(){
        target -=300;
        curIndex = (curIndex+1) % focusLis.length;
        switchFocus(curIndex);
      }
      //缓动效果
      setInterval(function(){
        if(target > 0){
          target = -900;
          leader = -1000;
        }else if(target < -900){
          target = 0;
          leader = 100;
        }

        leader = leader + (target - leader) / 10;
        imgul.style.left = leader +"px";

      } ,10);

      switchFocus(0);
      //每隔3s左移图片
      var timer = null;
      timer = setInterval(autoPlay,3000);
      function autoPlay(){
        target -= 300;
        curIndex = (curIndex+1) % focusLis.length;
        switchFocus(curIndex);
      }
      //转换样式
      function switchFocus(curIndex){
        for(var j=0; j<focusLis.length;j++){
            focusLis[j].className="";
          }
        focusLis[curIndex].className="current";
      }

    }
  </script>
</head>
<body>
  <div class="scroll" id="scrollDiv">
    <ul class="imgUl" id="images">
      <li><img src="images/01.jpg" alt=""></li>
      <li><img src="images/02.jpg" alt=""></li>
      <li><img src="images/03.jpg" alt=""></li>
      <li><img src="images/04.jpg" alt=""></li>
    </ul>
    <ul class="focus" id="focuses">
      <li>1</li>
      <li>2</li>
      <li>3</li>
      <li>4</li>
    </ul>
    <div class="arrow" id="arrowDiv">
      <div class="left" id="leftArrow"><</div>
      <div class="right" id="rightArrow">></div>
    </div>
  </div>
</body>
</html>

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

Javascript 相关文章推荐
网站被黑的假象--ARP欺骗之页面中加入一段js
May 16 Javascript
复制js对象方法(详解)
Jul 08 Javascript
offsetHeight在OnLoad中获取为0的现象
Jul 22 Javascript
JavaScript中连接操作Oracle数据库实例
Apr 02 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
Feb 16 Javascript
jQuery实现的文字hover颜色渐变效果实例
Feb 20 Javascript
jQuery绑定事件-多种实现方式总结
May 09 Javascript
vue.js利用Object.defineProperty实现双向绑定
Mar 09 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
Nov 27 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
Oct 18 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
Nov 07 Javascript
Vue 禁用浏览器的前进后退操作
Sep 04 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
Feb 05 #Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
Feb 05 #Javascript
Vue.js学习示例分享
Feb 05 #Javascript
JavaScript定时器制作弹窗小广告
Feb 05 #Javascript
JavaScript制作简易计算器(不用eval)
Feb 05 #Javascript
flexslider.js实现移动端轮播
Feb 05 #Javascript
简单实现js悬浮导航效果
Feb 05 #Javascript
You might like
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
PHP实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
laravel框架分组控制器和分组路由实现方法示例
2020/01/25 PHP
js计数器代码
2006/11/04 Javascript
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
JavaScript 注册事件代码
2011/01/27 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
javascript常见操作汇总
2014/09/03 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
python简单文本处理的方法
2015/07/10 Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
2018/05/11 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
python中元组的用法整理
2020/06/15 Python
Python中Yield的基本用法
2020/10/18 Python
蛋白质世界:Protein World
2017/11/23 全球购物
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
国外软件测试工程师面试题
2016/12/09 面试题
优秀团员事迹材料1000字
2014/08/20 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
酒店辞职书范文
2015/02/26 职场文书
毕业生个人自荐书
2015/03/05 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python
比较几种Redis集群方案
2021/06/21 Redis