完美的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 相关文章推荐
javascript调试之DOM断点调试法使用技巧分享
Apr 15 Javascript
escape函数解决js中ajax传递中文出现乱码问题
Oct 30 Javascript
通过设置CSS中的position属性来固定层的位置
Dec 14 Javascript
JS实现的几个常用算法
Nov 12 Javascript
bootstrap vue.js实现tab效果
Feb 07 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
Jun 13 Javascript
Angular4开发解决跨域问题详解
Aug 28 Javascript
浅析java线程中断的办法
Jul 29 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
Jun 19 jQuery
详解Element-UI中上传的文件前端处理
Aug 07 Javascript
过滤器vue.filters的使用方法实现
Sep 18 Javascript
vue移动端写的拖拽功能示例代码
Sep 09 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从二维数组得到N层分类树的实现代码
2016/10/11 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
javascript 定义新对象方法
2010/02/20 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
2019/06/19 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
Python中统计函数运行耗时的方法
2015/05/05 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
python @classmethod 的使用场合详解
2019/08/23 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
PageFactory设计模式基于python实现
2020/04/14 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
iostream与iostream.h的区别
2015/01/16 面试题
诚信的演讲稿范文
2014/05/12 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
党风廉政建设调研报告
2015/01/01 职场文书
2016年父亲节寄语
2015/12/04 职场文书