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

yizhihongxing

下面是“原生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日

相关文章

  • 用ul li实现边框重合并附带鼠标经过效果

    要使用ul和li标签实现边框重叠,并附带鼠标经过效果,可以按照以下步骤进行操作: 创建一个无序列表ul,并添加需要展示的内容,例如: <ul> <li>菜单1</li> <li>菜单2</li> <li>菜单3</li> </ul> 使用CSS对ul和li进行样式…

    css 2023年6月10日
    00
  • javascript实现俄罗斯方块游戏的思路和方法

    实现俄罗斯方块游戏一般需要以下几个步骤: 1. 界面搭建 首先需要在页面上创建一个游戏画布,使用 canvas 标签元素可以很好地实现这一效果。然后需要设置画布的宽高,并使用一个二维数组来代表游戏的网格。每个网格可以对应一个小方块。 示例代码: <canvas id="canvas" width="400" he…

    css 2023年6月9日
    00
  • CSS教程:可扩展圆角标签的实现方法

    当然,我可以为你提供对于“CSS教程:可扩展圆角标签的实现方法”的完整攻略。 CSS教程:可扩展圆角标签的实现方法 什么是可扩展圆角标签? 可扩展标签是一种受CSS属性控制而具有动态大小和形状的HTML元素。在本教程中,我们使用的可扩展标签是具有圆角边框的矩形。 如何实现可扩展圆角标签? 要实现可扩展圆角标签,我们需要使用CSS中的border-radius…

    css 2023年6月9日
    00
  • swiper+echarts实现多个仪表盘左右滚动效果

    下面详细介绍如何使用swiper和echarts实现多个仪表盘左右滚动效果的攻略。 一、安装swiper和echarts 在项目根目录下使用npm命令安装swiper和echarts: npm install swiper echarts 此处使用的是官方提供的npm安装方式,也可以使用其他方式如CDN等。 二、创建swiper容器和echarts容器 在H…

    css 2023年6月10日
    00
  • HTML中的表单Form实现居中效果

    下面就来详细讲解一下HTML中的表单Form实现居中效果的完整攻略。 1. 使用CSS实现表单居中 表单元素默认是不会居中的,但是我们可以借助CSS来实现表单的居中效果。具体步骤如下: 创建一个包含表单的容器元素,并设置容器元素的宽度以及 margin 属性来实现居中效果。 <div class="form-container"&g…

    css 2023年6月10日
    00
  • 用css添加手状样式鼠标移上去变小手

    可以通过设置CSS样式来改变鼠标的样式,当鼠标经过具有此样式的元素时,鼠标会变成手状样式,给用户提供视觉上的反馈。下面是一些示例来帮助您理解如何添加手状样式。 方法一:使用 cursor 属性设置鼠标样式 可以使用 cursor 属性来更改鼠标指针的样式,例如: .hand { cursor: pointer; } 上面的示例代码中,定义了一个 .hand …

    css 2023年6月10日
    00
  • 在 Vue 中编写 SVG 图标组件的方法

    下面是详细讲解“在 Vue 中编写 SVG 图标组件的方法”的完整攻略。本攻略适用于 Vue 2.x 版本。 准备工作 创建项目 首先,我们需要创建一个新的 Vue 项目。在命令行中,通过如下命令来创建: vue create my-project 使用该命令创建一个新的 Vue 项目。如果您已经安装了 Vue CLI,那么您将会看到 CLI 提供了许多选项…

    css 2023年6月10日
    00
  • JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好…的验证)

    要实现JavaWeb表单的及时验证功能,在输入后立即验证,需要使用JavaScript技术。具体实现步骤如下: 1.编写HTML页面,定义表单元素。表单需要使用form标签包含所有表单元素。 2.在表单元素上添加事件监听器,使用JavaScript监听表单元素的onblur事件。onblur事件会在元素失去焦点时触发。 3.在事件监听器中,编写验证函数。例如…

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