>  기사  >  웹 프론트엔드  >  jQuery 플러그인 boxScroll은 이미지 캐러셀 효과를 구현합니다._jquery

jQuery 플러그인 boxScroll은 이미지 캐러셀 효과를 구현합니다._jquery

WBOY
WBOY원래의
2016-05-16 15:50:221370검색

박스스크롤

일반적인 이미지 캐러셀 효과를 간단하게 구현합니다. 디지털 목록이나 좌우 버튼으로 제어할 수 있습니다. 논리는 매우 간단합니다. 끝에 도달하면 다시 실행해야 합니다. 댓글을 살펴보세요.

코드는 다음과 같습니다.

HTML

<!doctype html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta content="" name="keywords" />
<meta content="" name="description" />
<meta name="author" content="codetker" />
<head>
<title>简易图片轮播插件</title>
<link href="style/reset.css" rel="stylesheet" type="text/css">
<link href="style/style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/jquery.codetker.boxScroll.js"></script>
</head>

<body>
  <div class="wrap">
    <div class="scrollBox">
      <div class="picOuterBox boxStyle">
        <div class="arrow arrowLeft">ToLeft</div>
        <div class="arrow arrowRight">ToRight</div>
        <ul class="picInnerBox boxStyle">
          <li>
            <a href="" title="">
              <img src="images/test.jpg" alt="">
            </a>
          </li>
          <li>
            <a href="" title="">
              <img src="images/test.jpg" alt="">
            </a>
          </li>
          <li>
            <a href="" title="">
              <img src="images/test.jpg" alt="">
            </a>
          </li>
          <li>
            <a href="" title="">
              <img src="images/test.jpg" alt="">
            </a>
          </li>
          <li>
            <a href="" title="">
              <img src="images/test.jpg" alt="">
            </a>
          </li>
        </ul>
      </div>
      <div class="picControl">
        <ul>
          <li class="liSelected">1</li>
          <li>2</li>
          <li>3</li>
          <li>4</li>
          <li>5</li>
        </ul>
      </div>
    </div>
  </div>
<script type="text/javascript">
  $(document).ready(function(){
    $(".scrollBox").boxScroll();
  });
</script>
</body>
</html>

CSS

@charset "utf-8";
/* CSS Document */
body{
  margin:0 0;
  padding:0 0;
  height:100%;
  width:100%;
}
.wrap{
  font-family:"微软雅黑","宋体", Times, "Times New Roman", serif;
  font-size:14px;
  margin:0 0;
  padding:0 0;
  height:100%;
  width:100%;
  overflow:hidden;
}
.boxStyle{/*照片大小*/
  width: 500px;
  height: 256px;
}
.scrollBox{
  position: relative;
  width: 500px;
  margin: 0 auto;
}
.picInnerBox{
  width: 10000px;/*足够大能放下即可,如果需要上下滚动,改height*/
  overflow: hidden;
}
.picInnerBox li{
  cursor: pointer;
  float: left;
}
.picOuterBox{
  overflow: hidden;

}
.arrow{
  position: absolute;
  top: 45%;
  height: 40px;
  cursor: pointer;
  z-index: 99;    
}
.arrow:hover{
  color: #fff;
}
.arrowLeft{
  float: left;
  left: 5%;
}
.arrowRight{
  float: right;
  right: 5%;
}
.picControl{
  overflow: auto;
  width: 100px;
  margin: 0 auto;
}
.picControl ul li{
  cursor: pointer;
  float: left;
  width: 20px;
  height: 20px;
  text-align: center;
}
.picControl ul li:hover{
  color:red;
}
.liSelected{
  color: red;
}

자바스크립트

/*
 * boxScroll 0.1
 * 兼容等常见浏览器
 */
 ;(function($,window,document,undefined){
   //定义构造函数
   var BoxObj=function(ele,opt){
     this.$element=ele; //最外层对象
     this.defaults={
       'style': 0 ,//滚动样式选择,默认为普通效果
       'speed': 1 ,//默认为1s
       'direction': 'left',//默认为向左边滚动
       'toLeft':$(ele).children('.picOuterBox').children('.arrowLeft'),//默认格式下重要位置
       'toRight':$(ele).children('.picOuterBox').children('.arrowRight'),
       'ControlUl':$(ele).children('.picControl').children('ul')
     },
   
     this.options=$.extend({},this.defaults,opt );
     //这里可以添加一些通用方法  
   }

   //给构造函数添加方法
   BoxObj.prototype={

       commonScroll:function(){
       //接收对象属性
       var boxWindow=$(this.$element).children('.picOuterBox').children('.picInnerBox');
       var speed=this.defaults.speed;
       var style=this.defaults.style;
       var direction=(this.defaults.direction=='left')&#63; 1 : -1;
       var toLeft=this.defaults.toLeft;
       var toRight=this.defaults.toRight;
       var Control=this.defaults.ControlUl;

       var boxWidth=$(boxWindow).children('li').width();
       var imgIndexMax=$(boxWindow).children('li').length;
       var imgIndex;
       function getImgIndex(){//判断当前图片的位置
         imgIndex=Math.round(parseInt($(boxWindow).css("margin-left"))*(-1)/boxWidth);
       }

       var timer;//必须在外面定义保证全局针对这一功能只有这一个计时器
       timer=setInterval(function(){
         boxScroll(imgIndex,direction);
       },5000);

       function rest(){
         clearInterval(timer);
        timer=setInterval(function(){
           boxScroll(imgIndex,direction);
         },5000);
       }

       //绑定点击按钮
       $(Control).delegate('li', 'click', function() {
         boxScroll($(this).index(),0);
         rest();
       });

       //绑定左右按钮
       $(toLeft).click(function() {
         boxScroll(0,-1);
         rest();
       });
       $(toRight).click(function() {
         boxScroll(0,1);
         rest();
       });

       function boxScroll(index,dir){
         if (!$(boxWindow).is(':animated')) {//当ul窗口没有在动时
           if(!dir){//响应ul li control操作
             //此时dir=0,则依靠传入的imgIndex
             imgIndex=index;
             //其它时候dir!=0,则依靠dir
           }else{//响应toLeft和toRight
             if(dir==1){//向右动
               getImgIndex();
               if (imgIndex==(imgIndexMax-1)) {
                 imgIndex=0;

               }else{
                 imgIndex+=1;
               }
             }else{//向左动
               getImgIndex();
               if (imgIndex==0) {
                 imgIndex=(imgIndexMax-1);
               }else{
                 imgIndex-=1;
               }
             }
           }
           $(Control).children('li').eq(imgIndex).addClass('liSelected');
           $(Control).children('li').eq(imgIndex).siblings().removeClass('liSelected');
           $(boxWindow).animate({
               "margin-left":imgIndex*boxWidth*(-1)+'px'
             }, 1000*speed);
         }
       }
     }
   }

   //在插件中使用windowObj对象的方法,0为vertical,1为horizontal
   $.fn.boxScroll=function(options){
     //创建实体
     var boxObj=new BoxObj(this,options);
     //用尾调的形式调用对象方法
     return boxObj.commonScroll();
   }
 })(jQuery,window,document);

자세한 다운로드는 https://github.com/codetker/myBoxScroll을 참조하세요.

위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.