轮播图(原生js)手写

本文详细介绍了如何使用原生JavaScript实现轮播图功能,包括轮播图布局、自动切换、无缝滚动、左右切换和焦点切换五大步骤,并提供了完整的代码示例及封装的调用方法。
摘要由CSDN通过智能技术生成

轮播图:分为五大步(轮播图布局,左右切换,无缝轮播,自动切换,焦点切换)进行书写 ,相同的进行函数封装,调用方法,也可以用插件进行书写,这里写的是原生js轮播图。

1 轮播图布局


<!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>原生js轮播图</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        img {
            display: block;
            border: none;
        }

        .banner {
            width: 600px;
            height: 400px;
            margin: 50px auto;
            position: relative;
            /* overflow: hidden; */
        }

        .banner .bannerWrap {
            width: 2400px;
            height: 400px;
            position: absolute;
            left: 0;
            top: 0;
        }

        .banner .bannerWrap div {
            width: 600px;
            height: 400px;
            float: left;
        }

        .banner .focusList {
            position: absolute;
            width: 100%;
            height: 20px;
            bottom: 30px;
            text-align: center;
        }

        .banner .focusList span {
            display: inline-block;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background-color: salmon;
            margin-right: 20px;
        }

        .banner .focusList span.active {
            background-color: orangered;
        }

        .banner a {
            display: block;
            width: 41px;
            height: 69px;
            position: absolute;
            top: 50%;
            margin-top: -34.5px;
            background-color: red;
            background: url(./img/icon-slides.png) center no-repeat;
        }

        .banner a.btnLeft {
            left: 0px;
            background-position: 0px center;
        }

        .banner a.btnRight {
            right: 0px;
            background-position: -42px center;
        }
    </style>
</head>

<body>
    <!-- 轮播图区域 -->
    <div id="banner" class="banner">
        <!-- 图片区域包裹层 -->
        <div class="bannerWrap">
            <div><img src="./img/" /></div>
            <div><img src="./img/" /></div>
            <div><img src="./img/" /></div>
            <div><img src="./img/" /></div>
        </div>
        <!-- 焦点区域 -->
        <p class="focusList">
            <span class="active"></span>
            <span></span>
            <span></span>
            <span></span>
        </p>
        <!-- 左右按钮 -->
        <a class="btnLeft" href="javascript:;"></a>
        <a class="btnRight" href="javascript:;"></a>
    </div>
</body>

</html>

2 自动切换

 // 获取元素
        var banner = document.getElementById("banner"),
            bannerWrap = banner.getElementsByClassName("bannerWrap")[0],
            oDivs = bannerWrap.getElementsByTagName("div"),
            oSpans = banner.getElementsByTagName("span"),
            oBtns = banner.getElementsByTagName("a");
        

        // 图片切换
        // 自定义变量
        var n = 0;  //表示当前展示的是第几张图片  默认值0展示第一张

        // 设置定时器
        setInterval(function(){
            // n的只自身加1
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于无缝轮播,可以通过原生JS手写实现。下面是一个简单的无缝无限轮播的carousel实现,你可以参考一下: HTML部分: ```html <div class="carousel"> <ul class="carousel-list"> <li><img src="img1.jpg"></li> <li><img src="img2.jpg"></li> <li><img src="img3.jpg"></li> <li><img src="img4.jpg"></li> </ul> </div> ``` CSS部分: ```css .carousel { position: relative; overflow: hidden; width: 600px; height: 400px; } .carousel-list { position: absolute; left: 0; top: 0; width: 10000px; height: 400px; margin: 0; padding: 0; list-style: none; } .carousel-list li { float: left; width: 600px; height: 400px; margin: 0; padding: 0; } ``` JS部分: ```javascript var carousel = document.querySelector('.carousel'); var carouselList = document.querySelector('.carousel-list'); var carouselItems = document.querySelectorAll('.carousel-list li'); var carouselWidth = carousel.offsetWidth; var currentIndex = 0; // 克隆第一张图片,并放到最后 var firstItem = carouselItems[0].cloneNode(true); carouselList.appendChild(firstItem); // 点击左右按钮的事件处理函数 function handleButtonClick(event) { var target = event.target; if (target.classList.contains('prev')) { currentIndex--; if (currentIndex < 0) { currentIndex = carouselItems.length - 1; carouselList.style.left = -currentIndex * carouselWidth + 'px'; } } else if (target.classList.contains('next')) { currentIndex++; if (currentIndex >= carouselItems.length) { currentIndex = 0; carouselList.style.left = 0; } } var left = -currentIndex * carouselWidth; carouselList.style.left = left + 'px'; } // 绑定左右按钮的事件 var prevBtn = document.createElement('button'); prevBtn.classList.add('prev'); prevBtn.innerText = '上一张'; prevBtn.addEventListener('click', handleButtonClick); var nextBtn = document.createElement('button'); nextBtn.classList.add('next'); nextBtn.innerText = '下一张'; nextBtn.addEventListener('click', handleButtonClick); carousel.appendChild(prevBtn); carousel.appendChild(nextBtn); ``` 这段代码实现了无限轮播,并且可以通过左右按钮控制图片的切换。你可以将这段代码复制到本地运行,看看效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值