css+js 实现轮播图

效果图: 

HTML:

<div class="container">
        <div class="wrap">
            <img src="1.jpg">
            <img src="3.jpg">
            <img src="4.jpg">
            <img src="5.jpg">
            <img src="india.jpg">
        </div>
        <div class="buttons">
            <span>1</span>
            <span>2</span>
            <span>3</span>
            <span>4</span>
            <span>5</span>
        </div>
        <a href="javascript:;" class="arrow" style="right:15px;" onclick="toNext()">&gt;</a>
        <a href="javascript:;" class="arrow" style="left:15px;" onclick="roPre()">&lt;</a>
    </div>

CSS:

<style>
        .container{
            width: 400px;
            height:400px;
            margin:50px auto;
            border:1px solid #000;
            box-sizing: border-box;
            overflow: hidden;
            font-size: 0; /*设置之后图片之间无间距*/
            position: relative;
        }
        .wrap{
            width:2000px; /*所有图片总宽度 400*5 */
            height:400px;
            position: absolute;
            left:0;/*是相对于.container的*/
        }
        .wrap img{
            width:400px;
            height: 400px;
        }
         .arrow {
             font-size: 50px;
            color:red;
             text-decoration: none;
            position:absolute;
            top:150px;
            z-index: 2;
        }
        .container .buttons{ /* 设置数字指标位置*/
            position: absolute;
            z-index: 2;
            bottom: 10px;
            right:15px;
            font-size: 20px;
        }
        .buttons span{
            cursor: pointer;
        }
        .on{
            background-color: aqua; /*点击数字指标之后的背景颜色*/
        }
    </style>

 JS:

<script>
    let timer=null; //定时器变量
    let index=0; //记录目前图片的下标,开始时默认是第一张图片
    let buttons=document.getElementsByClassName("buttons")[0];
    let spans=buttons.getElementsByTagName("span");
    spans[index].className="on"; //为数字指标1添加背景色
    let len =spans.length; //图片张数=数字指标的个数
    let lastLeft=-400*(len-1); //最后一张图片左边距(400:每张图片的宽度)
    //点击数字下标事件
    for (let i=0;i<len;i++){
        spans[i].onclick=function () {
            back();
            index=i;
            let wrap = document.getElementsByClassName("wrap")[0];
            wrap.style.left=-400*i+"px";
            spans[i].className="on";
        }
    }
    function autoplay(){
        timer=setInterval(function () {
            toNext();
        },5000);
    }
    autoplay();
    let container=document.getElementsByClassName("container")[0];
    //鼠标移入取消轮播
    container.onmouseenter=function () {
        clearInterval(timer)
    };
    //鼠标移除恢复轮播
    container.onmouseleave=function () {
        autoplay();
    };
    //点击下一张
    function toNext(){
        spans[index].className="";
        let wrap = document.getElementsByClassName("wrap")[0];
        let newLeft= parseInt(wrap.style.left) || 0; //400px=>400
        if(newLeft===lastLeft){ //0 400 800 1200 (4张图片时)
            wrap.style.left=0+"px";
            index=0;
        }else{
            wrap.style.left=newLeft-400+"px";
            index++;
        }
        spans[index].className="on";
    }
    //点击上一张
    function roPre(){
        spans[index].className="";
        let wrap = document.getElementsByClassName("wrap")[0];
        let newLeft= parseInt(wrap.style.left) || 0;
        if(newLeft===0){
            wrap.style.left=lastLeft+"px";
            index=len-1;
        }else{
            wrap.style.left=newLeft+400+"px";
            index--;
        }
        spans[index].className="on";
    }
    //取消所有数字指标的背景色
    function back(){
        for (let i=0;i<len;i++){
            spans[i].className="";
        }
    }
</script>

 

在网页中实现一个简单的轮播图功能,可以通过结合CSS样式和JavaScript脚本来完成。以下是实现轮播图的基本步骤和概念: 1. HTML结构:首先需要定义一个轮播图的基本HTML结构,通常包含一系列的`<img>`标签,每个标签对应轮播图中的一张图片。同时,可能需要一些控制按钮或指示器来控制轮播的进行。 2. CSS样式:通过CSS设置轮播图的样式,例如轮播图的大小、图片的排列方式以及控制元素(如“上一张”、“下一张”按钮)的样式。通常为了实现无缝轮播,CSS中会包含隐藏超出容器宽度图片的设置。 3. JavaScript功能:使用JavaScript来添加轮播图的动态行为。基本的逻辑包括: - 自动轮播:定时切换图片实现自动播放功能。 - 手动轮播:响应用户点击控制按钮的事件,手动切换图片。 - 指示器:更新当前图片对应的指示器状态。 以下是一个简化的轮播图实现示例: ```html <!-- HTML结构 --> <div class="carousel"> <div class="carousel-images"> <img src="image1.jpg" alt="Image 1"> <img src="image2.jpg" alt="Image 2"> <img src="image3.jpg" alt="Image 3"> </div> <button class="prev" onclick="moveSlide(-1)">❮</button> <button class="next" onclick="moveSlide(1)">❯</button> </div> ``` ```css /* CSS样式 */ .carousel { position: relative; width: 600px; height: 400px; overflow: hidden; } .carousel-images img { width: 100%; display: none; } .carousel-images img.active { display: block; } button { position: absolute; top: 50%; transform: translateY(-50%); } ``` ```javascript // JavaScript功能 let slideIndex = 0; showSlides(); function showSlides() { let i; let slides = document.getElementsByClassName("carousel-images")[0].children; for (i = 0; i < slides.length; i++) { slides[i].style.display = "none"; } slideIndex++; if (slideIndex > slides.length) {slideIndex = 1} slides[slideIndex-1].style.display = "block"; setTimeout(showSlides, 3000); // Change image every 3 seconds } function moveSlide(n) { let slides = document.getElementsByClassName("carousel-images")[0].children; let slide = document.getElementsByClassName("active")[0]; slide.classList.remove("active"); if (slideIndex+n > slides.length || slideIndex+n < 1) { return; } slideIndex += n; slides[slideIndex-1].classList.add("active"); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值