原生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日

相关文章

  • CSS3与动画有关的属性transition、animation、transform对比(史上最全版)

    CSS3与动画有关的属性transition、animation、transform对比(史上最全版) 1. transition属性 transition属性是CSS3新特性,用于设定样式过渡效果,在原样式和新样式之间添加过渡动画。它需要指定过渡的属性、过渡的时间以及过渡的方式。过渡的属性可以是任意一个CSS属性,过渡时间可以是秒或毫秒,过渡方式可以是线性…

    css 2023年6月9日
    00
  • CSS 自动定位 的应用

    下面是关于CSS自动定位的应用的完整攻略。 什么是CSS自动定位 CSS自动定位是指,使用CSS样式以及HTML结构,在不用设置具体数值的情况下,让元素自动定位到正确的位置上。这种定位方式具有灵活、简单的特点,可以在实现网站布局时起到很好的辅助作用。 如何使用CSS自动定位 1. CSS Flex布局 CSS Flex布局是一种强大的自动定位方式,可以帮助我…

    css 2023年6月10日
    00
  • jQuery 实现图片的依次加载图片功能

    实现图片的依次加载是常见的需求,可以通过jQuery实现图片的按需加载,提升网站的加载速度和用户的体验。下面是实现该功能的完整攻略。 步骤一:引入 jQuery 首先需要在HTML页面中引入jQuery库,可以通过CDN引入: <script src="https://cdn.staticfile.org/jquery/3.5.1/jquer…

    css 2023年6月10日
    00
  • CSS设置边框方法详解

    CSS边框是指在HTML元素周围创建一个线条或区域,以便突出显示该元素。 在CSS中,可用以下属性控制元素的边框样式、颜色和宽度: border-style:指定边框样式(solid、dotted、dashed、double等等) border-color:指定边框颜色 border-width:指定边框宽度 border-top-style、border-…

    Web开发基础 2023年3月20日
    00
  • 浏览器特定的CSS Hacks汇总

    浏览器特定的CSS Hacks是指通过CSS的特殊语法规则,在不同的浏览器中实现相同的样式效果。这种做法在某些特定情况下可以解决浏览器兼容性问题,但是需要谨慎使用,并且应该尽量避免使用。因为它可能会导致代码难以维护和升级,并且可能会引发其他和兼容性无关的问题。 下面我将详细讲解浏览器特定的CSS Hacks的完整攻略: 发现兼容性问题 首先,我们需要发现哪些…

    css 2023年6月10日
    00
  • HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用

    下面是详细的讲解“HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用”的完整攻略。 1. 介绍 SVG(Scalable Vector Graphics)可以被用来创建图表、图标、地图和其他复杂的图形,也可以应用于基于XML(Extensible Markup Language)的文档中。蒙板(mask)是SVG中一个很重要的元素,可以用来指定一个…

    css 2023年6月9日
    00
  • 详细了解CSS中的class与id区别及用法

    在 CSS 中,class 和 id 是两个常用的选择器,用于选择 HTML 元素并为其应用样式。下面是一个完整攻略,包含了如何了解 CSS 中的 class 和 id 的区别及用法的过程和两个示例说明。 class 和 id 的区别 class class 是一种用于标识 HTML 元素的选择器。它可以被多个元素使用,并且一个元素可以拥有多个 class。…

    css 2023年5月18日
    00
  • 老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)

    获取CSS样式是JavaScript中常见的操作,但在不同的浏览器中会有些许差异。下文将介绍兼容各浏览器的JavaScript获取CSS样式的方法,其中包括元素内联样式、内部样式和外部样式。 获取元素内联样式 元素内联样式指的是在HTML标签内用style属性设置的样式。获取该样式的方式如下: var element = document.getElemen…

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