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({
                        width:settings.width,
                        height:settings.height
                    });
                    $marquee.css({
                        width: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,
                        width: 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, width: 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, width: settings.width}).appendTo($marquee);
                            }
                            else {
                                $marquee.find(‘li‘).last().css({opacity: 1, width: 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,
                        width: 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, width: 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, width: "0"}).prependTo($marquee);

                    $marquee.find(‘li‘).eq(0).animate({
                        opacity: 1,
                        width: 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({
                        width: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({
            width:‘1200px‘,
            height:‘330px‘
        });

        $(‘#my-marquee‘).marquee({
            width:‘1200px‘,
            height:‘330px‘
        });

    });

</script>
</body>
</html>

jquery实现轮播插件,布布扣,bubuko.com

时间: 2024-10-27 04:18:21

jquery实现轮播插件的相关文章

12款经典的白富美型—jquery图片轮播插件—前端开发必备

图片轮播是网站中的常用功能,用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插件能够帮助到你.Nivo Slider 首先推荐的这款插件号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本. 目前下载量已经突破 1,800,000 次!jQuery 独立版本的插件主要有如下特色: ?  16个独特的过渡效果?

Nivo Slider - 世界上最棒的 jQuery 图片轮播插件

Nivo Slider 号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本.目前下载量已经突破 1,800,000 次!jQuery 独立版本的插件主要有如下特色: ?  16个独特的过渡效果 ?  简洁和有效的标记 ?  加载参数设置 ?  内置方向和导航控制 ?  压缩版本大小只有12KB ?  支持链接图像 ?  支持 HTML 标题 ?  3套精美光滑的主题 ?  在MIT许可下免费使用 ?  支持响应式设计 插件下载     效果演示 您可能

基于jquery的轮播插件

html部分 <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>轮播</title> <style type="text/css"> *{ margin: 0; padding: 0; -moz-box-sizing: border-box; /*Firefox3.5+*/ -webkit-box-sizing: b

jquery图片轮播-插件

更新内容: 1. 页面结构和css样式必定类似下边放置 2. 点击左右按钮,实现左右滑动. 3. 这一般用于多个图片轮播使用,简化并优化代码. 若因不同需求,均可自行将插件scrollimgplus.js进行相应的改造. 使用方法就不详述了, 请参见源码及相关注释:查看Demo <!doctype html> <html> <head> <meta charset="utf-8"> <title>基本材料</title&

最简单的jQuery图片轮播插件

//图片自己找哈 <!doctype html> <html ng-app><head><meta content="charset=utf-8"><meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">    <style typ

Javascript和jQuery WordPress 图片轮播插件, 内容滚动插件,前后切换幻灯片形式显示

用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插件能够帮助到你.Nivo Slider首先推荐的这款插件号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本.目前下载量已经突破 1,800,000 次!jQuery 独立版本的插件主要有如下特色:? 16个独特的过渡效果? 简洁和有效的标记? 加载参数设置?

JQuery插件之图片轮播插件–slideBox

来源:http://www.ido321.com/852.html 今天偶然发现了一个比較好用的图片轮播插件-slideBox 先看看效果:http://slidebox.sinaapp.com/ 代码例如以下 1: <!doctype html> 2: <html> 3: <head> 4: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"

10个免费的响应式jQuery Carousel 轮播图插件

jQuery Carousel 轮播图插件可以给网站创建华丽的动画效果,这里列出的10个jQuery Carousel 轮播图插件都是响应式的,并且可以免费使用. 1. ItemSlide.js 简单的触摸式Carousel 轮播图插件,提供多种样式的旋转动画,如向上滑动,基于全屏的触摸滑动,左右滑动等. 2. Liquid 每当Liquid 容器的大小改变时,都会重新调整列表中的项目数,以适应新的宽度. 3. jCarousel jCarousel 是一个用来控制水平或垂直方向上列表项的jQu

jQuery实现轮播效果(二) - 插件实现

开篇 前一篇文章(jQuery实现轮播效果(一) - 基础)讲到了怎样用jquery来实现一个简单的jquery轮播效果,基本的功能已经实现了,效果看起来还令人满意,唯一不足的就是:每次需要轮播效果时,要将代码复制粘贴过去,如果有些部分需要修改(例如:轮播时的动画效果,前一篇使用的是jquery的淡入淡出效果,如果改成滑动效果,不可避免的要修改js代码),那么就需要对js代码进行修改,对我所写的jquery轮播效果的js代码不熟悉的程序员来说,修改这些js确实很困难.轮播插件所要实现的目标之一就