JS使用定时器与事件监听实现轮播图切换功能

JS使用定时器与事件监听实现轮播图切换功能,是一个比较常见的前端开发需求,下面是一个完整的攻略:

步骤一:HTML结构

首先,我们需要用HTML搭建轮播图的基本结构。基本上,一个轮播图的结构通常是由一个容器元素,若干个图片轮播元素和若干个轮播导航元素组成的。以下是一个典型的轮播图HTML结构示例:

<div class="slider">
    <div class="slider-wrap">
        <div class="slider-item active">
            <img src="images/1.jpg" alt="轮播图1">
        </div>
        <div class="slider-item">
            <img src="images/2.jpg" alt="轮播图2">
        </div>
        <div class="slider-item">
            <img src="images/3.jpg" alt="轮播图3">
        </div>
        <div class="slider-item">
            <img src="images/4.jpg" alt="轮播图4">
        </div>
    </div>
    <div class="slider-nav">
        <div class="nav-item active"></div>
        <div class="nav-item"></div>
        <div class="nav-item"></div>
        <div class="nav-item"></div>
    </div>
</div>

步骤二:CSS样式

接着,我们需要给轮播图添加一些样式,包括轮播图容器和轮播导航的布局样式、轮播图片的布局样式、轮播图片的切换过渡动画样式等。以下是一个基本的轮播图CSS样式示例:

.slider {
  position: relative;
  width: 500px;
  height: 300px;
  overflow: hidden;
}

.slider-wrap {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: flex-start;
  transition: transform .5s ease-in-out;
}

.slider-item {
  flex: 0 0 100%;
  width: 100%;
  height: 100%;
}

.slider-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.slider-nav {
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  justify-content: center;
  z-index: 999;
}

.nav-item {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background-color: #000;
  margin: 0 5px;
  cursor: pointer;
}

.nav-item.active {
  background-color: #fff;
}

.slider:hover .slider-nav {
  display: none;
}

步骤三:JS代码

最后,在轮播图结构和样式都设置好之后,我们需要使用JS来实现轮播图的切换功能。常用的实现方式有两种:定时器和事件监听。这里我们将介绍这两种方式的具体实现过程:

方式1:使用定时器实现轮播

使用定时器实现轮播图切换的方法,是利用setInterval()函数来实现自动切换图片。当然,我们也可以添加上清除轮播图定时器的逻辑,确保在用户操作轮播图时计时器不会继续执行。以下是一个基本的轮播图定时器实现代码示例:

const sliderWrap = document.querySelector(".slider-wrap");
const sliderItems = document.querySelectorAll(".slider-item");
const navItems = document.querySelectorAll(".nav-item");
const intervalTime = 5000; // 轮播时间间隔 5s
let currentIndex = 0;
let intervalId;

function resetClass() {
  sliderItems[currentIndex].classList.remove("active");
  navItems[currentIndex].classList.remove("active");
}

function changeSlide() {
  resetClass();
  if (currentIndex === sliderItems.length - 1) {
    currentIndex = 0;
  } else {
    currentIndex++;
  }
  sliderWrap.style.transform = `translateX(-${currentIndex * 100}%)`;
  navItems[currentIndex].classList.add("active");
  sliderItems[currentIndex].classList.add("active");
}

function startInterval() {
  intervalId = setInterval(changeSlide, intervalTime);
}

function stopInterval() {
  clearInterval(intervalId);
}

startInterval();

sliderWrap.addEventListener("mouseenter", stopInterval);
sliderWrap.addEventListener("mouseleave", startInterval);

方式2:使用事件监听实现轮播

使用事件监听实现轮播图切换的方法,是利用鼠标单击轮播导航来切换图片。当然,我们也可以添加上判断轮播导航和轮播图片的数量是否一致的逻辑,确保代码的健壮性和兼容性。以下是一个基本的轮播图事件监听实现代码示例:

const sliderWrap = document.querySelector(".slider-wrap");
const sliderItems = document.querySelectorAll(".slider-item");
const navItems = document.querySelectorAll(".nav-item");

function resetClass() {
  sliderItems.forEach((item) => {
    item.classList.remove("active");
  });
  navItems.forEach((item) => {
    item.classList.remove("active");
  });
}

function changeSlide(index) {
  resetClass();
  sliderWrap.style.transform = `translateX(-${index * 100}%)`;
  navItems[index].classList.add("active");
  sliderItems[index].classList.add("active");
}

navItems.forEach((item, index) => {
  item.addEventListener("click", () => {
    changeSlide(index);
  });
});

总结

以上就是我们使用JS使用定时器与事件监听实现轮播图切换功能的完整攻略。在实际项目中,我们还可以继续优化代码、添加上鼠标滑动切换、添加上移动端轮播图等更多交互特效和功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS使用定时器与事件监听实现轮播图切换功能 - Python技术站

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

相关文章

  • jquery+css3实现的经典弹出层效果示例

    下面是jquery+css3实现的经典弹出层效果示例的完整攻略: 一、什么是弹出层 弹出层是一个浮动在当前页面上方的布局,用于展示额外的信息、表单以及对话框等,常用于用户登录、注册、购物车、提示弹窗等。通常开发者在前端页面中使用div容器实现弹出层的效果,可以通过CSS设置弹出框的大小、位置、背景等等,而jQuery则可以方便地对弹出框进行控制。 二、利用j…

    css 2023年6月9日
    00
  • IE下css常见问题总结及解决

    IE下CSS常见问题总结及解决 问题一:盒模型不一致 问题描述 IE浏览器的盒模型与其他现代浏览器不同,根据W3C标准,盒模型由content、padding、border、margin组成,而IE浏览器中的盒模型包含border和padding部分的宽度,因此在写样式时需要特别注意。 解决方案 使用CSS3的box-sizing属性,设置值为”border…

    css 2023年6月10日
    00
  • 好的 CSS 命名规范可以节约 Debug 时间

    好的 CSS 命名规范可以让团队开发更加协调高效,并且在后期维护和扩展时能够得到更好的体验,从而减少 Debug 时间。下面是一些制定好的 CSS 命名规范,值得团队借鉴和使用: 1. BEM 命名规范 BEM 命名规范是一种结构化的、可持续的 CSS 命名方法,它的名字来源于块(Block)、元素(Element)、修饰符(Modifier)的首字母缩写。…

    css 2023年6月11日
    00
  • 微信小程序实现登录页云层漂浮的动画效果

    让我们来详细讲解“微信小程序实现登录页云层漂浮的动画效果”的完整攻略。 1. 实现思路 实现登录页云层漂浮的动画效果需要用到微信小程序的动画API和canvasAPI。 具体实现思路如下: 在登录页的wxml文件中定义一个canvas元素,用于显示背景云层。 使用微信小程序的canvasAPI,绘制若干张透明的云朵图片。 通过定时器,控制每张云朵图片的位置和…

    css 2023年6月10日
    00
  • 当鼠标经过表格数据行时颜色不同且奇偶行颜色也不同

    当鼠标经过表格数据行时,可以通过CSS样式来实现颜色不同的效果。下面给出两个示例来说明该效果的实现方法。 示例一:使用CSS伪类选择器 可以使用CSS的伪类选择器来实现当鼠标经过表格数据行时的颜色变化,同时也可以通过伪类选择器控制奇偶行的颜色不同。具体步骤如下: 首先,为表格的偶数行和奇数行分别指定不同的CSS样式。例如: table tr:nth-chil…

    css 2023年6月9日
    00
  • CSS拾遗之箭头,目录,图标的实现代码

    下面我来详细讲解一下“CSS拾遗之箭头、目录、图标的实现代码”的攻略。 CSS实现箭头 1. CSS伪元素实现箭头 可以用CSS伪元素:before和:after来实现箭头,代码如下: .arrow { position: relative; width: 50px; height: 50px; } .arrow:before, .arrow:after {…

    css 2023年6月10日
    00
  • 详解为什么设置overflow为hidden可以清除浮动带来的影响

    当一个元素内部包含浮动元素时,这个内部包含浮动元素的元素高度将会塌陷,导致该元素的高度不符合预期,在布局时可能会出现问题。 而设置overflow属性为hidden可以清除浮动带来的影响,让元素的高度正常显示,原因是:当元素的overflow属性被设置为非visible时,它会生成一个新的BFC(Block Formatting Context),而BFC具…

    css 2023年6月9日
    00
  • 十个不为人知的Photoshop文本排版工具详解

    十个不为人知的Photoshop文本排版工具详解 1. 风格预设 在Photoshop中,可以通过风格预设(Style Presets)轻松快捷地为文本添加独特的样式。选择一个文本层,点击“图层样式”(Layer Style)按钮,在弹出的面板中选择“风格预设”(Style Presets),从中选择一个你喜欢的样式即可。 2. 字母间距/字符间距 字母(字…

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