原生js实现图片层叠轮播切换效果

让我来详细讲解一下“原生js实现图片层叠轮播切换效果”的完整攻略:

1. 准备工作

在开始编写代码之前,需要进行一些准备工作:

1.1 编写 HTML 结构

首先需要编写 HTML 结构,包含轮播图容器、图片容器、轮播点容器等元素,示例代码如下:

<div class="swiper-container">
  <div class="swiper-wrapper">
    <div class="swiper-slide"><img src="image1.jpg"></div>
    <div class="swiper-slide"><img src="image2.jpg"></div>
    <div class="swiper-slide"><img src="image3.jpg"></div>
  </div>
  <div class="swiper-pagination"></div>
</div>

1.2 初始化样式

为了方便样式的处理,需要先对容器元素进行初始化样式,示例代码如下:

.swiper-container {
  position: relative;
  overflow: hidden;
}
.swiper-wrapper {
  position: relative;
  width: 100%;
  height: 100%;
}
.swiper-slide {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  transition: opacity .6s ease-out;
}
.swiper-slide-active {
  opacity: 1;
  z-index: 1;
}

2. 编写 JavaScript

接下来开始编写 JavaScript 代码,实现图片层叠轮播切换效果。

2.1 获取元素

首先需要获取到容器元素、图片容器、轮播点容器等元素,示例代码如下:

const swiperContainer = document.querySelector('.swiper-container');
const swiperWrapper = document.querySelector('.swiper-wrapper');
const swiperSlides = document.querySelectorAll('.swiper-slide');
const pagination = document.querySelector('.swiper-pagination');

2.2 初始化参数

接着需要初始化各种参数,包括图片数量、当前下标、自动轮播间隔时间等,示例代码如下:

const slideCount = swiperSlides.length;
let currentIndex = 0;
let timer = null;
const interval = 3000;

2.3 编写切换函数

然后需要编写图片切换函数,包括切换时的位移、透明度、轮播点等操作,示例代码如下:

function goToSlide(index) {
  if (index < 0) {
    index = slideCount - 1;
  } else if (index >= slideCount) {
    index = 0;
  }
  swiperWrapper.style.transform = `translate3d(-${index * 100}%, 0, 0)`;
  swiperSlides[currentIndex].classList.remove('swiper-slide-active');
  swiperSlides[index].classList.add('swiper-slide-active');
  currentIndex = index;
  updatePagination();
}

2.4 编写自动轮播函数

还需要编写自动轮播函数,实现定时调用图片切换函数,示例代码如下:

function startAutoPlay() {
  timer = setInterval(function() {
    goToSlide(currentIndex + 1);
  }, interval);
}

function stopAutoPlay() {
  clearInterval(timer);
}

2.5 编写轮播点操作函数

最后需要编写轮播点操作函数,实现点击轮播点时切换到对应的图片,示例代码如下:

function updatePagination() {
  pagination.innerHTML = '';
  for (let i = 0; i < slideCount; i++) {
    const li = document.createElement('li');
    li.classList.add('pagination-item');
    if (i === currentIndex) {
      li.classList.add('active');
    }
    li.addEventListener('click', function() {
      stopAutoPlay();
      goToSlide(i);
      startAutoPlay();
    });
    pagination.appendChild(li);
  }
}

3. 完整示例

下面是完整的示例代码,可以直接运行在浏览器中:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>原生js实现图片层叠轮播切换效果</title>
  <style>
    .swiper-container {
      position: relative;
      overflow: hidden;
      width: 500px;
      height: 300px;
    }
    .swiper-wrapper {
      position: relative;
      width: 100%;
      height: 100%;
    }
    .swiper-slide {
      position: absolute;
      left: 0;
      top: 0;
      width: 100%;
      height: 100%;
      opacity: 0;
      transition: opacity .6s ease-out;
    }
    .swiper-slide-active {
      opacity: 1;
      z-index: 1;
    }
    .swiper-pagination {
      position: absolute;
      left: 50%;
      bottom: 20px;
      transform: translateX(-50%);
      display: flex;
    }
    .pagination-item {
      margin: 0 10px;
      width: 10px;
      height: 10px;
      border-radius: 50%;
      background: #ccc;
      cursor: pointer;
      transition: background .3s ease-out;
    }
    .pagination-item.active {
      background: #333;
    }
  </style>
</head>
<body>
  <div class="swiper-container">
    <div class="swiper-wrapper">
      <div class="swiper-slide"><img src="https://picsum.photos/id/237/500/300"></div>
      <div class="swiper-slide"><img src="https://picsum.photos/id/238/500/300"></div>
      <div class="swiper-slide"><img src="https://picsum.photos/id/239/500/300"></div>
    </div>
    <div class="swiper-pagination"></div>
  </div>

  <script>
    const swiperContainer = document.querySelector('.swiper-container');
    const swiperWrapper = document.querySelector('.swiper-wrapper');
    const swiperSlides = document.querySelectorAll('.swiper-slide');
    const pagination = document.querySelector('.swiper-pagination');

    const slideCount = swiperSlides.length;
    let currentIndex = 0;
    let timer = null;
    const interval = 3000;

    function goToSlide(index) {
      if (index < 0) {
        index = slideCount - 1;
      } else if (index >= slideCount) {
        index = 0;
      }
      swiperWrapper.style.transform = `translate3d(-${index * 100}%, 0, 0)`;
      swiperSlides[currentIndex].classList.remove('swiper-slide-active');
      swiperSlides[index].classList.add('swiper-slide-active');
      currentIndex = index;
      updatePagination();
    }

    function startAutoPlay() {
      timer = setInterval(function() {
        goToSlide(currentIndex + 1);
      }, interval);
    }

    function stopAutoPlay() {
      clearInterval(timer);
    }

    function updatePagination() {
      pagination.innerHTML = '';
      for (let i = 0; i < slideCount; i++) {
        const li = document.createElement('li');
        li.classList.add('pagination-item');
        if (i === currentIndex) {
          li.classList.add('active');
        }
        li.addEventListener('click', function() {
          stopAutoPlay();
          goToSlide(i);
          startAutoPlay();
        });
        pagination.appendChild(li);
      }
    }

    startAutoPlay();
  </script>
</body>
</html>

可以发现,该示例代码实现了图片层叠轮播切换效果,并且提供了自动轮播和轮播点操作的功能,具有较好的用户体验。

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

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

相关文章

  • python selenium操作cookie的实现

    Python Selenium操作Cookie的实现: 引入selenium模块 from selenium import webdriver 定义浏览器对象 browser = webdriver.Chrome() 获取网站Cookie信息 browser.get(‘https://www.baidu.com’) print(browser.get_coo…

    JavaScript 2023年6月11日
    00
  • 详解Javascript中DOM的范围

    详解Javascript中DOM的范围 什么是DOM范围 在Javascript中,DOM(Document Object Model)是指用来描述HTML文档结构的树形结构模型。而DOM范围则是指在Javascript中,我们可以对DOM树进行操作的范围。 一个DOM范围由以下几个组成部分: 起始边界点(start boundary point):范围的开…

    JavaScript 2023年6月10日
    00
  • 一文掌握JavaScript数组常用工具函数总结

    一文掌握JavaScript数组常用工具函数总结 前言 JavaScript 是一种非常受欢迎的脚本语言,而数组是 JavaScript 中最常用的数据结构之一。在实际开发中,我们通常使用数组来存储和处理数据。本文将介绍一些常用的 JavaScript 数组工具函数,包括以下内容: 遍历数组 操作数组 搜索数组 遍历数组 forEach() forEach(…

    JavaScript 2023年5月27日
    00
  • javascript加号”+”的二义性说明

    当我们在JavaScript中使用加号 + 时,它具有两种不同的作用:数学加法和字符串拼接。这种情况被称为“加号的二义性”。 数学加法 当加号 + 作为两个数字之间的运算符使用时,它执行数学加法操作: const num1 = 5; const num2 = 10; const sum = num1 + num2; console.log(sum); // …

    JavaScript 2023年5月28日
    00
  • js实现会跳动的日历效果(完整实例)

    下面我将详细讲解JS实现会跳动的日历效果的完整攻略。 简介 这是一个使用JavaScript实现会跳动的日历效果的完整示例。该例子展示了如何使用JavaScript和基本的HTML/CSS构建起一个会跳动的日历效果。 步骤 HTML结构 首先我们需要构建页面的HTML结构,代码如下: <!DOCTYPE html> <html> &l…

    JavaScript 2023年5月27日
    00
  • JavaScript如何实现在文本框(密码框)输入提示语

    想要在文本框或密码框中添加输入提示语,可以通过JavaScript的onfocus和onblur事件来实现。 第一种方法:使用value属性和CSS样式 可以给文本框或密码框填入提示语后,通过onfocus事件监听文本框或密码框的获得焦点事件,当获得焦点后,将文本框或密码框的value属性值赋值为空字符串,这样,当用户输入内容时,输入框中的提示语就会被覆盖。…

    JavaScript 2023年6月10日
    00
  • 详解如何在JavaScript中使用for循环

    以下是“详解如何在JavaScript中使用for循环”的完整攻略。 1. for循环简介 for循环是一种在JavaScript中常用的循环结构,也是最基本的三种循环结构之一。for循环支持设置循环条件、循环执行语句和循环计数器的初始值,用于重复执行相同的代码块。 一般来说,for循环的语法结构如下: for (initialization; condit…

    JavaScript 2023年5月28日
    00
  • JS中switch的四种写法示例

    下面我将详细讲解JS中switch的四种写法示例。 简述 switch是一个条件语句,用于测试变量是否等于多个值中的某一个值。在JS中,switch有四种使用方式,分别是: 没有 break 关键字; 有 break 关键字; 每个 case 都使用 return; 使用对象的方法进行判断。 没有 break 关键字 示例代码如下: var myAnswer…

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