原生js实现轮播图的示例代码

让我们一步步讲解如何使用原生JS实现轮播图。在开始之前,请确保你已经了解了HTML、CSS和基础的JavaScript知识。

1. HTML结构

首先,我们需要在HTML文件中创建我们的轮播图结构。下面是一个基本的例子:

<div class="slider">
  <div class="slides">
    <div class="slide">
      <img src="http://placehold.it/1000x500">
    </div>
    <div class="slide">
      <img src="http://placehold.it/1000x500">
    </div>
    <div class="slide">
      <img src="http://placehold.it/1000x500">
    </div>
  </div>
</div>

在这个例子中,我们创建了一个带有三个幻灯片的轮播图,每个幻灯片都包含一个图像。我们通过一个带有“slides”类名的父元素来包含这些幻灯片,并将其添加到一个带有“slider”类名的容器中。

2. CSS样式

接下来,我们需要用CSS样式来使我们的轮播图看起来更像一个轮播图。下面是一个基本的 CSS 样式:

.slider {
  width: 1000px;
  margin: 0 auto;
  position: relative;
}

.slides {
  width: 3000px;
  position: absolute;
  top: 0;
  left: 0;
}

.slide {
  width: 1000px;
  float: left;
}

在这个例子中,我们将轮播图的宽度设置为1000像素,然后将其居中放置。我们还将幻灯片容器的宽度设置为三倍的轮播图宽度,以便我们可以在轮播图中滚动幻灯片。最后,我们使幻灯片容器相对定位,使幻灯片能够出现在轮播图中心,使幻灯片向左浮动,以便在将幻灯片添加到轮播图时它们会排成一排。

3. JavaScript代码

接下来,我们需要使用 JavaScript 代码实现轮播图的滚动。我们需要从页面中获取幻灯片容器并将其向左移动。可以使用 CSS 的“left”属性来完成这个动作。然后需要创建一个计时器,以便幻灯片容器在固定的时间间隔内滚动到下一个幻灯片。下面是 JavaScript 代码的示例:

var slider = document.querySelector('.slider');
var slides = document.querySelector('.slides');
var slide = document.querySelectorAll('.slide');
var index = 0;

function nextSlide() {
  slides.style.transition = "all .5s ease-in-out";
  index++;
  slides.style.left = (-index * 1000) + "px";
  if (index == slide.length - 1) {
    setTimeout(function() {
      slides.style.transition = "none";
      index = 0;
      slides.style.left = 0;
    }, 500);
  }
}

setInterval(nextSlide, 3000);

在此示例中,我们首先使用 querySelectorquerySelectorAll 方法获取轮播图的容器和幻灯片。然后,我们定义了一个 nextSlide() 函数,它将幻灯片向左移动1000像素并将过渡效果应用于幻灯片容器。我们还增加了一个计数器以跟踪目前显示的幻灯片。当计数器达到最后一张幻灯片时,我们将容器移到左边,并在500毫秒后将计数器重置为0。

最后,我们使用 JavaScript 中的 setInterval() 函数来定期调用 nextSlide() 函数。在本例中,幻灯片将在3秒后自动滚动到下一个幻灯片。

4. 示例说明

示例1:使用箭头键切换幻灯片

在本示例中,我们将在 keyup 事件上添加一个事件监听器,以便我们调用 nextSlide() 函数来切换幻灯片。

window.addEventListener('keyup', function(e) {
  if (e.keyCode === 37) {
    // left arrow key
    index--;
    slides.style.transition = "all .5s ease-in-out";
    slides.style.left = (-index * 1000) + "px";
  } else if (e.keyCode === 39) {
    // right arrow key
    nextSlide();
  }
});

在这个示例中,我们增加了一个事件监听器,在每次按键松开时检查按键的代码,如果是左箭头键,我们将计数器减去1,并向左滚动容器;如果是右箭头键,则调用 nextSlide() 函数滚动到下一张幻灯片。

示例2:自动播放和停止

在本示例中,我们将增加一个按钮,点击该按钮时停止自动播放,点击该按钮再次开始自动播放。下面是代码示例:

<button id="stop">Stop</button>

JavaScript代码:

var intervalId = null;
var stopBtn = document.getElementById('stop');

stopBtn.addEventListener('click', function() {
  if (intervalId === null) {
    intervalId = setInterval(nextSlide, 3000);
    stopBtn.innerHTML = "Stop";
  } else {
    clearInterval(intervalId);
    intervalId = null;
    stopBtn.innerHTML = "Start";
  }
});

在这个示例中,我们创建了一个变量 intervalId 来存储 setInterval() 函数的返回值。当用户单击“停止”按钮时,我们检查 intervalId 变量的值。如果为 null,则启动自动播放功能并将按钮文本更改为“停止”。如果 intervalId 变量不为 null,则停止自动播放功能并将按钮文本更改为“开始”。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生js实现轮播图的示例代码 - Python技术站

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

相关文章

  • 详谈js中数组(array)和对象(object)的区别

    详谈JS中数组(Array)和对象(Object)的区别 在JS中,数组和对象都是非常常见且重要的数据类型。它们可以用于存储和操作数据,但是它们之间有很大的区别。本攻略将详细讲解JS中数组和对象的区别,包括定义、访问和操作数组和对象。 数组(Array)是什么? JS中的数组是一种有序、可变的集合,可以存储任意类型的值,包括数字、字符串、对象等。它通过下标来…

    JavaScript 2023年5月27日
    00
  • JS中Eval解析JSON字符串的一个小问题

    当 JavaScript 中需要解析 JSON 字符串时,通常使用 JSON.parse() 方法。但是有些时候,我们可能想要使用 eval() 函数来解析 JSON 字符串。在这种情况下,有一个小问题需要注意。 问题是,如果 JSON 字符串中含有 JavaScript 关键字或保留字,eval() 函数可能会抛出一个意外的错误。因此,我们需要特别处理这种…

    JavaScript 2023年5月27日
    00
  • JS创建对象的写法示例

    以下是关于JS创建对象的写法示例的完整攻略: 什么是JS对象 JS中的对象指的是一组键值对的集合。它们通过点号或中括号访问。 1.对象字面量创建对象 // 通过字面量的方式创建一个对象 const obj = { name: "Lena", age: 25, gender: "female", sayHi: funct…

    JavaScript 2023年5月27日
    00
  • JavaScript中使用import 和require打包后实现原理分析

    JavaScript中使用import和require打包后实现原理分析: 在JavaScript中使用import和require加载模块可以使代码模块化,提高代码的可读性和重用性。这两种方式底层实现原理存在差异。 require的实现原理 require是Node.js原生提供的模块加载器。当代码中出现require语句时,Node.js会自动进行模块查…

    JavaScript 2023年5月27日
    00
  • 关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别

    关于JS中window.location.href,location.href,parent.location.href,top.location.href的用法与区别 在JavaScript中,有多种获取当前窗口URL地址的方法,其中最常见的有window.location.href、location.href、parent.location.href和t…

    JavaScript 2023年6月11日
    00
  • 详解js的六大数据类型

    下面是详解js的六大数据类型的攻略。 什么是数据类型 JavaScript 是一种动态类型语言,这意味着在使用变量之前不需要声明变量的数据类型。JavaScript 支持六种基本数据类型和一种复杂的数据类型,这篇文章将详细介绍这些数据类型。 六大数据类型 1. Number(数字) Number 是 JavaScript 中的一个基本数据类型,它表示数字。 …

    JavaScript 2023年5月28日
    00
  • JavaScript实现简单的隐藏式侧边栏功能示例

    下面是“JavaScript实现简单的隐藏式侧边栏功能示例”的完整攻略: 一、需求分析 在进行网页设计时,我们往往需要一个侧边栏(Sidebar)来承载一些较为次要的信息或者操作。但是,如果这个侧边栏总是显眼地存在于页面左侧或右侧,难免会妨碍用户的视线,影响页面的美观度。因此,我们需要一种方法来实现一个隐藏式的侧边栏,以达到在需要时展示,不需要时隐藏的效果。…

    JavaScript 2023年6月11日
    00
  • 原生JS实现数码表特效

    原生 JS 实现数码表特效攻略 概述 该攻略是使用原生 JS 实现数码表特效的完整教程。该特效是指数字从 0 变化到目标数字,即数码表翻滚特效。 实现步骤 首先,我们需要在 HTML 中创建一个数码表的结构,包括外层容器和数字容器。HTML 结构如下: <div class="counter"> <div class=&…

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