完美的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 相关文章推荐
让mayfish支持mysqli数据库驱动的实现方法
May 22 Javascript
通过DOM脚本去设置样式信息
Sep 19 Javascript
javascript中的startWith和endWith的几种实现方法
May 07 Javascript
javascript正则匹配汉字、数字、字母、下划线
Apr 10 Javascript
iframe中子父类窗口调用JS的方法及注意事项
Aug 25 Javascript
再次谈论Javascript中的this
Jun 23 Javascript
JS交互点击WKWebView中的图片实现预览效果
Jan 05 Javascript
微信小程序radio组件使用详解
Jan 31 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
Sep 21 Javascript
webpack proxy 使用(代理的使用)
Jan 10 Javascript
JS中的const命令你真懂它吗
Mar 08 Javascript
JavaScript如何实现图片处理与合成
May 29 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实现专业获取网站SEO信息类实例
2015/04/02 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
JavaScript设计模式之享元模式实例详解
2019/01/17 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
vue获取data数据改变前后的值方法
2019/11/07 Javascript
js如何验证密码强度
2020/03/18 Javascript
Python语言的变量认识及操作方法
2018/02/11 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
python定位xpath 节点位置的方法
2019/08/27 Python
python tkinter组件使用详解
2019/09/16 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
python编写俄罗斯方块
2020/03/13 Python
python实现扫雷小游戏
2020/04/24 Python
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
实习期自我鉴定
2013/10/11 职场文书
土木工程毕业生自荐信
2013/11/12 职场文书
工程造价与管理专业应届生求职信
2013/11/23 职场文书
大学生职业生涯规划书
2014/03/14 职场文书
2014年度思想工作总结
2014/11/27 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python