原生JS实现图片轮播切换效果

下面是“原生JS实现图片轮播切换效果”的完整攻略。

什么是图片轮播切换效果?

图片轮播切换效果是指在网页上展示一组图片,并在规定的时间间隔内自动切换图片或者在用户交互的作用下手动切换图片。图片轮播切换效果是Web前端页面设计中常用的一个功能。

使用原生JS实现图片轮播切换效果,需要做哪些工作?

使用原生JS实现图片轮播切换效果需要做以下几个步骤:

  1. 创建包含多个图片的HTML结构,并通过CSS样式对其进行布局和样式设置;
  2. 通过JS获取需要操作的DOM元素,例如图片容器、图片列表、左右切换按钮等;
  3. 给左右切换按钮绑定事件,实现图片的手动切换;
  4. 使用定时器设置图片自动切换功能;
  5. 编写JS函数实现图片的切换和初始化等功能。

示例一:原生JS实现基本图片轮播切换效果

以下代码实现了一个基本的图片轮播切换效果。点击左右切换按钮可以切换图片。其中,container为图片容器,imgs为图片列表,prev为上一页按钮,next为下一页按钮。该示例采用定位和透明度变化方案,使当前图片逐渐出现,未选中图片逐渐消失的效果。

<div class="container">
  <img src="img1.jpg" />
  <img src="img2.jpg" />
  <img src="img3.jpg" />
  <img src="img4.jpg" />
</div>

<button class="prev">上一页</button>
<button class="next">下一页</button>
.container {
  position: relative;
}

.container img {
  position: absolute;
  top: 0;
  left: 0;
  opacity: 0;
  transition: opacity 1s ease;
}

.container img.active {
  opacity: 1;
}

.prev,
.next {
  position: absolute;
  top: 50%;
  margin-top: -20px;
  width: 40px;
  height: 40px;
  background-color: rgba(0, 0, 0, 0.3);
  border: none;
  color: #fff;
  cursor: pointer;
}

.prev {
  left: 0;
}

.next {
  right: 0;
}
var container = document.querySelector('.container');
var imgs = container.querySelectorAll('img');
var prev = document.querySelector('.prev');
var next = document.querySelector('.next');

var activeIndex = 0;
var timer = null;

function setActive(index) {
  for (var i = 0; i < imgs.length; i++) {
    imgs[i].classList.remove('active');
  }
  imgs[index].classList.add('active');
}

function showPrev() {
  activeIndex--;
  if (activeIndex < 0) {
    activeIndex = imgs.length - 1;
  }
  setActive(activeIndex);
}

function showNext() {
  activeIndex++;
  if (activeIndex >= imgs.length) {
    activeIndex = 0;
  }
  setActive(activeIndex);
}

prev.addEventListener('click', function() {
  showPrev();
});

next.addEventListener('click', function() {
  showNext();
});

setActive(activeIndex);

timer = setInterval(function() {
  showNext();
}, 3000);

示例二:原生JS实现无限循环图片轮播切换

以下代码实现了无限循环图片轮播切换。在左右切换时,可以实现无限循环切换。

<div class="container">
  <img src="img1.jpg" />
  <img src="img2.jpg" />
  <img src="img3.jpg" />
  <img src="img4.jpg" />
  <img src="img1.jpg" />
  <img src="img2.jpg" />
  <img src="img3.jpg" />
  <img src="img4.jpg" />
</div>

<button class="prev">上一页</button>
<button class="next">下一页</button>
.container {
  position: relative;
  width: 400%;
  transform: translateX(0);
}

.container img {
  position: absolute;
  top: 0;
  left: 0;
  width: 25%;
  opacity: 0;
  transition: opacity 1s ease, transform 1s ease;
}

.container img.active {
  opacity: 1;
  transform: translateX(-25%);
}

.prev,
.next {
  position: absolute;
  top: 50%;
  margin-top: -20px;
  width: 40px;
  height: 40px;
  background-color: rgba(0, 0, 0, 0.3);
  border: none;
  color: #fff;
  cursor: pointer;
}

.prev {
  left: 0;
}

.next {
  right: 0;
}
var container = document.querySelector('.container');
var imgs = container.querySelectorAll('img');
var prev = document.querySelector('.prev');
var next = document.querySelector('.next');

var activeIndex = 0;
var timer = null;

function setActive(index) {
  for (var i = 0; i < imgs.length; i++) {
    imgs[i].classList.remove('active');
  }
  imgs[index].classList.add('active');
}

function showPrev() {
  activeIndex--;
  if (activeIndex < 0) {
    activeIndex = imgs.length / 4 - 1;
  }
  container.style.transform = 'translateX(-' + activeIndex * 25 + '%)';
  setActive(activeIndex);
}

function showNext() {
  activeIndex++;
  if (activeIndex >= imgs.length / 4) {
    activeIndex = 0;
  }
  container.style.transform = 'translateX(-' + activeIndex * 25 + '%)';
  setActive(activeIndex);
}

prev.addEventListener('click', function() {
  showPrev();
});

next.addEventListener('click', function() {
  showNext();
});

setActive(activeIndex);

timer = setInterval(function() {
  showNext();
}, 3000);

以上就是使用原生JS实现图片轮播切换效果的完整攻略。

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

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

相关文章

  • bootstrap响应式工具使用详解

    Bootstrap响应式工具使用详解 Bootstrap是一种常用的HTML、CSS、JavaScript框架,提供了多种工具和组件,其中响应式工具能够使你的页面自适应不同设备的屏幕尺寸。 响应式网格系统 响应式网格系统提供了一种将页面分为12列的布局方式,可以方便地控制页面布局在不同设备上的表现。以下是一个例子: <div class="c…

    css 2023年6月11日
    00
  • 详解jQuery的核心函数和事件处理

    详解jQuery的核心函数和事件处理 jQuery是一个非常流行的JavaScript库,可以大幅度地简化JavaScript代码的编写。其中,最常用的就是jQuery的核心函数和事件处理函数。本文将对其进行详细讲解。 jQuery的核心函数 jQuery的核心函数是“$”(也可以使用“jQuery”),它是查询文档中元素的主要工具。它的语法如下: $(se…

    css 2023年6月10日
    00
  • 详解vue+css3做交互特效的方法

    下面我就来详细讲解一下“详解vue+css3做交互特效的方法”的完整攻略。 1. 首先安装Vue 要使用Vue进行开发,我们需要先安装Vue。可以通过npm或CDN来安装,这里我使用npm的方式来进行安装: npm install vue Vue文档中也提供了CDN的方式来安装Vue,可根据自己的需要选择。 2. 创建Vue实例 安装好Vue之后,我们就可以…

    css 2023年6月10日
    00
  • 利用UL、Li+CSS属性制作无表格实用菜单导航效果

    关于“利用UL、Li+CSS属性制作无表格实用菜单导航效果”的攻略,我将从以下几个方面进行介绍: 基本思路 HTML和CSS代码示例 注意事项和优化建议 1. 基本思路 制作无表格实用菜单导航效果的基本思路是利用HTML的无序列表<ul>和列表项<li>元素,结合CSS属性,实现导航菜单的样式美化和交互体验。 具体而言,我们可以将菜单…

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

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

    css 2023年6月11日
    00
  • css两端对齐之div+css布局实现2端对齐的4种方法总结

    对于“css两端对齐之div+css布局实现2端对齐的4种方法总结”,我来为您进行详细的讲解。 一、前言 首先需要明确的是,“两端对齐”是指左边和右边都达到同一行,且左右两端的内容分别左对齐、右对齐,并且中间的空隙等宽。 二、方法总结 以下是4种方法总结: flex布局 使用flex布局方式比较简单直观,可以通过设置父容器display属性为flex,利用j…

    css 2023年6月10日
    00
  • CSS教程之div垂直居中的多种方法

    下面是关于CSS中div垂直居中的多种方法的完整攻略。 方法一:使用flex布局 在CSS3中,flex布局提供了一种简单且有效的垂直居中方法。可以通过以下步骤实现: 将父元素的display属性设置为flex 将父元素的justify-content和align-items属性都设置为center,即水平居中和垂直居中。 示例如下: <style&g…

    css 2023年6月10日
    00
  • CSS里的各种水平垂直居中基础写法心得总结

    关于“CSS里的各种水平垂直居中基础写法心得总结”的攻略,我将在以下几个方面进行详细讲解: margin和transform实现水平垂直居中 对于一个已知宽高的元素,我们可以使用以下代码实现水平垂直居中: .element { position: relative; } .element-child { position: absolute; top: 50…

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