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

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

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

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>
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值