js实现图片轮播效果


Posted in Javascript onDecember 19, 2015

本文实例讲解了js实现图片轮播效果代码,分享给大家供大家参考,具体内容如下

运行代码如下

js实现图片轮播效果

具体代码如下

插件是基于jQuery写的,主要实现的功能:自动播放、鼠标悬停、左右箭头控制+禁止点击

CSS样式:

<style>
  .cooperation-box {
    position: relative;
    height: 91px;
    border-bottom: 1px solid #E0DED9;
    overflow: hidden;
  }
  .cooperation {
    position: relative;
    left: 0;
    height: 50px;
    padding: 20px 0;
  }
  .cooperation li {
    float: left;
    width: 205px;
    text-align: center;
  }
  .cooperation li a {
    display: block;
  }
  .cooperation li img {
    height: 100%;
  }
  .cooperation-box>a {
    display: block;
    position: absolute;
    top: 0;
    z-index: 9;
    width: 22px;
    height: 100%;
    background: #f5f5f5;
    font-family: '宋体';
    font-size: 18px;
    color: #aaa;
    font-weight: bold;
    text-align: center;
    line-height: 91px;
  }
  .cooperation-box>a:hover {
    background: #e5e5e5;
  }
  .cooperation-box .prev {
    left: 0;
    border-right: 1px solid #E0DED9;
  }
  .cooperation-box .next {
    right: 0;
    border-left: 1px solid #E0DED9;
  }
  .cooperation-box .prev.disabled,
  .cooperation-box .next.disabled {
    background: #fbfbfb;
    color: #ddd;
  }
  .cooperation-box .prev.disabled:hover,
  .cooperation-box .next.disabled:hover {
    background: #fbfbfb;
  }
</style>

HTML布局( a标签最好加个title属性 ):

<div class="cooperation-box">
  <a class="prev" href="javascript:;"><</a>
  <a class="next" href="javascript:;">></a>
  <ul class="cooperation">
    <li><a href="javascript:;" target="_blank"><img src="images/img-demo3.jpg" alt=""></a></li>
    <li><a href="javascript:;" target="_blank"><img src="images/img-demo3.jpg" alt=""></a></li>
    <li><a href="javascript:;" target="_blank"><img src="images/img-demo3.jpg" alt=""></a></li>
    <li><a href="javascript:;" target="_blank"><img src="images/img-demo3.jpg" alt=""></a></li>
    <li><a href="javascript:;" target="_blank"><img src="images/img-demo3.jpg" alt=""></a></li>
    <li><a href="javascript:;" target="_blank"><img src="images/img-demo3.jpg" alt=""></a></li>
    <li><a href="javascript:;" target="_blank"><img src="images/img-demo3.jpg" alt=""></a></li>
    <li><a href="javascript:;" target="_blank"><img src="images/img-demo3.jpg" alt=""></a></li>
  </ul>
</div>

JS脚本插件:

<script>
  $.extend({
    /*
     图片轮播效果
     效果:
     1、自动滚动
     2、鼠标悬停
     3、左右控制+禁止点击
     调用:$.scroll({box: '父容器', scrollbox: 'ul', time: 1500});
     */
    scroll: function(options) {
      // 默认配置
      var defaults = {
        box: '.cooperation-box', // 父容器
         scrollbox: '.cooperation', // ul容器
        time: 1500 // 切换时间
      };

      // 扩展配置
      var conf = $.extend({}, defaults, options);

      // 获取li的个数
      var liSize = $(conf.box).find('li').size();

      // 获取li的宽度
      var liWidth = $(conf.box).find('li:first').width();

      // 定义ul的宽度 
      $(conf.scrollbox).width(liWidth*liSize);

      // 右箭头初始化(不可点)
      $(conf.box).find('.next').addClass('disabled');

      // 定义一个全局变量index索引变量
      var index = 0;

      // 切换函数
      function switchFunc() {
        index++;
        if(index > liSize-5) { // 必须有5个显示在上面
          index=liSize-5;

          // 把滚动过的添加到后面,初始left值为0 index值为0
          var scrolledLi = $(conf.box).find('li:lt('+index+')');
          $(conf.scrollbox).append(scrolledLi);
          $(conf.scrollbox).css('left', 0);
          index = 0;
        }
        $(conf.scrollbox).stop(true, true).animate(
            {'left': -liWidth*index},
            500,
            function() {
              $(conf.box).find('.next').removeClass('disabled');
            }
        );
      }

      // 自动播放
      var autoPlay = setInterval(function() {switchFunc();}, conf.time);

      // 鼠标浮上暂停
      $(conf.box).mouseover(function() {
        clearInterval(autoPlay);
      });

      // 鼠标离开继续
      $(conf.box).mouseout(function() {
        autoPlay = setInterval(function() {switchFunc();}, conf.time);
      });

      // 点击左箭头
      $(conf.box).find('.prev').click(function() {
        index++;
        if(index >= liSize-5) {
          index=liSize-5;
          $(this).addClass('disabled');
        }
        $(conf.scrollbox).stop(true, true).animate(
            {'left': -liWidth*index},
            500,
            function() {
              $(conf.box).find('.next').removeClass('disabled');
            }
        );
      });

      // 点击右箭头
      $(conf.box).find('.next').click(function() {
        index--;
        if(index <= 0) {
          index = 0;
          $(this).addClass('disabled');
        }
        $(conf.scrollbox).stop(true, true).animate(
            {'left': -liWidth*index},
            500,
            function() {
              $(conf.box).find('.prev').removeClass('disabled');
            }
        );
      });
    }
  });
</script>

页面调用:

<script>
  $(function() {
    $.scroll({time: 1500});
  });
</script>

希望本文所述对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript中的Screen屏幕对象
Jan 16 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
Apr 16 Javascript
JQuery伸缩导航练习示例
Nov 13 Javascript
JQuery工具函数汇总
Jun 15 Javascript
学习AngularJs:Directive指令用法(完整版)
Apr 26 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
Jun 03 Javascript
jQuery网页定位导航特效实现方法
Dec 19 Javascript
H5上传本地图片并预览功能
May 08 Javascript
mac上配置Android环境变量的方法
Jul 08 Javascript
vue中如何实现pdf文件预览的方法
Jul 12 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
Aug 06 Javascript
监听element-ui table滚动事件的方法
Mar 26 Javascript
js实现图片上传并正常显示
Dec 19 #Javascript
thinkphp实现无限分类(使用递归)
Dec 19 #Javascript
15个常用的jquery代码片段
Dec 19 #Javascript
js实现滚动条滚动到页面底部继续加载
Dec 19 #Javascript
jQuery对html元素的取值与赋值实例详解
Dec 18 #Javascript
jQuery打字效果实现方法(附demo源码下载)
Dec 18 #Javascript
jQuery中trigger()与bind()用法分析
Dec 18 #Javascript
You might like
PHP实现获取图片颜色值的方法
2014/07/11 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
2016/08/02 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
ptyhon实现sitemap生成示例
2014/03/30 Python
Python使用defaultdict读取文件各列的方法
2017/05/11 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
python实现KNN分类算法
2019/10/16 Python
python实现批量文件重命名
2019/10/31 Python
Python模块 _winreg操作注册表
2020/02/05 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
装修致歉信
2014/01/15 职场文书
《要下雨了》教学反思
2014/02/17 职场文书
小学节能减排倡议书
2014/05/15 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
小学优秀学生评语
2014/12/29 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS
Python anaconda安装库命令详解
2021/10/16 Python
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS