首页 > 其他分享 >JS实现轮播图的三种简单方法

JS实现轮播图的三种简单方法

时间:2022-11-16 19:11:45浏览次数:60  
标签:index 轮播 img 100% JS 三种 lunbo var

01、JS轮播图实现1

实现思路
这可能是轮播图最简单点的实现之一,通过更改图片的src来实现该效果,首先需要将图片命名格式统一比如pic01.jpg,pic02.jpg…,再通过js使用定时器去改变img标签里面的src图片链接的名字来实现切换效果。代码如下:
实现效果

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>轮播图实现01</title>
        <style type="text/css">
            .lunbo{
                width: 900px;
                height: 400px;
                margin:100px auto;
            }
            .lunbo img{
                width: 100%;
                height:100%;
            }
        </style>
    </head>
    <body>
        <!--轮播图模块 -->
        <div class="lunbo">
            <img id="lunbo_img" src="./pic/img3.jpeg" >
        </div>
        <!-- Js代码 -->
    <script>
      var index = 1;
        function lunbo(){
            index ++ ;
            //判断index是否大于3
            if(index > 3){
                index = 1;
            }
            //获取img对象
            var img = document.getElementById("lunbo_img");
            img.src = "./pic/img"+index+".jpeg";
        }
        //2.定义定时器
        setInterval(lunbo,2000);
        /*切记定时器里调用lunbo方法不能加(),setInterval(lunbo,2000);如果加()会执行lunbo()方法,而导致定时器没用。
    </script>
    </body>
</html>

02、JS轮播图实现2

实现思路 这可能是轮播图最简单点的实现之一,通过改变background的图片链接来实现该效果,首先需要将图片命名格式统一比如pic01.jpg,pic02.jpg…,再通过js使用定时器去改变background属性里面的url()图片链接的名字来实现切换效果。代码如下: 实现效果

在这里插入图片描述

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>轮播图实现02</title>
        <style>
            body{
                margin: 0;
                padding: 0;
            }
            .lunbo{
                width:100%;
                height:720px;
                background-image: url(pic/img1.jpeg);/*背景图片*/
                background-size:100% 100%; 
            }
        </style>
    </head>
    <body>
        <div class="lunbo">

        </div>
        <script type="text/javascript">
          var index = 1;
            function lunbo(){
                index ++ ;
                //判断number是否大于3
                if(index > 3){
                    index = 1;
                }
                //获取img对象
        var img = document.getElementsByClassName("lunbo")[0];
        img.style.background = "url(pic/img"+index+".jpeg)";
        img.style.backgroundSize="100% 100%";    
            }
            //2.定义定时器
            setInterval(lunbo,3000);
        </script>
    </body>
</html>

03、JS轮播图实现3

本轮播图的实现,首先通过CSS代码将全部存放图片的li标签通过opacity属性设置为0来隐藏不显示, 通过js代码使用定时器不断调用类active突出显示li标签,同时隐藏兄弟li标签,再通过index++来实现切换循环显示的效果,当点击两边的按钮时,调用index++所在的方法实现切换的效果,没有复杂的算法,一点点基础一看代码就会学会,请大家参考。 实现效果

在这里插入图片描述

HTML代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1,
        minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <!--引入CSS代码-->
        <link rel="stylesheet" type="text/css" href="./css/index.css"/>
        <!--引入Js代码-->
        <script src="./js/index.js"></script>
        <title>Js实现轮播图</title>
    </head>
    <body>
        <div class="lunbo">
            <div class="content">
            <ul id="item">
                <li class="item">
                    <a href="#"><img src="img/pic1.jpg" ></a>
                </li>
                <li class="item">
                    <a href="#"><img src="img/pic2.jpg" ></a>
                </li>
                <li class="item">
                    <a href="#"><img src="img/pic3.jpg" ></a>
                </li>
                <li class="item">
                    <a href="#"><img src="img/pic4.jpg" ></a>
                </li>
                <li class="item">
                    <a href="#"><img src="img/pic5.jpg" ></a>
                </li>
            </ul>
            <div id="btn-left"><</div>
            <div id="btn-right">></div>
            <ul id="circle">

                <li class="circle"></li>
                <li class="circle"></li>
                <li class="circle"></li>
                <li class="circle"></li>
                <li class="circle"></li>
            </ul>
            </div>
        </div>
    </body>
</html>

CSS代码

*{
    margin: 0;
    padding: 0;
}
a{
    list-style: none;
}
li{
    list-style: none;
}
.lunbo{
    width: 100%;
}
.content{
    width: 800px;
    height: 300px;
    margin: 20px auto;
    position: relative;
}
#item{
    width: 100%;
    height: 100%;

}
.item{
    position: absolute;
    opacity: 0;
    transition: all 1s;

}
.item.active{
    opacity:1;
}
img{
    width: 100%;
}
#btn-left{
    width: 30px;
    height: 69px;
    font-size: 30px;
    color: white;
    background-color:rgba(0,0,0,0.4);
    line-height: 69px;
    padding-left:5px;
    z-index: 10;/*始终显示在图片的上层*/
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-60%);/*使按钮向上偏移居中对齐*/
    cursor: pointer;
    opacity: 0;/*平时隐藏*/
}
.lunbo:hover #btn-left{
    /*鼠标滑入,显示图标*/
    opacity: 1;
}

#btn-right{
    width: 26px;
    height: 69px;
    font-size: 30px;
    color: white;
    background-color:rgba(0,0,0,0.4);
    line-height: 69px;
    padding-left: 5px;
    z-index: 10;
    position: absolute;
    right: 0;
    top: 50%;
    cursor: pointer;
    opacity: 0;
    transform: translateY(-60%);
}
.lunbo:hover #btn-right{
    opacity: 1;
}
#circle{
    height: 20px;
    display: flex;
    position: absolute;
    bottom: 35px;
    right: 25px;
}
.circle{
    width: 10px;
    height: 10px;
    border-radius: 10px;
    border: 2px solid white;
    background: rgba(0,0,0,0.4);
    cursor: pointer;
    margin: 5px;
}
.white{
    background-color: #FFFFFF;
}

JS代码

window.onload=function(){
var items=document.getElementsByClassName("item");
var circles=document.getElementsByClassName("circle");
var leftBtn=document.getElementById("btn-left");
var rightBtn=document.getElementById("btn-right");
var content=document.querySelector('.content');
var index=0;
var timer=null;

//清除class
var clearclass=function(){
    for(let i=0;i<items.length;i++){
        items[i].className="item";
        circles[i].className="circle";
        circles[i].setAttribute("num",i);
    }
}
/*只显示一个class*/
function move(){
    clearclass();
    items[index].className="item active";
    circles[index].className="circle white";
}
//点击右边按钮切换下一张图片
rightBtn.onclick=function(){
    if(index<items.length-1){
        index++;
    }
    else{
        index=0;
    }
    move();
}
//点击左边按钮切换上一张图片
leftBtn.onclick=function(){
    if(index<items.length){
        index--;
    }
    else{
        index=items.length-1;
    }
    move();
}
//开始定时器,点击右边按钮,实现轮播
timer=setInterval(function(){
    rightBtn.onclick();
},1500)
//点击圆点时,跳转到对应图片
for(var i=0;i<circles.length;i++){
    circles[i].addEventListener("click",function(){
        var point_index=this.getAttribute("num");
        index=point_index;
        move();
    })

}
//鼠标移入清除定时器,并开启一个三秒的定时器,使慢慢转动
content.onmouseover=function(){
    clearInterval(timer);
        timer=setInterval(function(){
            rightBtn.onclick();
        },3000)
}
//鼠标移出又开启定时器
content.onmouseleave=function(){
    clearInterval(timer);
    timer=setInterval(function(){
        rightBtn.onclick();
    },1500)
}
}

参考文章:JS实现轮播图的三种简单方法。_念你那丝微笑的博客-CSDN博客_js轮播图

标签:index,轮播,img,100%,JS,三种,lunbo,var
From: https://www.cnblogs.com/zhaostudy/p/16897187.html

相关文章

  • 11JS混淆
    我们在爬取网站的时候,经常会遇到各种各样类似加密的情形,比如:某个网站的URL带有一些看不懂的长串加密参数,想要抓取就必须要懂得这些参数是怎么构造的,否则我们连完整的U......
  • python JSON模块
    一、JSON介绍JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,易于人阅读和编写。二、常用方法方法描述json.loads()将JSON字符串转化为Python对......
  • js 正则 零宽断言
    分类:零宽断言分为两类:1.正向零宽断言2.负向零宽断言零宽断言分为四种:1.正向零宽先行断言:x(?=y),表示:x被y跟随时匹配x 2.正向零宽后发断言:(?<=y)x,表示:x跟随......
  • vue使用qrcodejs2进行二维码显示以及下载
    1、安装qrcodejs2npminstallqrcodejs2/yarnaddqrcodejs22、引入qrcodejs2importQRCodejsfrom'qrcodejs2';3、使用html:<divref="locatorQRCodeRef"></......
  • simpread-(131 条消息) ThreeJS 使用 Curve 曲线让物体沿轨迹运动_xyphf_和派孔明的博
    创建几何体的顶点数据可以手动定义,可以自定义一个函数创建,也可使用three.js提供的函数创建,本节课主要讲解一些2D或3D线条的构造函数及其方法属性,如何通过这些构造函......
  • FastJson循环引用特性
    FastJson在序列化集合时,若集合循环引用特性packagecom.yang;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.TypeReference;importcom.alibaba.f......
  • Js时间戳转时间格式
    废话不多说,直接上代码Js时间戳转(yyyy:MM:ddhh:mm:ss)格式//标准时间转换成年月日时分秒(补0)functiongetTime(timestamp){vardate=newDate(timestamp);//......
  • Vue.js devtools插件点击Root失效或不显示数据问题的解决方法
    原文链接:https://blog.csdn.net/m0_59183852/article/details/126981557刚开始用这个插件,我就遇到了一个问题:使用该插件对代码进行调试的时候,发现如何点击<Root>都没有反......
  • mvc视图类中向Js传递动态参数
     使用APS.NET MVC编写页面,在Html中为javascript函数传入的参数为动态数据时,要注意将动态参数放在引号中,如下面代码中@item.FeeDeptName。@foreach(variteminModel......
  • 关于软件常用的各种配置文件YAML、JSON、ini、XML比较
    如果我们的程序没有任何配置文件时,这样的程序对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,这样很不好,所以要用配置文件,让程序出厂后还能根据需......