原生JS实现简单的轮播图效果

下面是“原生JS实现简单的轮播图效果”的攻略:

一、准备工作

  1. 编写HTML结构:轮播图容器、图片容器、图片等元素
  2. 样式设置:轮播图容器宽高、图片容器宽高、图片绝对定位、过渡效果、按钮样式等

示例代码:

<div id="carousel">
  <div id="slider">
    <img src="image1.png" alt="Image 1">
    <img src="image2.png" alt="Image 2">
    <img src="image3.png" alt="Image 3">
  </div>
  <div id="prevBtn" class="btn">Prev</div>
  <div id="nextBtn" class="btn">Next</div>
</div>
#carousel {
  position: relative;
  width: 800px;
  height: 400px;
  overflow: hidden;
}

#slider {
  position: absolute;
  width: 2400px;
  height: 400px;
  left: 0;
  transition: all 0.3s ease;
}

#slider img {
  float: left;
  width: 800px;
  height: 400px;
}

.btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 50px;
  height: 50px;
  line-height: 50px;
  text-align: center;
  color: #fff;
  background-color: #000;
  cursor: pointer;
}

#prevBtn {
  left: 0;
}

#nextBtn {
  right: 0;
}

二、实现轮播图切换

  1. 监听“下一个”和“上一个”按钮的点击事件
  2. 根据当前轮播图显示的索引,计算下一个图片展示的位置
  3. 对轮播图容器应用CSS过渡效果,使图片过渡到新位置

示例代码:

var currentSlide = 0;
var slider = document.getElementById('slider');
var slides = slider.getElementsByTagName('img');
var prevBtn = document.getElementById('prevBtn');
var nextBtn = document.getElementById('nextBtn');

prevBtn.onclick = function() {
  showSlide(currentSlide - 1);
};

nextBtn.onclick = function() {
  showSlide(currentSlide + 1);
};

function showSlide(index) {
  if (index < 0) {
    index = slides.length - 1;
  } else if (index >= slides.length) {
    index = 0;
  }
  currentSlide = index;
  var distance = -currentSlide * 800;
  slider.style.transform = 'translateX(' + distance + 'px)';
}

三、实现自动轮播

  1. 使用定时器设置时间间隔,轮播图切换到下一个
  2. 在切换到最后一张图片的时候回到第一张图片循环播放

示例代码:

var currentSlide = 0;
var slider = document.getElementById('slider');
var slides = slider.getElementsByTagName('img');
var prevBtn = document.getElementById('prevBtn');
var nextBtn = document.getElementById('nextBtn');
var intervalId = setInterval(function() {
  showSlide(currentSlide + 1);
}, 3000);

prevBtn.onclick = function() {
  clearInterval(intervalId);
  showSlide(currentSlide - 1);
  intervalId = setInterval(function() {
    showSlide(currentSlide + 1);
  }, 3000);
};

nextBtn.onclick = function() {
  clearInterval(intervalId);
  showSlide(currentSlide + 1);
  intervalId = setInterval(function() {
    showSlide(currentSlide + 1);
  }, 3000);
};

function showSlide(index) {
  if (index < 0) {
    index = slides.length - 1;
  } else if (index >= slides.length) {
    index = 0;
  }
  currentSlide = index;
  var distance = -currentSlide * 800;
  slider.style.transform = 'translateX(' + distance + 'px)';
}

这是一个基础的轮播图实现方案,可以根据需求进行调整和优化。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生JS实现简单的轮播图效果 - Python技术站

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

相关文章

  • javaScript中with函数用法实例分析

    JavaScript中with函数用法实例分析 with函数是JavaScript中的一个特殊函数,用来简化代码编写。尽管with函数的用法看起来很简单,但是使用不当可能会导致代码混乱,因此在使用with函数时需要谨慎。 本文将从以下方面详细讲解with函数的用法,包括: with函数的用法 with函数的实例分析 with函数的用法 with函数的语法: …

    JavaScript 2023年6月10日
    00
  • javascript 数组(list)添加/删除的实现

    下面是关于 JavaScript 数组添加/删除的实现攻略。 添加元素 使用 push() 方法 使用数组对象的 push() 方法可以实现末尾添加元素的功能。语法如下: arrayObject.push(element1, …, elementN) 示例: var fruits = ["Banana", "Orange&q…

    JavaScript 2023年5月27日
    00
  • JavaScript获取服务器时间的方法详解

    JavaScript获取服务器时间的方法详解 在Web开发中,有时需要获取服务器的时间,在前端使用JavaScript编写代码时,通常会用到一些方法来获取该时间。本文将会介绍获取服务器时间的常用方法,供前端开发者参考和使用。 1. 使用XMLHttpRequest对象获取服务器时间 XMLHttpRequest可以通过异步的方式请求服务器上的一个文本文件,该…

    JavaScript 2023年5月28日
    00
  • 详解JavaScript编程中的数组结构

    详解JavaScript编程中的数组结构 数组是JavaScript编程中常用的一种数据结构,它可以存储一组有序的数据,并通过索引来访问其中的元素。在JavaScript中,数组可以存储任何类型的数据,包括数字、字符串、对象等。 数组的创建 JavaScript中可以通过下面几种方式来声明并创建一个数组: 使用数组字面量 var fruits = [‘app…

    JavaScript 2023年5月27日
    00
  • 用javascript父窗口控制只弹出一个子窗口

    要实现父窗口控制只弹出一个子窗口,需要满足以下几个步骤: 在父窗口中定义一个全局变量,用于保存打开的子窗口对象。 在打开子窗口的函数中,先判断全局变量是否为空。如果为空,说明没有打开过子窗口,那么创建新的子窗口对象并赋值给全局变量。如果不为空,说明已经存在子窗口,那么判断子窗口是否关闭,如果关闭,则再次创建新的子窗口对象并赋值给全局变量;如果没有关闭,则聚焦…

    JavaScript 2023年6月11日
    00
  • JavaScript中读取和保存文件实例

    要在JavaScript中读取和保存文件,需要使用File API。File API是在Web应用程序中读取、创建和更新文件或文件的元数据的API。 读取本地文件 要读取本地文件,需要一个文件输入元素。可以使用以下代码创建文件输入元素: <input type="file" id="file-input">…

    JavaScript 2023年5月27日
    00
  • 解决vue中使用history.replaceState 更改url vue router 无法感知的问题

    在Vue Router中,要想改变URL但不重新加载页面,可以使用history.pushState()或history.replaceState()方法。但有时使用history.replaceState()方法更改URL后,Vue Router可能无法感知URL的改变,从而不会更新视图,这可能是由于缺少路由监视或未调用Vue Router API的原因。…

    JavaScript 2023年6月11日
    00
  • 学习LayUI时自研的表单参数校验框架案例分析

    下面是“学习LayUI时自研的表单参数校验框架案例分析”的完整攻略: 学习LayUI时自研的表单参数校验框架案例分析 前言 LayUI是一款基于jQuery的UI库,广泛应用于前端开发中。其提供了丰富的组件和插件,方便快捷地构建Web界面。在使用LayUI过程中,表单参数校验是绕不过去的一个步骤,为此我们研发了一套表单校验框架,下面将详细介绍我们的研发过程和…

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