jQuery的轮播图插件

本文详细介绍了如何利用jQuery库创建一个功能完善的轮播图插件,包括图片切换、导航点指示、自动播放等功能。通过理解jQuery选择器、事件处理和动画效果,读者将能够自定义并应用此轮播图到自己的网站中,提升用户体验。

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

; (function ($) {

    "use strict";



  $(".banner1").banner({

        items:$(".banner1").find("img"),      //必选

        left:$(".banner1").find("#left"),     //可选,传了就有功能,没传就没有功能

        right:$(".banner1").find("#right"),   //可选,传了就有功能,没传就没有功能

        list:false,         //可选,默认为true

        autoPlay:false,     //可选,默认为true

        moveTime:1000,      //可选,默认为200

        delayTime:4000,     //可选,默认为3000

        index:2             //可选,默认为0

    });



    $.fn.indexfocus = function (options) {

        var obj = {};

        // console.log("hello banner")

        // 默认参数的处理

        var { items, left, right, list, autoPlay, moveTime, delayTime, index } = options;



        list = list === false ? false : true;

        autoPlay = autoPlay === false ? false : true;

        moveTime = moveTime || 200;

        delayTime = delayTime || 3000;



        index = index || 0;

        obj.iPrev = items.length - 1;



        // 设置默认显示的图片

        items.css({

            left: items.eq(0).width()

        }).eq(index).css({

            left: 0

        })



        // list的功能

        if (list) {

            // L1.生成布局

            var str = "";

            for (var i = 0; i < items.length; i++) {

                str += `<li>${i + 1}</li>`;

            }

            obj.ul = $("<ul>").html(str);

            this.append(obj.ul);

            obj.ul.css({

                width: 24 * items.length,

                height: 18,

                display: flex,

                position: relative,

                left: 0, 

                right: 0, 

                bottom: 0, 

                margin: "0 auto"



            }).children("li").css({

                flex: 1,

                width: 18,

                height: 18,

                borderRadius:'50%',

                background: rgb(255, 0, 0)

            }).eq(index).css({

                // background:"red",

                // color:"#fff"

            })

            // L2.绑定事件

            obj.ul.children("li").on("click", function () {

                // L3.判断方向

                if ($(this).index() > index) {

                    // L4.开始离开和进入

                    obj.listMove($(this).index(), 1)

                }

                if ($(this).index() < index) {

                    obj.listMove($(this).index(), -1)

                }



                // L5.设置li的当前项

                obj.ul.children("li").css({

                    background: "",

                    color: ""

                }).eq($(this).index()).css({

                    background: "red",

                    color: "#fff"

                })



                // L6.点击之后,点击的索引,就是下一次的当前索引

                index = $(this).index();

            })

        }

        obj.listMove = function (iNow, type) {

            items.eq(index).css({

                left: 0

            }).stop().animate({

                left: -items.eq(0).width() * type

            }, moveTime).end().eq(iNow).css({

                left: items.eq(0).width() * type

            }).stop().animate({

                left: 0

            }, moveTime)

        }



        // 左右按钮的功能

        obj.rightClick = function () {

            if (index == items.length - 1) {

                index = 0;

                obj.iPrev = items.length - 1

            } else {

                index++;

                obj.iPrev = index - 1

            }

            obj.btnMove(-1)

        }

        obj.leftClick = function () {

            // B2.计算索引

            if (index == 0) {

                index = items.length - 1;

                obj.iPrev = 0;

            } else {

                index--;

                obj.iPrev = index + 1;

            }

            // B3.开始运动

            obj.btnMove(1);

        }



        if (left != undefined && left.length > 0 && right != undefined && right.length > 0) {

            // B1.绑定事件

            left.on("click", obj.leftClick)

            right.on("click", obj.rightClick)

        }



        obj.btnMove = function (type) {

            items.eq(this.iPrev).css({

                left: 0

            }).stop().animate({

                left: items.eq(0).width() * type

            }, moveTime).end().eq(index).css({

                left: -items.eq(0).width() * type

            }).stop().animate({

                left: 0

            }, moveTime)



            if (!list) return;

            this.ul.children("li").css({

                background: "",

                color: ""

            }).eq(index).css({

                background: "red",

                color: "#fff"

            })

        }



        // 自动播放的功能

        if (autoPlay) {

            // A1.直接开启计时器

            var t = setInterval(() => {

                // right.trigger("click");

                obj.rightClick()

            }, delayTime);



            this.hover(function () {

                // A2.鼠标进入停止

                clearInterval(t)

            }, function () {

                // A3.鼠标离开,再开

                t = setInterval(() => {

                    // right.trigger("click");

                    obj.rightClick()

                }, delayTime);

            })



        }

    }

})(jQuery);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值