js制作轮播图效果

下面是详细讲解“js制作轮播图效果”的完整攻略:

1. 确定需求

首先确定需求,也就是轮播图的要求。比如需要自动播放、可以手动切换、需要圆点分页器等等。根据不同的需求,我们会采用不同的实现方法。

在这里,我们暂定轮播图的基本要求为:自动播放、手动切换、圆点分页器。

2. HTML结构

根据需求,确定好HTML结构的基本框架,比如轮播图盒子、轮播图图片、圆点分页器等等。在本例中,HTML结构如下:

<div id="slider">
  <ul class="slider-img">
    <li><img src="img/1.jpg" alt="轮播图1"></li>
    <li><img src="img/2.jpg" alt="轮播图2"></li>
    <li><img src="img/3.jpg" alt="轮播图3"></li>
    <li><img src="img/4.jpg" alt="轮播图4"></li>
  </ul>
  <ul class="slider-nav">
    <li class="active"></li>
    <li></li>
    <li></li>
    <li></li>
  </ul>
</div>

其中,slider为轮播图盒子,slider-img为轮播图图片列表,slider-nav为圆点分页器,active为当前选中的圆点。

3. CSS样式

编写CSS样式,使轮播图可以正常显示。在本例中,CSS样式如下:

#slider {
  width: 600px;
  height: 400px;
  overflow: hidden;
  position: relative;
  margin: 0 auto;
}

.slider-img {
  list-style-type: none;
  margin: 0;
  padding: 0;
  width: 2400px;
  position: absolute;
  top: 0;
  left: 0;
}

.slider-img li {
  float: left;
  width: 600px;
  height: 400px;
}

.slider-img li img {
  width: 100%;
  height: 100%;
}

.slider-nav {
  list-style-type: none;
  margin: 0;
  padding: 0;
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
}

.slider-nav li {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background-color: #999;
  margin-right: 10px;
  float: left;
  cursor: pointer;
}

.slider-nav li.active {
  background-color: #ff6600;
}

4. JavaScript实现

4.1 自动播放

思路:定义一个变量index用于记录当前显示的图片索引,定义一个函数showNext用于切换下一张图片,定义一个定时器timer,每隔一定的时间执行showNext()

实现代码:

var index = 0;
var timer = null;

function showNext() {
  index++;
  if (index >= 4) {
    index = 0;
  }
  var imgList = document.querySelectorAll(".slider-img li");
  var navList = document.querySelectorAll(".slider-nav li");
  for (var i = 0; i < imgList.length; i++) {
    imgList[i].style.display = "none";
    navList[i].classList.remove("active");
  }
  imgList[index].style.display = "block";
  navList[index].classList.add("active");
}

timer = setInterval(showNext, 2000);

4.2 手动切换

思路:给圆点分页器绑定click事件,在事件中获取当前圆点的索引,然后将index设置为当前索引,调用showNext()函数。

实现代码:

var navList = document.querySelectorAll(".slider-nav li");
for (var i = 0; i < navList.length; i++) {
  navList[i].addEventListener("click", function() {
    var index = Array.prototype.indexOf.call(navList, this);
    var imgList = document.querySelectorAll(".slider-img li");
    for (var i = 0; i < imgList.length; i++) {
      imgList[i].style.display = "none";
      navList[i].classList.remove("active");
    }
    imgList[index].style.display = "block";
    navList[index].classList.add("active");
  });
}

5. 完整代码及示例

HTML代码:

<div id="slider">
  <ul class="slider-img">
    <li><img src="img/1.jpg" alt="轮播图1"></li>
    <li><img src="img/2.jpg" alt="轮播图2"></li>
    <li><img src="img/3.jpg" alt="轮播图3"></li>
    <li><img src="img/4.jpg" alt="轮播图4"></li>
  </ul>
  <ul class="slider-nav">
    <li class="active"></li>
    <li></li>
    <li></li>
    <li></li>
  </ul>
</div>

CSS代码:

#slider {
  width: 600px;
  height: 400px;
  overflow: hidden;
  position: relative;
  margin: 0 auto;
}

.slider-img {
  list-style-type: none;
  margin: 0;
  padding: 0;
  width: 2400px;
  position: absolute;
  top: 0;
  left: 0;
}

.slider-img li {
  float: left;
  width: 600px;
  height: 400px;
}

.slider-img li img {
  width: 100%;
  height: 100%;
}

.slider-nav {
  list-style-type: none;
  margin: 0;
  padding: 0;
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
}

.slider-nav li {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background-color: #999;
  margin-right: 10px;
  float: left;
  cursor: pointer;
}

.slider-nav li.active {
  background-color: #ff6600;
}

JavaScript代码:

var index = 0;
var timer = null;

function showNext() {
  index++;
  if (index >= 4) {
    index = 0;
  }
  var imgList = document.querySelectorAll(".slider-img li");
  var navList = document.querySelectorAll(".slider-nav li");
  for (var i = 0; i < imgList.length; i++) {
    imgList[i].style.display = "none";
    navList[i].classList.remove("active");
  }
  imgList[index].style.display = "block";
  navList[index].classList.add("active");
}

timer = setInterval(showNext, 2000);

var navList = document.querySelectorAll(".slider-nav li");
for (var i = 0; i < navList.length; i++) {
  navList[i].addEventListener("click", function() {
    var index = Array.prototype.indexOf.call(navList, this);
    var imgList = document.querySelectorAll(".slider-img li");
    for (var i = 0; i < imgList.length; i++) {
      imgList[i].style.display = "none";
      navList[i].classList.remove("active");
    }
    imgList[index].style.display = "block";
    navList[index].classList.add("active");
  });
}

实例1:点击查看

实例2:点击查看

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js制作轮播图效果 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JS构造一个html文本内容成文件流形式发送到后台

    实现JS构造一个html文本内容成文件流形式发送到后台,我们可以通过以下步骤完成: 构造HTML文本内容 我们可以使用字符串拼接的方式构造HTML文本内容。例如,我们可以通过以下代码构造一个简单的HTML文本内容: const htmlContent = ` <!DOCTYPE html> <html> <head> &l…

    JavaScript 2023年5月27日
    00
  • 手把手教你如何排查Javascript内存泄漏

    为了让大家更好地了解如何排查JavaScript内存泄漏问题,以下是一份完整的攻略。 什么是JavaScript内存泄漏 JavaScript内存泄漏是指在JavaScript代码执行过程中,未使用的内存被长时间占用不释放的情况。这会导致内存溢出,进而影响代码的性能。 如何排查JavaScript内存泄漏 JavaScript内存泄漏问题很常见,但是很难被察…

    JavaScript 2023年6月10日
    00
  • js解析与序列化json数据(二)序列化探讨

    JS解析与序列化JSON数据(二) – 序列化探讨 什么是序列化? 序列化是指将对象(Object)、数组(Array)等复杂的数据类型转换成字符串的过程,方便在不同平台上的传输和存储。在JavaScript中,序列化的主要应用是在数据传输和存储时,将复杂的数据类型转换为字符串,再通过反序列化,将字符串转回原来的数据类型。 序列化方法 JavaScript中…

    JavaScript 2023年5月27日
    00
  • 原生JS实现动态添加新元素、删除元素方法

    原生JS实现动态添加新元素的方法 在HTML中,我们可以通过JavaScript来动态添加、删除元素。下面是实现动态添加新元素的方法: 1. 创建新元素 要创建一个新元素,我们需要使用 createElement() 方法。它需要一个参数,即我们要创建的元素的名称。 let newElement = document.createElement(‘div’)…

    JavaScript 2023年6月10日
    00
  • js实现移动端图片滑块验证功能

    下面详细讲解“js实现移动端图片滑块验证功能”的完整攻略,包括以下三个步骤: 1.准备工作: 在HTML文件中定义一个div用于显示图片,一个canvas用于实现滑块,以及一个按钮用于提交验证结果。 <div id="image-box"></div> <canvas id="canvas&quot…

    JavaScript 2023年6月10日
    00
  • JavaScript操作HTML元素和样式的方法详解

    这里给您详细讲解一下“JavaScript操作HTML元素和样式的方法详解”。 1. 操作HTML元素 在JavaScript中,我们可以通过以下方法来获取和操作HTML元素: 1.1 通过ID获取元素 我们可以使用document.getElementById方法来获取指定ID的元素,该方法返回一个Element对象,我们可以通过该对象来对元素进行操作。 …

    JavaScript 2023年6月10日
    00
  • JavaScript实现加密与解密详解

    JavaScript实现加密与解密详解 在现代应用程序中,数据的安全性非常重要。其中一种保护数据安全的方式是使用加密算法。JavaScript是一种流行的编程语言,经常用于在浏览器中实现安全性。 本文将详细讲解使用JavaScript实现加密和解密的详细步骤,包括两个示例。 加密 Base64加密 Base64是一种用于数据传输的编码方案。它将任意二进制数据…

    JavaScript 2023年5月19日
    00
  • js中的setInterval和setTimeout使用实例

    JS中的setInterval和setTimeout使用实例 在JS中,setInterval和setTimeout是两个常用的计时器函数。它们可以根据指定的时间间隔或延迟来进行周期性的或单次的定时操作。下面,我们将详细讲解这两个函数的使用实例。 1. setInterval的使用实例 setInterval函数用于周期性地执行代码,它接收两个参数:第一个参…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部