轮播图简单实现

轮播图大家肯定都不陌生,因为这是前端最为常见的一个功能,现在随着框架和一些插件的兴起,很少人会去原生的去写轮播图,所以今天带大家写一下原生的轮播图来熟悉一下

d33b781a34814291b6c2653b05d866b4.jpg

 

 

最为主要的就是得知道这张图片的宽度,因为每一次移动的距离就是这张图片的宽度,但是宽度我们不能给死,每一张图片的大小是不一样的,所以根据js的clientWidth来获取,这样不管图片是多大都能获得这张图片的大小,第一步的移动距离就完成了,核心部分也就完成了

       然后就是选择的定时器,这里一定要用setInterval这个定时器,不能用setTimeout,主要原因就不细说了,大家应该是都很熟悉的。

        最后就是轮播到最后一张图片的时候该如何回到第一张图片呢?这里是直接不带动画的跳转到第一张(一会在代码中体现出来)

       下面就来看一下代码的实现过程:

首先是html结构文件,这个轮播图结构上不难:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <link rel="stylesheet" href="轮播图.css">

    <script src="轮播图.js"></script>

</head>

<body>

    <footer class="slideshow">

        <ul>

            <li><a href="#"><img src="image/2.jpg" alt=""></a></li>

            <li><a href="#"><img src="image/门.jpg" alt=""></a></li>

            <li><a href="#"><img src="image/灵压之旅.jpg" alt=""></a></li>

            <li><a href="#"><img src="image/2.png" alt=""></a></li>

            <li><a href="#"><img src="image/2.jpg" alt=""></a></li>

        </ul>

    </footer>

</body>

</html>

 

接下来就是css的样式,大家根据自己的喜好设置即可:

*{
    margin: 0;
    padding: 0;
}
ul li {
    list-style: none;
}
.slideshow{
    position: relative;
    width: 1400px;
    height: 600px;
    margin: 0 auto;
    overflow: hidden;
}
.slideshow ul{
    width: 600%;
    position: absolute;
    height: 600px;
    left: 0;
    top: 0;
    /* transition: all 0s; */
}
.slideshow ul li{
    float: left;
    width: 1400px;
    height: 600px;
}
.slideshow ul li a img{
    width: 1400px;
    height: 600px;
}

最后就是js部分的核心:

window.addEventListener("load", function () {
    var a = document.querySelector(".slideshow ul");
    // a.style.left="-1400px"
    // console.dir(a.children[0])
    console.log(a.children.length);
    var num = 0;
    var len = a.children[0].clientWidth;
    console.log(a.children[0].clientWidth);
     setInterval(function(){
        if(num==a.children.length){
            a.style.left="0px";
            a.style.transition="left 0s";
            num = 1;
        }else{
            a.style.left=-len*num+"px";
            a.style.transition="left 1s";
            num++;
        } 
      
    },1500);
})

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y.03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值