基于jQuery的轮播图插件(新手练习)

本文介绍了一款自制的轮播图插件,支持渐隐渐现效果,并可添加标题和按钮。通过简单的HTML结构及CSS样式实现,利用jQuery封装为易于使用的组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

到年末了,今天没事,自己写了一个轮播图的插件….(新手练习, 勿喷)

可以添加标题,可以添加按钮….
切换方式目前只写了一种 渐隐渐现的方式…

HTML 结构

<div class="mySlide">
    <ul class="slide-list">
        <li><img src="img/news-img1.png" alt="" /></li>
        <li><img src="img/news-img2.png" alt="" /></li>
        <li><img src="img/news-img3.png" alt="" /></li>
    </ul>
</div>



Css 结构

.mySlide{
    position: relative;
    width: 547px;               /*图片宽度*/
    height: 371px;              /*图片高度*/
}
.slide-list{
    width: 547px;               /*图片宽度*/
    height: 371px;              /*图片高度*/
    overflow: hidden;
    position: relative;
}
.slide-list li {
    position: absolute;
    left: 0;
    top: 0;
    opacity: 0;
}
.slide-count{
    position: absolute;
    width: 100%;
    height: 15px;
    bottom: 8%;
    left: 0;
    text-align: center;
}
.slide-count span{
    display: inline-block;
    *display: inline-block;
    *zoom: 1;
    width: 15px;
    height: 15px;
    border-radius: 50%;
    background-color: #3e3e3e;
    margin: 0 5px;
    cursor: pointer;
}
.slide-count span.active{
    background-color: #C81623;
}



JavaScript

;(function($){
    $.fn.Slide = function(options){

        var root = this;

        /*
         *  @ 配置参数
         *  oIndex              初始位置
         *  interval             轮播间隔
         *  hasTabBtn        是否包含切换按钮(默认不包含)
         *  hasCountBtn    是否包含计数按钮(默认不包含)
         *  hasTitle             轮播图下面是否具有标题
         *  autpPlay           是否自动播放(默认自动播放)
         */

        var defaults = {
            oIndex : 0,
            interval : 2000,                           // 时间间隔
            hasTabBtn : false,                      // 是否具有切换按钮
            prevBtnClass : "prev-btn",        //  上一页 className
            nextBtnClass : "next-btn",        // 下一页 className
            hasCountBtn : false,                  // 是否具有计数按钮
            countBtnClass : "slide-count",
            hasTitle : false,
            isAutoPlay : true                          // 是否自动播放 
        }

        // 合并参数
        var opts = $.extend({}, defaults, options);
        var slide = {
            play : function(){

                /*
                 * opts的参数 绑定到 slide
                 * slide 赋值 that
                 */

                var that = this;
                for(var p in opts){       
                    that[p] = opts[p];
                }

                that.oUl = root.find(".slide-list");                 // 图片列表
                that.oLi = that.oUl.find("li");                          // 每张图片
                that.imgNum = that.oLi.length;                    // 图片数量
                that.isPlay = null;

                // 添加切换按钮
                if(that.hasTabBtn){
                    that.setTabBtn();
                }

                // 添加计数按钮
                if(that.hasCountBtn){
                    that.setCountBtn(that.imgNum);
                }

                // 自动播放
                if(that.isAutoPlay){
                    that.autoPlay();
                }

               that.init();

            },

            // 初始化
            init : function(){
                var that = this;
                that.oLi.eq(0).css({
                    opacity : 1
                });
                if(that.hasCountBtn){
                    that.countBtn.find("span").eq(0).addClass("active");
                }
            },

            // 添加切换按钮
            setTabBtn : function(){
                var that = this;
                that.prevBtn = $('<div class=' + that.prevBtnClass + '></div>');        // 上一页按钮
                that.nextBtn = $('<div class=' + that.nextBtnClass + '></div>');        // 下一页按钮
                root.append(that.prevBtn);
                root.append(that.nextBtn);

                that.prevBtn.on("click", function(e){
                    e.stopPropagation();
                    that.prevFun();
                });
                that.nextBtn.on("click", function(e){
                    e.stopPropagation();
                    that.nextFun();
                })

                // 链式调用
                return that;
            },

            // 下一页
            prevFun : function(){
                var that = this;
                that.oIndex--;
                that.oIndex < 0 && (that.oIndex = that.imgNum - 1);
                that.toggle("fade");
            },

            // 上一页
            nextFun : function(){
                var that = this;
                that.oIndex++;
                that.oIndex >= that.imgNum && (that.oIndex = 0);
                that.toggle("fade");
            },

            // 创建计数按钮
            setCountBtn : function(oLen){
                var that = this;
                that.countBtn = $('<div class=' + that.countBtnClass + '></div>');       // 计数按钮
                root.append(that.countBtn);

                // 添加点
                for(var i = 0; i < oLen; i++){
                    var oNum = $("<span></span>");
                    that.countBtn.append(oNum);
                }
                var oSpan = that.countBtn.find("span");
                that.countEvent(oSpan);

                return that;
            },

            // 自动轮播
            autoPlay : function(){
                var that = this;
                var countBtn = that.countBtn;
                var interval = that.interval;
                var oLi = that.oLi;
                that.isPlay = setInterval(play, interval);    

                function play(){
                    that.oIndex ++;
                    that.oIndex >= that.imgNum && (that.oIndex = 0);

                    // 图片轮播
                    that.toggle("fade");
                }

                root.hover(function(){
                    clearInterval(that.isPlay);
                }, function(){
                    that.isPlay = setInterval(play, interval);   
                });

                return that;
            },

            // 按钮事件
            countEvent : function(count){
                var that = this;
                var oLi = that.oLi;
                count.each(function(){
                    $(this).on("click", function(e){
                        e.stopPropagation();
                        var i = count.index($(this));
                        that.oIndex = i;
                        $(this).addClass("active").siblings().removeClass("active");
                        oLi.eq(that.oIndex).stop().animate({
                            opacity : 1
                        }).siblings().stop().animate({
                            opacity : 0
                        });
                    });
                })
            },

            // 切换的方式
            toggle : function(pattern){
                var that = this;
                var oLi = that.oLi;
                var countBtn = that.countBtn;
                if(pattern == "fade"){
                    // 图片轮播
                    oLi.eq(that.oIndex).stop().animate({
                        opacity : 1
                    }).siblings("li").stop().animate({
                        opacity : 0
                    });

                    // 小圆点
                    if(countBtn){
                        countBtn.find("span").eq(that.oIndex).addClass("active").siblings().removeClass("active");
                    }
                }
            }
        }

        return this.each(function(){
            slide.play();
        });
    };

})(jQuery);



插件的引入

// 先引入jQuery
<script src="http://apps.bdimg.com/libs/jquery/1.8.2/jquery.js"></script>

// 引入插件
<script src="XX/Slide.js"></script>
<script>
    $(".mySlide").Slide({
        hasCountBtn : true
    });
</script>
内容概要:本文探讨了在MATLAB/SimuLink环境中进行三相STATCOM(静态同步补偿器)无功补偿的技术方法及其仿真过程。首先介绍了STATCOM作为无功功率补偿装置的工作原理,即通过调节交流电压的幅值和相位来实现对无功功率的有效管理。接着详细描述了在MATLAB/SimuLink平台下构建三相STATCOM仿真模型的具体步骤,包括创建新模型、添加电源和负载、搭建主电路、加入控制模块以及完成整个电路的连接。然后阐述了如何通过对STATCOM输出电压和电流的精确调控达到无功补偿的目的,并展示了具体的仿真结果分析方法,如读取仿真数据、提取关键参数、绘制无功功率变化曲线等。最后指出,这种技术可以显著提升电力系统的稳定性与电能质量,展望了STATCOM在未来的发展潜力。 适合人群:电气工程专业学生、从事电力系统相关工作的技术人员、希望深入了解无功补偿技术的研究人员。 使用场景及目标:适用于想要掌握MATLAB/SimuLink软件操作技能的人群,特别是那些专注于电力电子领域的从业者;旨在帮助他们学会建立复杂的电力系统仿真模型,以便更好地理解STATCOM的工作机制,进而优化实际项目中的无功补偿方案。 其他说明:文中提供的实例代码可以帮助读者直观地了解如何从零开始构建一个完整的三相STATCOM仿真环境,并通过图形化的方式展示无功补偿的效果,便于进一步的学习与研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值