前端入门,我的第一个轮播图

博主写法可能有些冗余,看完的小伙伴可以评论,O(∩_∩)O

第一部分:html部分

<body>
    <div class="box">
        <div class="divBtn">
            <p class="p_left"><a href="###"><</a>
            </p>
            <p class="p_right"><a href="###">></a></p>
        </div>
        <ul class="ulImg">
            <li class="on"><a href="###"><img src="./images/01.jpg" alt=""></a></li>
            <li><a href="###"><img src="./images/02.jpg" alt=""></a></li>
            <li><a href="###"><img src="./images/03.jpg" alt=""></a></li>
            <li><a href="###"><img src="./images/04.jpg" alt=""></a></li>
            <li><a href="###"><img src="./images/05.jpg" alt=""></a></li>
            <li><a href="###"><img src="./images/06.jpg" alt=""></a></li>
        </ul>
        <ol class="olList">
            <li class="on"><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>
    </div>
</body>

第二部分:CSS样式

 * {
     margin: 0;
     padding: 0;


 }

 .box {
     width: 400px;
     height: 270px;
     margin: 150px auto;
     background: rgb(133, 137, 138);
     box-sizing: border-box;
     position: relative;
     overflow: hidden;
 }

 a {
     text-decoration: none;
     color: white;
 }

 .ulImg,
 .olList {
     list-style: none;

 }

 .divBtn {
     position: absolute;
     /* z-index: 1; */
     color: white;
     position: relative;
 }

 .divBtn .p_left,
 .divBtn .p_right {
     width: 30px;
     height: 30px;
     background-color: rgb(139, 188, 207);
     border-radius: 50%;
     line-height: 30px;
     font-size: 18px;
     text-align: center;
     position: absolute;
     top: 120px;
 }

 .divBtn .p_left {
     left: -8px;
 }

 .divBtn .p_right {
     right: -8px;
 }

 .ulImg li {
     position: absolute;
 }

 .ulImg li:first-child {
     z-index: 1;
 }

 .ulImg li img {
     border: 0;
     width: 400px;
     height: 250px;
 }

 .ulImg {
     width: 400px;
     height: 270px;
     position: absolute;
     top: 0;
     left: 0;
 }

 .olList {
     width: 80%;
     position: absolute;
     bottom: 0;
     left: 50%;
     transform: translateX(-50%);
     display: flex;
     justify-content: space-around;
 }

 .olList li {
     float: left;
     font-size: 13px;
     width: 20px;
     height: 20px;
     border-radius: 70%;
     text-align: center;
     line-height: 20px;
     color: rgb(255, 252, 252);
     background-color: rgb(120, 120, 203);
 }

 .olList li.on {
     width: 30px;
     border-radius: 70%;
     background-color: rgb(49, 128, 255);
 }

第三部分:JS部分(注释较多,小白可以看懂吧)

// 入口函数,防止DOM元素加载失败,
$(function () {
    // 图片与页码都展示第一个
    // 设置全局的下标与延时器,调用时使用
    let trimer = null
    let index = 0     //声明并赋值是最好的初始化办法

    // 1.自动轮播图
    // 使用函数封装,方便调用方法
    function begin() {
        // 延时器:,每一秒执行
        trimer = setInterval(function () {
            index++ //每一秒下标+ 1
            // 下标长度大于图片数量,就让他的下标= 0
            if (index >= $('.ulImg li').length) {
                index = 0
            }
            // 当前图片下标给到当前图片的层级,但是第一张图片下标为0,会导致层级问题,所以这里给他的兄弟元素全为-1
            $('.ulImg li').eq(index).css('zIndex', index).siblings().css('zIndex', -1)
            // 页码的图标就正常使用即可,当前下标添加样式,其他元素清除样式
            $('.olList li').eq(index).addClass('on').siblings().removeClass('on')

        }, 1000)
    }
    // 调用一下,使浏览器打开直接就能运行
    begin()

    // 2.hover()写法:鼠标移入,停止动画,显示左右按钮
    $('.box').hover(function () {
        // 停止动画
        clearInterval(trimer)
        // 显示左右按钮
        $('.divBtn').css('zIndex', 10)  //使用z-index改变按钮层级

        // 3.鼠标移出,开始动画
    }, function () {
        begin()
        // 隐藏左右按钮
        $('.divBtn').css('zIndex', -5)  //同样为了解决图片下标为0问题,不设置0而是设置负数
    })

    // 4.按钮点击事件 点击左按钮
    $('.divBtn .p_left').click(function () {
        index--
        if (index <= -1)
            index = 5
        $('.ulImg li').eq(index).css('zIndex', index).siblings().css('zIndex', -1)
        $('.olList li').eq(index).addClass('on').siblings().removeClass('on')
    })

    // 4.按钮点击事件 点击左按钮
    $('.divBtn .p_right').click(function () {
        index++
        if (index >= 6)
            index = 0
        $('.ulImg li').eq(index).css('zIndex', index).siblings().css('zIndex', -1)
        $('.olList li').eq(index).addClass('on').siblings().removeClass('on')
    })

    // 5.点击页码事件
    $('.olList li').click(function () {
        // 获取此时点击的下标
        index = $(this).index()
        console.log(index);
        $('.ulImg li').eq(index).css('zIndex', index).siblings().css('zIndex', -1)
        $('.olList li').eq(index).addClass('on').siblings().removeClass('on')
    })
})

源码文件:

(文件以压缩方式存放在蓝奏云上,带来不便,请原谅)

https://zhaolaifa.lanzouw.com/iFlt40n98wmf

第一次发表博客,同时也在学习前端,一块学习的可以加博主微信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值