当前位置: 移动技术网 > IT编程>开发语言>JavaScript > jquery版轮播图效果和extend扩展

jquery版轮播图效果和extend扩展

2017年12月12日  | 移动技术网IT编程  | 我要评论

本文实例为大家分享了jquery版本轮播图及extend扩展的具体代码,供大家参考,具体内容如下

具体代码如下

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>document</title>
  <style>
    *{
      margin:0;
      padding:0;
      font-size:14px;
      -webkit-user-select:none;
    }
    ul,li{
      list-style:none;
    }
    img{
      display:block;
      border:none;
    }
    a{
      text-decoration: none;
    }
    .banner{
      position:relative;
      margin:10px auto;
      width:1000px;
      height:300px;
      overflow:hidden;
    }
    .bannerinner{
      width:100%;
      height:100%;
      background:url("../img/default.gif") no-repeat center center;
    }
    .bannerinner div{
      position:absolute;
      top:0;
      left:0;
      z-index:0;
      width:100%;
      height:100%;
      opacity: 0;
      filter:alpha(opacity=0);
    }
    .bannerinner div img{
      display:none;
      width:100%;
      height:100%;
    }
    .banner .bannertip{
      position:absolute;
      right:20px;
      bottom:20px;
      z-index:10;
      overflow:hidden;
    }
    .banner .bannertip li{
      float:left;
      margin-left:10px;
      width:18px;
      height:18px;
      background:lightblue;
      border-radius:50%;
      cursor:pointer;
    }
    .banner .bannertip li.bg{
      background:orange;
    }
    .banner a{
      display:none;
      position:absolute;
      top:50%;
      margin-top:-22.5px;
      z-index:10;
      width:30px;
      height:45px;
      opacity: 0.5;
      filter:alpha(opacity=50);
      background-image:url('../img/pre.png');

    }
    .banner a.bannerleft{
      left:20px;
      background-position:0 0;
    }
    .banner a.bannerright{
      right:20px;
      background-position:-50px 0;
    }
    .banner a:hover{
      opacity: 1;
      filter:alpha(opacity=100);
    }
  </style>
</head>
<body>
  <div class='banner' id='bannerfir'>
    <div class='bannerinner'>
      <div><img src="" alt="" trueimg='img/banner1.jpg'></div>
      <div><img src="" alt="" trueimg='img/banner2.jpg'></div>
      <div><img src="" alt="" trueimg='img/banner3.jpg'></div>
      <div><img src="" alt="" trueimg='img/banner4.jpg'></div>
    </div>
    <ul class='bannertip'>
      <li class='bg'></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
    <a href="javascript:;" rel="external nofollow" rel="external nofollow" class='bannerleft'></a>
    <a href="javascript:;" rel="external nofollow" rel="external nofollow" class='bannerright'></a>
  </div>

  <script>
    jquery.fn.extend({
      banner:mybanner
    })
    //通过jquery选择器或者筛选的方法获取到的jquery集合是不存在dom映射机制的,之前获取到的dom集合,之后再页面中html结构改变了,集合中的内容不会跟着自动发生变化(js获取的元素集合有dom映射的机制)
    function mybanner(selector,ajaxurl,interval){
      var $banner = $("#"+selector);
      var $bannerinner = $banner.children(".bannerinner"),$divlist = null,$imglist = null;
      var $bannertip = $banner.children(".bannertip"),$olis = null
      var $bannerleft = $banner.children(".bannerleft"),$bannerright = $banner.children(".bannerright")

      //1、ajax读取数据
      var jsondata = null;
      $.ajax({
        url:ajaxurl+"?_="+math.random(),
        type:'get',
        datatype::"json",
        async:false,//当前的请求是同步的
        success:function(data){
          jsondata = data;

        }
      })
      //2、实现数据的绑定
      function binddata(){
        var str = "",str2 = "";
        if(jsondata){
          //原生的jsondata使用$.each()
          $.each(jsondata,function(index,item){
            str+='<div><img src="" alt="" trueimg="'+item["img"]+'"></div>';
            index===0?str2+='<li class="bg"></li>':str2+='<li></li>'
          })

          $bannerinner.html(str);
          $bannertip.html(str2);
          $divlist = $bannerinner.children("div")
          $imglist = $bannerinner.find('img')
          $olis = $bannertip.children("li")
        }
      }
      //3、实现图片的延迟加载
      window.settimeout(lazyimg,500);
      function lazyimg(){
        //jquery元素集合 直接写$imglist.each()
        $imglist.each(function(index,item){
          var _this = this;
          var oimg = new image;
          oimg.src = $(this).attr("trueimg");//$(this)等价于$(item)
          oimg.onload = function(){
            $(_this).prop('src',this.src).css("display","block")//内置属性使用prop
          }
        })
        $divlist.eq(0).css("zindex",1).animate({opacity:1},300);
      }
      //封装一个轮播图切换的效果
      function changebanner(){
        var $curdiv = $divlist.eq(step);
        $curdiv.css("zindex",1).siblings().css("zindex",0);
        $curdiv.animate({opacity:1},300,function(){
          $(this).siblings().css("opacity",0)
        })
        $olis.eq(step).addclass("bg").siblings().removeclass('bg')
      }
      //4、实现自动轮播
      interval = interval || 3000;
      var step = 0,autotimer = null;
      autotimer = window.setinterval(automove,interval)
      function automove(){
        if(step === jsondata.length-1){
          step = -1;
        }
        step++;
        changebanner();
      }
      //5、控制左右按钮的显示隐藏和自动轮播的开始和暂停
      $banner.on('mouseover',function(){
        window.clearinterval(autotimer);
        $bannerleft.css("display","block")
        $bannerright.css("display","block")
      }).on('mouseout',function(){
        autotimer = window.setinterval(automove,interval);
        $bannerleft.css("display","none")
        $bannerright.css("display","none")

      })
      //6、实现焦点切换
      $olis.on('click',function(){
        step = $(this).index();
        changebanner();
      })

      //7、实现左右切换
      $bannerright.on('click',automove);
      $bannerleft.on('click',function(){
        if(step===0){
          step = jsondata.length;
        }
        step--;
        changebanner();
      });

    }


    //外部使用
    $().banner("bannerfir","json/banner.txt",1000)
  </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网