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

yizhihongxing

让我们一步步讲解如何使用原生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 Element Traversal规范中的元素遍历方法

    JS Element Traversal规范在DOM操作中提供了一些方便的元素遍历方法,能够帮助我们更方便地查找或操作页面元素。 其中主要包括以下几个方法: children element.children方法会返回指定元素的所有子元素节点,不包含文本节点或注释节点。 示例: <div id="parent"> <p&…

    JavaScript 2023年6月10日
    00
  • Javascript延迟执行实现方法(setTimeout)

    下面是关于Javascript延迟执行实现方法(setTimeout)的详细讲解。 简介 JavaScript中的setTimeout()方法是用于在一定时间后执行指定的函数或一段代码。常用于实现延迟执行、定时器等功能。 语法格式 setTimeout(function, milliseconds, arg1, arg2, …); function:必需…

    JavaScript 2023年5月27日
    00
  • 使用JavaScript构建JSON格式字符串实现步骤

    构建JSON格式字符串是常见的前端开发任务,使用JavaScript可以方便地生成符合标准的JSON格式字符串。以下是使用JavaScript构建JSON格式字符串的完整攻略。 步骤 定义要转换成JSON格式字符串的JavaScript对象。 使用JSON.stringify()方法将JavaScript对象转换成JSON格式字符串。 根据需要使用该JSON…

    JavaScript 2023年5月19日
    00
  • JavaScript中数组去重的5种方法

    “JavaScript中数组去重的5种方法”是一个常见的问题,本文将详细讲解五种不同的去重方法。 方法一:使用ES6的Set ES6中新增的Set是一种数据结构,可以用于存储任何类型的唯一值。我们可以使用Set去重一个数组,然后再将其转换为数组类型。 let arr = [1, 2, 2, 3, 3, 4, 5]; let uniqueArr = Array…

    JavaScript 2023年5月27日
    00
  • JavaScript实现简单购物小表格

    下面是“JavaScript实现简单购物小表格”的完整攻略: 1.准备工作 在HTML中,首先要准备一个表格元素,代码如下: <table> <thead> <tr> <th>商品</th> <th>价格</th> <th>数量</th> <th…

    JavaScript 2023年6月11日
    00
  • [asp]阿里西西的alexa采集效果代码

    [asp]阿里西西的alexa采集效果代码 简介 本篇攻略主要介绍如何使用阿里西西的alexa采集效果代码来获取Alexa排名数据。使用该代码可以方便地获取网站的国内和全球排名数据,且不需要使用Alexa API或第三方库。 准备工作 在使用该代码前,需要完善以下几个步骤: 首先需要申请上线的API Key,可以在阿里西西官网上进行申请:https://ww…

    JavaScript 2023年6月10日
    00
  • js表单元素checked、radio被选中的几种方法(详解)

    当我们需要在Web页面中收集用户输入时,表单是不可缺少的工具之一。而表单元素中的checkbox和radio这两种类型的输入框对于选项的选择有着重要的作用。然而,如何通过JavaScript获取选中的checkbox或radio的值呢?下面我们将详细讲解这个问题。 1. checked属性 对于单个的checkbox,我们可以通过其checked属性来检查其…

    JavaScript 2023年6月10日
    00
  • JavaScript中的函数式编程详解

    JavaScript中的函数式编程详解 函数式编程是一种编程范式,它将控制状态和变化的副作用最小化,并强调使用函数来解决问题。在JavaScript中,函数作为第一类对象已广泛使用,这使得函数式编程成为编写可维护和可扩展代码的理想选择。 特点 函数式编程有以下几个特点: 函数是一等公民,可以作为变量传递和返回值 纯函数,不改变外部状态,也不受全局状态的影响 …

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