利用jQuery实现轮播图

页面展示图

利用jQuery实现轮播图

html代码 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!</title>
    <link rel="icon" href="//www.jd.com/favicon.ico">
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
    <link rel="stylesheet" href="c1.css">
</head>
<body>

<div class="c1">
    <div class="c3">
        <ul class="lbt">
            <li class="i1"><img
                    src="//img12.360buyimg.com/babel/s590x470_jfs/t1/141047/21/22177/187743/6184d79aE26884a79/c87eef19caa91023.jpg.webp"
                    alt="" class=""></li>
            <li class="i2"><img
                    src="//img14.360buyimg.com/pop/s590x470_jfs/t1/214532/12/2060/70920/6178b2fcE10944bdc/a9c90434eda2a97e.jpg.webp"
                    alt="" class="hide"></li>
            <li class="i3"><img
                    src="//img30.360buyimg.com/pop/s590x470_jfs/t1/220092/16/2545/44461/617e33d7E31901352/e3bd37d3ffbe90f7.jpg.webp"
                    alt="" class="hide"></li>
            <li class="i4"><img
                    src="//imgcps.jd.com/ling4/100014654958/54iG5qy-5aW954mp/5YWo5Zy65L2O6IezN-aKmA/p-5bd8253082acdd181d02fa28/d0bc4a5f/cr/s/q.jpg"
                    alt="" class="hide"></li>
            <li class="i5"><img
                    src="//img13.360buyimg.com/pop/s590x470_jfs/t1/223168/33/355/76562/617a70f5E3fb49ea0/025df96c80360d02.jpg.webp"
                    alt="" class="hide"></li>
            <li class="i6"><img
                    src="//img14.360buyimg.com/pop/s590x470_jfs/t1/219284/15/3105/58373/6183cbbeE44e46e89/d781541f3578cbf3.jpg.webp"
                    alt="" class="hide"></li>
        </ul>
        <ul class="button">
            <li class="left_btn"><span> < </span></li>
            <li class="right_btn"><span> > </span></li>
        </ul>
        <ul class="index">
            <li><input type="radio" class="l1" name="nbsp" value="0" checked></li>
            <li><input type="radio" class="l2" name="nbsp" value="1"></li>
            <li><input type="radio" class="l3" name="nbsp" value="2"></li>
            <li><input type="radio" class="l4" name="nbsp" value="3"></li>
            <li><input type="radio" class="l5" name="nbsp" value="4"></li>
            <li><input type="radio" class="l6" name="nbsp" value="5"></li>
        </ul>
    </div>
</div>

<script src="j1.js"></script>

</body>
</html>

css代码

* {
    margin: 0;
    padding: 0;
}

.img {
    width: 590px;
    height: 470px;
}

.c1 {
    width: 590px;
    height: 470px;
    background-color: rgba(0, 0, 0, .15);
    margin: 100px auto;
}

li {
    list-style: none;
}

img {
    cursor: pointer;
}

.c3 {
    position: relative;
}

.c3 .lbt li {
    position: absolute;
    top: 0;
    left: 0;
}

.c3 .button li {
    position: absolute;
    top: 217px;
    width: 25px;
    height: 35px;
    background-color: rgba(0, 0, 0, .15);
    text-align: center;
    line-height: 35px;
    cursor: pointer;
    font-size: 20px;
}

.left_btn {
    left: 0;
    border-top-right-radius: 18px;
    border-bottom-right-radius: 18px;
}

.left_btn span {
    margin-right: 4px;
}

.right_btn {
    right: 0;
    border-top-left-radius: 18px;
    border-bottom-left-radius: 18px;
}

.right_btn span {
    margin-left: 4px;
}

.c3 .index li input {
    position: absolute;
    top: 430px;
}

.l1 {
    left: 10px;
}

.l2 {
    left: 25px;
}

.l3 {
    left: 40px;
}

.l4 {
    left: 55px;
}

.l5 {
    left: 70px;
}

.l6 {
    left: 85px;
}

.hide {
    display: none;
}

js代码

// 自动轮播
function zdlb() {
    $(".lbt li").each(function () {
        if ($(this).children("img").attr("class") !== "hide") {
            res = $(this).index();
            // console.log(res);
        }
    });
    if (res !== 5) {
        // ***********************使用了fadeIn后,标签display属性为inline,所以要设置回none***********************
        $(".lbt li").eq(res + 1).siblings().children("img").addClass("hide").css("display", "none");
        $(".lbt li").eq(res + 1).children("img").fadeIn(1000).removeClass("hide");
        $(".index li").eq(res + 1).children("input").prop("checked", true);
        $(".index li").eq(res + 1).siblings().children().prop("checked", false);
    } else {
        $(".lbt li").eq(0).siblings().children("img").addClass("hide").css("display", "none");
        $(".lbt li").eq(0).children("img").fadeIn(1000).removeClass("hide");
        $(".index li").eq(0).children("input").prop("checked", true);
        $(".index li").eq(0).siblings().children().prop("checked", false);
    }
}

var ID;

function begin() {
    if (ID === undefined) {
        ID = setInterval(zdlb, 3000);
    }
}

function end() {
    clearInterval(ID);
    ID = undefined;
}

begin();

// 鼠标悬浮事件
$(".c3").hover(mouseover, mouseout);

function mouseover() {
    end();
    $(".index li input").each(function () {
        $(this).click(function () {
            let index = $(this).val();
            $(".lbt li").eq(index).siblings().children("img").addClass("hide").css("display", "none");
            $(".lbt li").eq(index).children("img").fadeIn(1000).removeClass("hide");
        })
    })
}

function mouseout() {
    begin();
}

// 右侧按钮
$(".right_btn").click(function () {
    zdlb();
})

// 左侧按钮
$(".left_btn").click(function () {
    $(".lbt li").each(function () {
        if ($(this).children("img").attr("class") !== "hide") {
            res = $(this).index();
        }
    });
    if (res !== 0) {
        // ***********************使用了fadeIn后,标签display属性为inline,所以要设置回none***********************
        $(".lbt li").eq(res - 1).siblings().children("img").addClass("hide").css("display", "none");
        $(".lbt li").eq(res - 1).children("img").fadeIn(1000).removeClass("hide");
        $(".index li").eq(res - 1).children("input").prop("checked", true);
        $(".index li").eq(res - 1).siblings().children().prop("checked", false);
    } else {
        $(".lbt li").eq(5).siblings().children("img").addClass("hide").css("display", "none");
        $(".lbt li").eq(5).children("img").fadeIn(1000).removeClass("hide");
        $(".index li").eq(5).children("input").prop("checked", true);
        $(".index li").eq(5).siblings().children().prop("checked", false);
    }
})

Readme

自动轮播:
        标签初始化,img标签除了第一个没有hide属性外,其余五个都有hide属性;
        先定义一个zdlb函数,找到没有hide属性的img标签的index值;
        然后让其下一个img标签的其余五个img标签加上hide属性,再把这个img标签加上fadeIn属性,并移除hide属性;
        做一个索引判断,当到了最后一个标签时,索引初始化为为0;
        左下侧小圆点是用input标签实现,根据图片索引的不同,input标签索引也随之变动,且变动后设置默认选中;
        即:checked,这样就能实现图片的自动轮播且小圆点也跟着变化;
        定义一个定时器,3秒执行一次zdlb函数;
        当鼠标放置于轮播图内时,取消定时器;
        当鼠标放置于轮播图外时,继续执行定时器;

右侧按钮:
        其执行思路与zdlb函数一致

左侧按钮:
        与zdlb函数相似,只不过把判断的索引及初始化值等修改一下即可;

左下侧小圆点点击:
        因为点击次按钮也属于鼠标悬浮事件,即悬浮到轮播图内,所以点击事件直接在取消自动轮播函数内实现即可;
        拿到input框点击后的value,然后根据value,根据轮播图index将对应图片显示,其它图片隐藏;

 

上一篇:11.4


下一篇:11.4