完美的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 相关文章推荐
XRegExp 0.2: Now With Named Capture
Nov 30 Javascript
常规表格多表头查询示例
Feb 21 Javascript
jQuery实现简单滚动动画效果
Apr 07 Javascript
javascript实现仿百度图片的瀑布流加载效果
Apr 20 Javascript
JS实现页面进入和返回定位到具体位置
Dec 08 Javascript
Angular中响应式表单的三种更新值方法详析
Aug 22 Javascript
angularjs实现天气预报功能
Jun 16 Javascript
解决vue打包之后静态资源图片失效的问题
Feb 21 Javascript
angular 实时监听input框value值的变化触发函数方法
Aug 31 Javascript
微信小程序如何连接Java后台
Aug 08 Javascript
vue实现简单瀑布流布局
May 28 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
Jul 27 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封装json通信接口详解及实例
2017/03/07 PHP
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
解析Json字符串的三种方法日常常用
2018/05/02 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
使用python实现扫描端口示例
2014/03/29 Python
Django返回json数据用法示例
2016/09/18 Python
详解Python中类的定义与使用
2017/04/11 Python
Python实现全排列的打印
2018/08/18 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
2020/09/04 Python
python实现猜拳游戏项目
2020/11/30 Python
python中K-means算法基础知识点
2021/01/25 Python
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
总务岗位职责
2013/11/19 职场文书
车祸赔偿收入证明
2014/01/09 职场文书
学生通报表扬范文
2015/05/04 职场文书
农贸批发市场管理制度
2015/08/07 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS
python保存图片的四个常用方法
2022/02/28 Python
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏