jq自定义插件—$.fn的使用之(轮播图)兼容性都ok

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>图片轮播</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
<style type="text/css">
html,body{
padding: 0;
margin: 0;
}
ul,ul li{
list-style: none;
margin: 0;
padding: 0;
}
.box{
}

#banner{
position: relative;
height:auto;
overflow: hidden;
}
#banner ul{
position:absolute;
}
#banner ul li{
float: left;
}
#banner ul li img{
width: 100%;
height: 100%;
}
#banner #prevBtn,#banner #nextBtn{
height:80px;
width:30px;
background:rgba(0,0,0,0.5);
position:absolute;
top:50%;
margin-top:-40px;
font-size:30px;
line-height:80px;
text-align:center;
text-decoration:none;
color:white;
opacity: 0;
transition: opacity 0.8s ease;
}
#banner #prevBtn{
left:0;
}
#banner #nextBtn{
right:0;
}
#banner:hover #prevBtn,#banner:hover #nextBtn{
opacity: 1;
}
.dot{
height:10px;
width:10px;
border-radius:10px;
background:#2196f3;
display:inline-block;
margin:5px;
}
.on{
background: #009688;
}
</style>
</head>
<body>
<div class="box">
<div id="banner">
<ul id="banner-wrap">
<li>
<img src="http://www.zxhuan.com/wp-content/uploads/2016/02/img1.jpg">
</li>
<li>
<img src="http://www.zxhuan.com/wp-content/uploads/2016/02/img2.jpg">
</li>
<li>
<img src="http://www.zxhuan.com/wp-content/uploads/2016/02/img3.jpg">
</li>
<li>
<img src="http://www.zxhuan.com/wp-content/uploads/2016/02/img4.jpg">
</li>
<li>
<img src="http://www.zxhuan.com/wp-content/uploads/2016/02/img5.jpg">
</li>
</ul>
</div>
</div>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript">
(function($){   //形成闭包,将作用域进行限定
$.fn.bannerSwiper=function(option){
this.main={
boxWrap:null,//必填
nextBtn:false,//是否往下启动按钮
prevBtn:false,//是否往上启动按钮
autoPlay:false,//是否启动自动播放
times:3000,//自动轮播的时间间隔,
speed:600,//点击按钮是切换的速度
circle:false,//是否启动小圆点
circleAlign:"center",//小圆点的对其方式
circleClick:false//小圆点是否可以点击
};
var self=this;
this.time=null;
this.options=$.extend({},this.main,option);
self.flag=true;
// 插件入口
this.init=function(){
this.bulid();
}
this.bulid=function(){
var self=this;
var wrap=self.options.boxWrap;
self.num=1;
self.nowTime=+new Date();
self.width=$(window).width();
var firstImg=$(wrap).find('li').first();
var lastImg=$(wrap).find('li').last();
$(wrap).append(firstImg.clone());
$(wrap).prepend(lastImg.clone());
self.length=$(wrap).find('li').length;
$(wrap).width(self.width*self.length);
$(wrap).find('li').width(self.width)
$(wrap).parent().height(480);
$(wrap).parent().width(self.width);
$(wrap).css({'left':-self.width*self.num})
// 是否启动自动轮播
if(self.options.autoPlay){
self.plays();
}
// 是否启动按钮
if(self.options.nextBtn){
self.NextBtn();
}
// 是否启动按钮
if(self.options.prevBtn){
self.prevBtn();
}
// 是否启动小圆点
if(self.options.circle){
self.circle()
}
if(self.options.circleClick){
self.clickCircle();
}


}
// // 鼠标移入时
self.on('mouseenter',function(){
self.stops();
})
// 鼠标移出时
self.on('mouseleave',function(){
self.plays(1);
})


// 开始计时器,自动轮播
this.plays=function(){
var self=this;
// self.stops();
console.log('play')
this.time=setInterval(function(){
self.go(-self.width)
},self.options.times);
}
// 停止计时器
this.stops=function(){
console.log('stop');
clearInterval(self.time)
}
// 手动创建按钮元素
this.prevBtn=function(){
var self=this;
var ele=$("<a href='javascript:;' id='prevBtn'><</a>");
self.append(ele);
$('#prevBtn').bind("click",function(){
self.go(self.width);
})
}
// 手动创建按钮元素
this.NextBtn=function(){
var self=this;
var ele=$("<a href='javascript:;' id='nextBtn'>></a>");
self.append(ele)
$('#nextBtn').bind("click",function(){
self.go(-self.width);
})
}
// 手动创建小圆点
this.circle=function(){
var self=this;
var ele=$('<div id="circle-wrap"></div>');
for(var i=0;i<self.length-2;i++){
$('<a class="dot" href="javascript:;"></a>').appendTo(ele)
}
ele.css({
"position":"absolute",
'bottom':'0',
'right':'0',
'left':'0',
'height':'20px',
"padding":"0 10px",
'text-align':self.options.circleAlign
});
self.append(ele);
self.playCircle(this.num-1);

}
//小圆点指定当前项
this.playCircle=function(num){
$('#circle-wrap').find('.dot').eq(num).addClass('on').siblings().removeClass('on');
}
// 点击小圆点
this.clickCircle=function(){
var self=this;
$('#circle-wrap').find('.dot').on('click',function(){
self.num=$(this).index()+1;
self.circlePlay()
})
}
// 点击小圆点,图片切换
this.circlePlay=function(){
self.flag=true;
if(self.flag){
self.flag=false;
$(self.options.boxWrap).stop().animate({
'left':-self.num*self.width
},self.options.speed,function(){
self.flag=true;
});
}
self.playCircle(this.num-1);
}
// 点击按钮,进行轮播,以及自动轮播
this.go=function(offset){
var self=this;
if(self.flag){
self.flag=false;
if(offset<0){
self.num++;
if(self.num>self.length-2){
self.num=1;
}
}
if(offset>0){
self.num--;
if(self.num<=0){
self.num=self.length-2
}
}
if(Math.ceil($(self.options.boxWrap).position().left)<-(self.length-2)*self.width){
           $(self.options.boxWrap).css({
               'left':-self.width
           });
       }
       if(Math.ceil($(self.options.boxWrap).position().left)>-self.length){
           $(self.options.boxWrap).css({
               'left':-self.width*(self.length-2)
           })
       }
       self.playCircle(this.num-1);
$(self.options.boxWrap).stop().animate({
'left':$(self.options.boxWrap).position().left+offset
},self.options.speed,function(){
self.flag=true;
});
}
}
this.init();
}
})(jQuery);
$('#banner').bannerSwiper({
boxWrap:"#banner-wrap",
nextBtn:true,
prevBtn:true,
autoPlay:true,
circle:true,
circleClick:true
})
</script>
</body>

</html>




/*另外一种最常见的兼容ie7,8的banner*/

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script src="js/jquery.min.js"></script>
<style type="text/css">
#ad {
width: 1350px;
height: 370px;
overflow: hidden;
margin-left: -5px;
position: relative;
}


#ad ul {
list-style: none;
position: absolute;
margin-left: -40px;
}


#ad ul li {
float: left;
width: 1350px;
height: 370px;
position: relative;
}


.slideshortcut a {
color: #000000;
text-decoration: none;
background-color: #fff;
display: block;
position: absolute;
z-index: 500;
top: 150px;
width: 50px;
height: 50px;
border: 1px solid red;
font-size: 40px;
line-height: 40px;
text-align: center;
opacity: 0;
}


.slideshortcut a:hover {
color: #000000;
text-decoration: none;
}


.prev {
left: 150px;
}


.next {
left: 1200px;
}


.jiaodiandiv {
position: absolute;
z-index: 200;
top: 320px;
left: 42%
}


.jiaodiandiv ul {
list-style: none;
}


.jiaodiandiv ul li {
width: 30px;
height: 30px;
margin-left: 10px;
float: left;
border: 1px solid #B7B7B7;
background-color: #B7B7B7;
border-radius: 15px;
text-align: center;
}


#selectli {
background-color: #FF4400;
}


.jiaodiandiv li:hover {
cursor: pointer;
}


.jiaodiandiv span {
font-size: 20px;
line-height: 30px;
}
</style>
 </head>
 <body>
     <div id="ad"> 
       <ul> 
        <li> <a href="#" title="位置1"><img src="ad.png" /></a> </li> 
        <li> <a href="#" title="位置2"><img src="1.jpg" /></a> </li> 
        <li> <a href="#" title="位置3"><img src="2.jpg" /></a> </li> 
        <li> <a href="#" title="位置4"><img src="3.jpg" /></a> </li> 
       </ul> 
      </div> 
      <div class="slideshortcut"> 
       <a id="SlidePrev" class="prev">&lt;</a> 
       <a id="SlideNext" class="next">&gt;</a> 
      </div> 
      <div class="jiaodiandiv"> 
       <ul> 
        <li id="selectli"><span>1</span></li> 
        <li><span>2</span></li> 
        <li><span>3</span></li> 
        <li><span>4</span></li> 
       </ul> 
  </div>
  <script>
  $(document).ready(function() {
    /*轮播*/
    var index = 0;
   // var jdlis = $('.jiaodiandiv li');
    /*焦点li元素集合*/
    var timer;
    var liWidth = $('#ad').width();
    var len = $("#ad ul li").length;
    $("#ad ul").css("width", liWidth * (len));//左右滚动,即所有li元素都是在同一排向左浮动,所以这里需要计算出外围ul元素的宽度
    $("#SlidePrev").click(function() {//上一张按钮
        clearInterval(timer);
        index -= 1;
        if (index == -1) {
            index = len - 1;
        }
        showPic(index);
    });
    $("#SlideNext").click(function() { //下一张按钮
        clearInterval(timer);
        index += 1;
        if (index == len) {
            index = 0;
        }
        showPic(index);
    });
    //轮播
    $('#ad').hover(function() {
        clearInterval(timer);
        /*停止动画*/
        $('.slideshortcut a').show().css('opacity', '0.4');
    },
    function() {
        $('.slideshortcut a').hide();
        timer = setInterval(function() {
            showPic(index);
            index++;
            if (index == len) {
                index = 0;
            }
        },
        2000);
    }).trigger("mouseleave");
    /*显示index图片*/
    function showPic(index) {
        var nowLeft = -index * liWidth;
        jdlis.eq(index).css('backgroundColor', '#FF4400');
        jdlis.not(jdlis.eq(index)).css('backgroundColor', '#B7B7B7');
        $("#ad ul").stop(true, false).animate({
            "left": nowLeft
        },
        300);
    }
    $('.slideshortcut a').mouseover(function() {
        $('.slideshortcut a').show();
    });
    $('.prev').mouseover(function() {
        $(this).css({
            opacity: '0.95',
            cursor: 'pointer'
        });
    });
    $('.next').mouseover(function() {
        $(this).css({
            opacity: '0.95',
            cursor: 'pointer'
        });
    });
    /*点击焦点区的div显示对应图*/
    jdlis.click(function() {
        clearInterval(timer);
        index = jdlis.index(this);
        showPic(index);
    });
});
  </script>
 </body>
 </html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值