原生JS实现简单的无缝自动轮播效果

下面是“原生JS实现简单无缝自动轮播效果”的完整攻略。

确定HTML结构

在实现轮播效果之前,我们需要先确定HTML结构。一般来说,轮播图的容器是一个固定宽度的盒子,里面包含多张图片,我们可以使用ul和li标签来实现这个容器和图片的列表。

HTML结构可以如下所示:

<div class="slider">
  <ul>
    <li><img src="img1.jpg"></li>
    <li><img src="img2.jpg"></li>
    <li><img src="img3.jpg"></li>
    ...
  </ul>
</div>

CSS样式设置

接下来,我们需要为轮播图设置CSS样式。主要包括设置轮播图容器的宽度、高度、位置等属性,以及为图片设置宽度、高度、排列方式等属性。

.slider {
  position: relative;
  width: 600px;
  height: 400px;
  overflow: hidden;
}
.slider ul {
  position: absolute;
  left: 0;
  top: 0;
  width: 6000px;
}
.slider li {
  float: left;
  width: 600px;
  height: 400px;
}
.slider img {
  width: 100%;
  height: 100%;
}

JS实现无缝轮播

接下来,我们就可以使用原生JS来实现轮播效果了。具体实现步骤可以分为三步:获取元素、设置定时器、计算位置。

获取元素

首先,我们需要获取轮播图容器、图片列表和图片数量。

var slider = document.querySelector('.slider');
var sliderList = slider.querySelector('ul');
var sliderItems = sliderList.querySelectorAll('li');
var sliderItemWidth = sliderItems[0].offsetWidth;
var sliderLength = sliderItems.length;

设置定时器

然后,我们需要设置一个定时器,每隔一段时间就自动切换到下一张图片。当切换到最后一张图片时,需要将图片列表的left值设置为0,从而实现无缝轮播。

var currentSliderItem = 0;
var timer = setInterval(function() {
  var nextSliderItem = currentSliderItem + 1;
  if (nextSliderItem === sliderLength) {
    sliderList.style.left = 0;
    currentSliderItem = 0;
    nextSliderItem = 1;
  }
  var sliderOffsetLeft = -(nextSliderItem * sliderItemWidth);
  sliderList.style.left = sliderOffsetLeft + 'px';
  currentSliderItem++;
}, 3000);

计算位置

最后,我们需要计算当前要切换到的图片的位置,将列表容器的left值设置为相应的负值即可实现图片的切换。

var nextSliderItem = currentSliderItem + 1;
if (nextSliderItem === sliderLength) {
  sliderList.style.left = 0;
  currentSliderItem = 0;
  nextSliderItem = 1;
}
var sliderOffsetLeft = -(nextSliderItem * sliderItemWidth);
sliderList.style.left = sliderOffsetLeft + 'px';
currentSliderItem++;

示例说明

下面,我们以两个示例说明如何使用原生JS来实现简单的无缝轮播效果。

示例1:

<div class="slider">
  <ul>
    <li><img src="img1.jpg"></li>
    <li><img src="img2.jpg"></li>
    <li><img src="img3.jpg"></li>
    <li><img src="img4.jpg"></li>
    <li><img src="img5.jpg"></li>
  </ul>
</div>
.slider {
  position: relative;
  width: 400px;
  height: 300px;
  overflow: hidden;
}
.slider ul {
  position: absolute;
  left: 0;
  top: 0;
  width: 2000px;
}
.slider li {
  float: left;
  width: 400px;
  height: 300px;
}
.slider img {
  width: 100%;
  height: 100%;
}
var slider = document.querySelector('.slider');
var sliderList = slider.querySelector('ul');
var sliderItems = sliderList.querySelectorAll('li');
var sliderItemWidth = sliderItems[0].offsetWidth;
var sliderLength = sliderItems.length;

var currentSliderItem = 0;
var timer = setInterval(function() {
  var nextSliderItem = currentSliderItem + 1;
  if (nextSliderItem === sliderLength) {
    sliderList.style.left = 0;
    currentSliderItem = 0;
    nextSliderItem = 1;
  }
  var sliderOffsetLeft = -(nextSliderItem * sliderItemWidth);
  sliderList.style.left = sliderOffsetLeft + 'px';
  currentSliderItem++;
}, 3000);

示例2:

<div class="slider">
  <ul>
    <li><img src="img1.jpg"></li>
    <li><img src="img2.jpg"></li>
    <li><img src="img3.jpg"></li>
  </ul>
</div>
.slider {
  position: relative;
  width: 600px;
  height: 400px;
  overflow: hidden;
}
.slider ul {
  position: absolute;
  left: 0;
  top: 0;
  width: 1800px;
}
.slider li {
  float: left;
  width: 600px;
  height: 400px;
}
.slider img {
  width: 100%;
  height: 100%;
}
var slider = document.querySelector('.slider');
var sliderList = slider.querySelector('ul');
var sliderItems = sliderList.querySelectorAll('li');
var sliderItemWidth = sliderItems[0].offsetWidth;
var sliderLength = sliderItems.length;

var currentSliderItem = 0;
var timer = setInterval(function() {
  var nextSliderItem = currentSliderItem + 1;
  if (nextSliderItem === sliderLength) {
    sliderList.style.left = 0;
    currentSliderItem = 0;
    nextSliderItem = 1;
  }
  var sliderOffsetLeft = -(nextSliderItem * sliderItemWidth);
  sliderList.style.left = sliderOffsetLeft + 'px';
  currentSliderItem++;
}, 3000);

以上就是“原生JS实现简单无缝自动轮播效果”的完整攻略,希望对您有所帮助。

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

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

相关文章

  • JavaScript的八种数据类型

    JavaScript的八种数据类型 JavaScript 的数据类型共分为 8 种,分别为: 原始类型:number、string、boolean、null、undefined、Symbol 引用类型:Object 原始类型 原始类型的值是简单的数据段,可以直接存储在变量中。 1. number 数字类型 尽管 JavaScript 中只有一种数字类型,但是…

    JavaScript 2023年5月18日
    00
  • 《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法

    《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法 什么是JavaScript? JavaScript 是一种用于 Web 上的编程语言。它用于为 web 页面添加交互性和动态效果。JavaScript 通常通过在网页上嵌入脚本来实现: <script type="text/javascript">…

    JavaScript 2023年5月18日
    00
  • 各种页面定时跳转(倒计时跳转)代码总结

    “各种页面定时跳转(倒计时跳转)代码总结”是一个非常常见的前端需求,现在我来为大家介绍如何实现这个功能。 前置知识 在学习页面定时跳转之前,需要先了解一些前置知识: HTML 与 CSS的编写与使用; JS的基础语法和基本操作; 对定时器的理解以及使用方法。 分别实现普通定时跳转和倒计时跳转 实现普通定时跳转 普通定时跳转也就是固定时间内跳转,可以通过以下代…

    JavaScript 2023年6月11日
    00
  • JavaScript中的时间处理小结

    下面是关于“JavaScript中的时间处理小结”的完整攻略: JavaScript中的时间处理小结 时间格式化 在JavaScript中,我们可以使用Date对象进行时间的处理。Date对象提供了一系列方法,可以方便地进行时间格式化。 下面是一些常用的时间格式化方法: 1. 获取时间戳 getTime()方法可以获取时间戳,时间戳是指从1970年1月1日0…

    JavaScript 2023年5月27日
    00
  • js 字符串反转(倒序)的几种方式总结

    JS 字符串反转(倒序)的几种方式总结 在 JavaScript 中,我们可以对字符串进行反转,也就是将字符串中字符的顺序倒过来,从而得到反转后的字符串。本文将会总结几种在 JavaScript 中实现字符串反转操作的方法。 方法一:逐个字符拼接字符串 首先,我们可以循环遍历原字符串,并逐个将字符拼接成新的反转后的字符串。具体实现如下: function r…

    JavaScript 2023年5月28日
    00
  • javascript基础的动画教程,直观易懂

    Javascript基础动画教程 在本文中,我们将详细介绍Javascript动画的基础知识。这些知识将帮助你创建直观易懂的动画效果,使你的网页更加生动活泼。 动画基础知识 在Javascript动画中,我们通常使用以下基础知识: 1. 定时器 定时器在Javascript动画中起到很重要的作用。使用定时器,我们可以按照预定的时间间隔执行特定的代码。一般来说…

    JavaScript 2023年6月10日
    00
  • JSP清除页面缓存常用方法小结

    JSP清除页面缓存常用方法小结 在JSP页面开发的过程中,我们有时会遇到页面缓存的问题。也就是说,我们修改了JSP页面的代码,但打开网页时,发现更改并没有生效。这是因为浏览器会缓存已下载的页面内容。那么,如何清除JSP页面的缓存呢?下面是常用的方法: 1. 通过设置HTTP响应头来禁用浏览器缓存 可以在 JSP 页面中添加以下代码: <% respon…

    JavaScript 2023年6月11日
    00
  • 使用javascript将时间转换成今天,昨天,前天等格式

    下面是使用 JavaScript 将时间转换成“今天”,“昨天”,“前天”等格式的攻略: 1. 获取时间戳 首先需要获取要转换的时间戳。时间戳是一个整数,表示自1970年1月1日 00:00:00 UTC起经过的毫秒数。可以使用 JavaScript 中的Date对象的getTime()方法获取当前时间的时间戳,如下所示: const timestamp =…

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