完美的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 相关文章推荐
jquery实现表格隔行换色效果
Nov 19 Javascript
JS留言功能的简单实现案例(推荐)
Jun 23 Javascript
基于jQuery实现表格的查看修改删除
Aug 01 Javascript
AngularJS 作用域详解及示例代码
Aug 17 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
Oct 11 Javascript
深入探究angular2 UI组件之primeNG用法
Jul 26 Javascript
如何去除vue项目中的#及其ie9兼容性
Jan 11 Javascript
微信小程序使用component自定义toast弹窗效果
Nov 27 Javascript
微信小程序如何获取用户收货地址
Nov 27 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
Dec 10 jQuery
利用angular自动编译andriod APK的绕坑经历分享
Mar 08 Javascript
js图片无缝滚动插件使用详解
May 26 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的日期处理函数及uchome的function_coomon中日期处理函数的研究
2011/01/12 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
php实现修改新闻时删除图片的方法
2015/05/12 PHP
php原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
Stop SQL Server
2007/06/21 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
JS基于面向对象实现的拖拽功能示例
2016/12/20 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
基于Vue2x的图片预览插件的示例代码
2018/05/14 Javascript
Vue+webpack实现懒加载过程解析
2020/02/17 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
详解在Python和IPython中使用Docker
2015/04/28 Python
Python中用post、get方式提交数据的方法示例
2017/09/22 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
TensorFlow如何实现反向传播
2018/02/06 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
html5菜单折纸效果
2014/04/22 HTML / CSS
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
高职助产应届生自荐信
2013/09/24 职场文书
师德师风承诺书
2014/05/23 职场文书
总经理任命书范本
2014/06/05 职场文书
人身意外保险授权委托书
2014/10/01 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL
javascript canvas实现雨滴效果
2021/06/09 Javascript