web技术

JS实现轮播图效果的3种简单方法

2023-06-30 10:26 作者:Admin

本文实例为大家分享了3种方法实现JS轮播图效果的具体代码,供大家参考,具体内容如下

Js实现轮播图01

实现思路

这可能是轮播图最简单点的实现之一,通过更改图片的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>

Js实现轮播图02

实现思路

这可能是轮播图最简单点的实现之一,通过改变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>

Js实现轮播图03

本轮播图的实现,首先通过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);
  };
};

代码可能写的不是很好,存在很多不足,欢迎大家指点批评,我会努力去改正,有疑问欢迎留言,我会尽力去解答,谢谢大家花宝贵的时间来阅读这篇文章。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

标签: #轮播图 #JavaScript
推荐文章
HTML5 Canvas是一种强大的Web技术,它允许我们使用JavaScript在网页上创建和...
在这个程序中,我们将使用JavaScript创建一个可以在屏幕上放烟花的效果。我...
轮播图在网站中几乎无处不在,占用地方少,交互性好。今天就来聊聊如何用vu...
大部分网站或APP的首页差不多都运用到了轮播图,下边就探讨一下关于轮播图的...
轮播图实现思路:1、img_ul类里面存放img标签,将需要展示的图片依次排开,在...
推荐专题
如何自己建网站?建网站难不难?其实建网站说难不难,说容易也并不容易,难...
本专题精心收集整理了多种HTML+CSS+JS轮播图实现方案,带详细代码和讲解,正...