zoukankan      html  css  js  c++  java
  • jquery实现轮播插件

    这几天用jquery写了两个轮播的插件,功能很简单。第一次尝试写插件,有很多不足的地方,代码如下:

    注:图片链接请替换掉,配置信息必须加上图片width和height。

    <!DOCTYPE html>
    <html ng-app="myApp">
    <head lang="en">
        <meta charset="UTF-8">
        <link rel="stylesheet" href="css/bootstrap.min.css">
        <title>轮播动画</title>
        <style type="text/css">
            .marquee-wrap {
                overflow: hidden;
                margin: 0 auto;
                position: relative;
                top: 0;
                left: 0;
            }
    
            .indicator {
                list-style: none;
                position: absolute;
                right: 60px;
                bottom: 4px;
                z-index: 102;
            }
    
            .indicator li {
                float: left;
                width: 20px;
                height: 20px;
                border-radius: 50%;
                -webkit-border-radius: 50%;
                -moz-border-radius: 50%;
                background-color: #ffffff;
                text-align: center;
                margin: 2px;
            }
    
            .indicator li a {
                color: #333;
                text-decoration: none;
            }
    
            .indicator li.active {
                background-color: rgb(255, 157, 51);
            }
    
            .indicator li.active a {
                color: #ffffff;
            }
    
            .operator {
                width: 100%;
                padding: 0 16px;
                position: absolute;
                top: 40%;
                left: 0;
                z-index: 101;
            }
    
            .operator a {
                font-size: 26px;
                text-decoration: none;
                color: #ffffff;
                font-weight: 200;
            }
    
            .operator a:hover {
                opacity: 0.9;
            }
    
            .marquee {
                list-style: none;
                margin: 0;
                padding: 0;
                overflow: hidden;
                position: relative;
                top: 0;
                z-index: 99;
            }
    
            ul.marquee:after, ol.indicator:after, .operate:after {
                display: block;
                content: ".";
                visibility: hidden;
                height: 0;
                clear: both;
                *zoom: 1;
            }
    
            .marquee li {
                float: right;
            }
    
            .my-marquee-wrap {
                overflow: hidden;
                margin: 20px auto;
            }
    
            .my-marquee {
                position: relative;
                top: 0;
                left: 0;
                margin: 0;
                padding: 0;
            }
    
            .my-marquee li {
                display: block;
                position: absolute;
                top: 0;
                left: 0;
            }
    
    
        </style>
    </head>
    <body>
    
    <div class="marquee-wrap" id="marquee">
        <ol class="indicator">
            <li class="active"><a href="#">1</a></li>
            <li><a href="#">2</a></li>
            <li><a href="#">3</a></li>
            <li><a href="#">4</a></li>
            <li><a href="#">5</a></li>
            <li><a href="#">6</a></li>
        </ol>
        <ul class="marquee">
            <li>
                <a href="#" target="_blank">
                    <img src="images/banner2.jpg">
                </a>
            </li>
            <li>
                <a href="#" target="_blank">
                    <img src="images/banner5.jpg">
                </a>
            </li>
            <li>
                <a href="#" target="_blank">
                    <img src="images/banner9.jpg">
                </a>
            </li>
            <li>
                <a href="#" target="_blank">
                    <img src="images/banner10.jpg">
                </a>
            </li>
            <li>
                <a href="#" target="_blank">
                    <img src="images/banner11.jpg">
                </a>
            </li>
            <li>
                <a href="#" target="_blank">
                    <img src="images/banner12.jpg">
                </a>
            </li>
        </ul>
        <div class="operator">
            <a href="#" class="next pull-right"><span class="glyphicon glyphicon-chevron-right"></span></a>
            <a href="#" class="prev pull-left"><span class="glyphicon glyphicon-chevron-left"></span></a>
        </div>
    
    </div>
    
    <div class="my-marquee-wrap" id="my-marquee">
        <ul class="my-marquee">
            <li>
                <a href="#" target="_blank">
                    <img src="images/banner2.jpg">
                </a>
            </li>
            <li>
                <a href="#" target="_blank">
                    <img src="images/banner5.jpg">
                </a>
            </li>
            <li>
                <a href="#" target="_blank">
                    <img src="images/banner9.jpg">
                </a>
            </li>
            <li>
                <a href="#" target="_blank">
                    <img src="images/banner10.jpg">
                </a>
            </li>
            <li>
                <a href="#" target="_blank">
                    <img src="images/banner11.jpg">
                </a>
            </li>
            <li>
                <a href="#" target="_blank">
                    <img src="images/banner12.jpg">
                </a>
            </li>
        </ul>
    </div>
    
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script>
    
        (function ($) {
    
            $.fn.slide = function (options) {
    
                this.defaults={
                    slideDuration:2000,
                    animateDuration:4000
                };
    
                var settings= $.extend({},this.defaults,options);
    
                return this.each(function () {
    
                    var $marquee = $(this).children('.marquee');
                    var $indicator = $(this).children('.indicator');
                    var $operator = $(this).children('.operator');
    
                    if(typeof settings.width!='undefined' && typeof settings.height!='undefined'){
                        $(this).css({
                            settings.width,
                            height:settings.height
                        });
                        $marquee.css({
                            parseInt(settings.width)*3,
                            height:settings.height,
                            right:settings.width
                        });
    
                    }
    
                    var index= 0,interval="";
    
                    init();
    
                    function init(){
                        interval=window.setInterval(slide,settings.animateDuration);
                    }
    
                    function slide() {
    
                        $marquee.find('li').eq(0).animate({
                            opacity: 0,
                             0
                        }, settings.slideDuration, function () {
                            index = index + 1 > 5 ? 0 : index + 1;
    
                            $indicator.find('li').eq(index).addClass('active').siblings().removeClass('active');
                            $marquee.find('li').eq(0).css({opacity: 1,  settings.width}).appendTo($marquee);
                        });
                    }
    
                    $indicator.find('a').on('click', function (event) {
                        event.preventDefault();
                        clearInterval(interval);
                        var current = index;
                        index = $(this).text() - 1;
                        var temp = Math.abs(current - index);
                        if (current == index) {
                            return false;
                        }
                        else {
                            //修改循环队列
                            for (var i = 0; i < temp; i++) {
    
                                if (current < index) {
                                    $marquee.find('li').eq(0).css({opacity: 1,  settings.width}).appendTo($marquee);
                                }
                                else {
                                    $marquee.find('li').last().css({opacity: 1,  settings.width}).prependTo($marquee);
                                }
                            }
                        }
                        $indicator.find('li').eq(index).addClass('active').siblings().removeClass('active');
    
                        interval = window.setInterval(slide, settings.animateDuration);
                    });
    
                    $operator.find('.next').on('click', function (event) {
    
                        event.preventDefault();
                        clearInterval(interval);
                        $marquee.find('li').eq(0).animate({
                            opacity: 0,
                             0
                        }, 600, function () {
                            index = index + 1 > 5 ? 0 : index + 1;
    
                            $indicator.find('li').eq(index).addClass('active').siblings().removeClass('active');
                            $marquee.find('li').eq(0).css({opacity: 1,  settings.width}).appendTo($marquee);
    
                        });
                        interval = window.setInterval(slide, settings.animateDuration);
    
                    });
                    $operator.find('.prev').on('click', function (event) {
    
                        event.preventDefault();
                        clearInterval(interval);
                        $marquee.find('li').last().css({opacity: 0,  "0"}).prependTo($marquee);
    
                        $marquee.find('li').eq(0).animate({
                            opacity: 1,
                             settings.width
                        }, 600, function () {
                            index = index - 1 < 0 ? 5 : index - 1;
                            $indicator.find('li').eq(index).addClass('active').siblings().removeClass('active');
                        });
    
                        interval = window.setInterval(slide, settings.animateDuration);
    
                    });
    
                });
    
    
            };
    
        })(jQuery);
    
        (function($){
    
            $.fn.marquee=function(options){
    
                this.defaults={
                    slideDuration:1500,
                    animateDuration:1000
                };
    
                var settings= $.extend({},this.defaults,options);
    
                return this.each(function () {
    
                    var $marquee=$(this).children('.my-marquee');
                    var interval="";
    
                    if(typeof settings.width!='undefined' && typeof settings.height!='undefined'){
                        $(this).css({
                            settings.width,
                            height:settings.height
                        });
                    }
                    init();
    
                    function init(){
                        interval = window.setInterval(slide, settings.animateDuration);
                    }
    
                    function slide(){
                        $marquee.find('li').last().fadeOut(settings.slideDuration,function(){
                            $(this).show().prependTo($marquee);
                        })
                    }
    
                });
    
            };
        })(jQuery);
    
    
        $(function () {
    
            $('#marquee').slide({
                '1200px',
                height:'330px'
            });
    
            $('#my-marquee').marquee({
                '1200px',
                height:'330px'
            });
    
        });
    
    </script>
    </body>
    </html>
  • 相关阅读:
    spring bean-- autowired的正确用法
    @Autowired的使用:推荐对构造函数进行注释
    spring中bean的构造函数,Autowired(Value)注入与@PostConstruct调用顺序
    IconVault – 创建自定义图标字体的神器推荐
    Pure – 赞!轻量的、响应式的 CSS 模块集
    HTML Inspector – 帮助你编写高质量的 HTML 代码
    Tourist.js – 简单灵活的操作指南和导航插件
    分享!20套惊艳的扁平化设计素材免费下载
    Web 开发人员必备的随机 JSON 数据生成工具
    Sylius – 100% 免费和开源的电子商务解决方案
  • 原文地址:https://www.cnblogs.com/linxuehan/p/3799959.html
Copyright © 2011-2022 走看看