jquery插件制作轮播图

<!--css源码-->

@charset "utf-8";
html, body { font-family:"微软雅黑"}
div.slideBox{ position:relative; width:670px; height:300px; overflow:hidden;}
div.slideBox ul.items{ position:absolute; float:left; background:none; list-style:none; padding:0px; margin:0px;}
div.slideBox ul.items li{ float:left; background:none; list-style:none; padding:0px; margin:0px;}
div.slideBox ul.items li a{ float:left; line-height:normal !important; padding:0px !important; border:none/*For IE.ADD.JENA.201206300844*/;}
div.slideBox ul.items li a img{ margin:0px !important; padding:0px !important; display:block; border:none/*For IE.ADD.JENA.201206300844*/;}
div.slideBox div.tips{ position:absolute; bottom:0px; width:100%; height:50px; background-color:#000; overflow:hidden;}
div.slideBox div.tips div.title{ position:absolute; left:0px; top:0px; height:100%;}
div.slideBox div.tips div.title a{ color:#FFF; font-size:18px; line-height:50px; margin-left:10px; text-decoration:none;}
div.slideBox div.tips div.title a:hover{ text-decoration:underline !important;}
div.slideBox div.tips div.nums{ position:absolute; right:0px; top:0px; height:100%;}
div.slideBox div.tips div.nums a{ display:inline-block; >float:left/*For IE.ADD.JENA.201206300844*/; width:20px; height:20px; background-color:#FFF; text-indent:-99999px; margin:15px 10px 0px 0px;}
div.slideBox div.tips div.nums a.active{ background-color:#093;}

<!--jquery插件代码-->

(function($) {
    $.fn.slideBox = function(options) {
        //默认参数
        var defaults = {
            direction : 'left',//left,top
            duration : 0.6,//unit:seconds
            easing : 'swing',//swing,linear
            delay : 3,//unit:seconds
            startIndex : 0,
            hideClickBar : true,
            clickBarRadius : 5,//unit:px
            hideBottomBar : false,
            width : null,
            height : null
        };
        var settings = $.extend(defaults, options || {});
        //计算相关数据
        var wrapper = $(this), ul = wrapper.children('ul.items'), lis = ul.find('li'), firstPic = lis.first().find('img');
        var li_num = lis.size(), li_height = 0, li_width = 0;
        //定义滚动顺序:ASC/DESC.ADD.JENA.201208081718
        var order_by = 'ASC';
        //初始化
        var init = function(){
            if(!wrapper.size()) return false;
            //手动设定值优先.ADD.JENA.201303141309
            li_height = settings.height ? settings.height : lis.first().height();
            li_width = settings.width ? settings.width : lis.first().width();
             
            wrapper.css({width: li_width+'px', height:li_height+'px'});
            lis.css({width: li_width+'px', height:li_height+'px'});//ADD.JENA.201207051027
             
            if (settings.direction == 'left') {
                ul.css('width', li_num * li_width + 'px');
            } else {
                ul.css('height', li_num * li_height + 'px');
            }           
            ul.find('li:eq('+settings.startIndex+')').addClass('active');
             
            if(!settings.hideBottomBar){//ADD.JENA.201208090859
                var tips = $('<div class="tips"></div>').css('opacity', 0.6).appendTo(wrapper);
                var title = $('<div class="title"></div>').html(function(){
                    var active = ul.find('li.active').find('a'), text = active.attr('title'), href = active.attr('href');
                    return $('<a>').attr('href', href).text(text);
                }).appendTo(tips);
                var nums = $('<div class="nums"></div>').hide().appendTo(tips);
                lis.each(function(i, n) {
                    var a = $(n).find('a'), text = a.attr('title'), href = a.attr('href'), css = '';
                    i == settings.startIndex && (css = 'active');
                    $('<a>').attr('href', href).text(text).addClass(css).css('borderRadius', settings.clickBarRadius+'px').mouseover(function(){
                        $(this).addClass('active').siblings().removeClass('active');
                        ul.find('li:eq('+$(this).index()+')').addClass('active').siblings().removeClass('active');
                        start();
                        stop();
                    }).appendTo(nums);
                });
             
                if(settings.hideClickBar){//ADD.JENA.201206300847
                    tips.hover(function(){
                        nums.animate({top: '0px'}, 'fast');
                    }, function(){
                        nums.animate({top: tips.height()+'px'}, 'fast');
                    });
                    nums.show().delay(2000).animate({top: tips.height()+'px'}, 'fast');
                }else{
                    nums.show();
                }
            }
             
            lis.size()>1 && start();
        }
        //开始轮播
        var start = function() {
            var active = ul.find('li.active'), active_a = active.find('a');
            var index = active.index();
            if(settings.direction == 'left'){
                offset = index * li_width * -1;
                param = {'left':offset + 'px' };
            }else{
                offset = index * li_height * -1;
                param = {'top':offset + 'px' };
            }
             
            wrapper.find('.nums').find('a:eq('+index+')').addClass('active').siblings().removeClass('active');
            wrapper.find('.title').find('a').attr('href', active_a.attr('href')).text(active_a.attr('title'));
 
            ul.stop().animate(param, settings.duration*1000, settings.easing, function() {
                active.removeClass('active');
                if(order_by=='ASC'){
                    if (active.next().size()){
                        active.next().addClass('active');
                    }else{
                        order_by = 'DESC';
                        active.prev().addClass('active');
                    }
                }else if(order_by=='DESC'){
                    if (active.prev().size()){
                        active.prev().addClass('active');
                    }else{
                        order_by = 'ASC';
                        active.next().addClass('active');
                    }
                }
            });
            wrapper.data('timeid', window.setTimeout(start, settings.delay*1000));
        };
        //停止轮播
        var stop = function() {
            window.clearTimeout(wrapper.data('timeid'));
        };
        //鼠标经过事件
        wrapper.hover(function(){
            stop();
        }, function(){
            wrapper.data('timeid', window.setTimeout(start, settings.delay*1000))
        }); 
        //首张图片加载完毕后执行初始化
        var imgLoader = new Image();
        imgLoader.onload = function(){
            imgLoader.onload = null;
            init();
        }
        imgLoader.src = firstPic.attr('src');
             
    };
})(jQuery);

<!--html代码-->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>

    <script type="text/javascript" src="js/jquery-1.11.1.js"></script>
    <script type="text/javascript" src="js/slideBox.js"></script>
    <link href="css/slideBox.css" rel="stylesheet"></style>
    <script type="text/javascript">
    //调用
    $(function(){
        //不带参数的
    /*    $("#demo1").slideBox();*/
        //带参数的
        $("#demo1").slideBox({
            direction:"top",//滚动的方向
            duration:0.8,//滚动的时间
            easing:"linear",//滚动的特效
            delay:3,//滚动延迟时间,单位是秒
            starIndex:2,//初始焦点的顺序
            hideBottomBar:false,//true是隐藏底部

        })
    })

    </script>
</head>
<body>
    <div id="demo1" class="slideBox">
        <ul class="items">
            <li><a href="#" title="11111"><img src="img/1.png"></a></li>
            <li><a href="#" title="22222"><img src="img/2.png"></a></li>
            <li><a href="#" title="33333"><img src="img/3.png"></a></li>
            <li><a href="#" title="44444"><img src="img/4.png"></a></li>
            <li><a href="#" title="55555"><img src="img/5.png"></a></li>
        </ul>
    </div>
    
</body>
</html>

转载于:https://my.oschina.net/kitty0107/blog/1632929

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值