原生JS实现旋转轮播图+文字内容切换效果【附源码】

下面就是原生JS实现旋转轮播图+文字内容切换效果的攻略。

1、准备工作

在开始实现之前,需要做好一些准备工作:

  • 准备好HTML结构,最外层包裹一个容器div,用来放置轮播图和文字内容。
  • 在HTML文件中引入相应的CSS文件和JS文件。

2、实现旋转轮播图效果

实现旋转轮播图效果的代码如下所示(注释已经解释了代码的作用):

var slideIndex = 1;  // 初始值为1,表示当前显示第一张图片
var timer = null;    // 定时器

showSlides(slideIndex);   // 显示第一张图片

// 下一张图片
function nextSlide() {
  showSlides(slideIndex += 1);
}

// 上一张图片
function previousSlide() {
  showSlides(slideIndex -= 1);  
}

// 自动轮播
function autoSlide() {
  timer = setInterval(function() {
    showSlides(slideIndex += 1);
  }, 2000);   // 间隔2秒
}

// 停止轮播
function stopSlide() {
  clearInterval(timer);
}

// 显示当前图片
function showSlides(n) {
  var slides = document.getElementsByClassName("slide");
  if (n > slides.length) {
    slideIndex = 1;
  }
  if (n < 1) {
    slideIndex = slides.length;
  }
  for (var i = 0; i < slides.length; i++) {
    slides[i].style.display = "none";
  }
  slides[slideIndex - 1].style.display = "block";
}

其中,slideIndex表示当前显示的图片的索引,autoSlide函数用于自动轮播图片,stopSlide函数用于停止轮播,showSlides函数用于显示当前图片。

3、实现文字内容切换效果

实现文字内容切换效果的代码如下所示(注释已经解释了代码的作用):

var contentIndex = 1;  // 初始值为1,表示当前显示第一条内容

showContent(contentIndex);   // 显示第一条内容

// 下一条内容
function nextContent() {
  showContent(contentIndex += 1);
}

// 上一条内容
function previousContent() {
  showContent(contentIndex -= 1);  
}

// 显示当前内容
function showContent(n) {
  var content = document.getElementsByClassName("content");
  if (n > content.length) {
    contentIndex = 1;
  }
  if (n < 1) {
    contentIndex = content.length;
  }
  for (var i = 0; i < content.length; i++) {
    content[i].style.display = "none";
  }
  content[contentIndex - 1].style.display = "block";
}

其中,contentIndex表示当前显示的内容的索引,showContent函数用于显示当前内容。

4、完整代码及示例说明

以下是完整的代码:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>轮播图效果</title>
  <link rel="stylesheet" href="style.css">
</head>
<body onload="autoSlide()">
  <div class="container">
    <div class="slideshow">
      <div class="slide"><img src="1.jpg"></div>
      <div class="slide"><img src="2.jpg"></div>
      <div class="slide"><img src="3.jpg"></div>
    </div>
    <div class="controls">
      <a href="#" onclick="previousSlide()">&#10094;</a>
      <a href="#" onclick="nextSlide()">&#10095;</a>
    </div>
    <div class="content">
      <h1>文字内容1</h1>
      <p>这是一些文字内容。</p>
    </div>
    <div class="content">
      <h1>文字内容2</h1>
      <p>这是一些文字内容。</p>
    </div>
    <div class="content">
      <h1>文字内容3</h1>
      <p>这是一些文字内容。</p>
    </div>
    <div class="controls">
      <a href="#" onclick="previousContent()">&#10094;</a>
      <a href="#" onclick="nextContent()">&#10095;</a>
    </div>
  </div>
  <script src="script.js"></script>
</body>
</html>

CSS样式如下所示:

* {box-sizing: border-box;}
.container {position: relative;}
.slideshow {max-width: 700px; margin: auto; position: relative;}
.slide {display: none;}
.slide img {width: 100%;}
.controls {position: absolute; top: 50%; width: 100%; z-index: 1; display: flex; justify-content: space-between;}
.controls a {color: #fff; cursor: pointer; font-size: 2em; margin: 0 10px;}
.content {display: none;}
.content h1 {font-size: 3em; text-align: center;}
.content p {font-size: 1.5em; text-align: center;}

其中,container是最外层的容器,slideshow是轮播图容器,slide是每一张图片的容器,controls是轮播图控制按钮容器,content是文字内容容器。

下面是两个示例:

示例1:上一张/下一张

点击上一张或下一张按钮,可以实现轮播图效果。代码如下所示:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>轮播图效果示例1</title>
  <style>
    * {box-sizing: border-box;}
    .container {position: relative;}
    .slideshow {max-width: 700px; margin: auto; position: relative;}
    .slide {display: none;}
    .slide img {width: 100%;}
    .controls {position: absolute; top: 50%; width: 100%; z-index: 1; display: flex; justify-content: space-between;}
    .controls a {color: #fff; cursor: pointer; font-size: 2em; margin: 0 10px;}
    .content {display: none;}
    .content h1 {font-size: 3em; text-align: center;}
    .content p {font-size: 1.5em; text-align: center;}
  </style>
</head>
<body onload="autoSlide()">
  <div class="container">
    <div class="slideshow">
      <div class="slide"><img src="1.jpg"></div>
      <div class="slide"><img src="2.jpg"></div>
      <div class="slide"><img src="3.jpg"></div>
    </div>
    <div class="controls">
      <a href="#" onclick="previousSlide()">&#10094;</a>
      <a href="#" onclick="nextSlide()">&#10095;</a>
    </div>
  </div>
  <script>
    var slideIndex = 1;  // 初始值为1,表示当前显示第一张图片
    var timer = null;    // 定时器

    showSlides(slideIndex);   // 显示第一张图片

    // 下一张图片
    function nextSlide() {
      showSlides(slideIndex += 1);
    }

    // 上一张图片
    function previousSlide() {
      showSlides(slideIndex -= 1);  
    }

    // 自动轮播
    function autoSlide() {
      timer = setInterval(function() {
        showSlides(slideIndex += 1);
      }, 2000);   // 间隔2秒
    }

    // 停止轮播
    function stopSlide() {
      clearInterval(timer);
    }

    // 显示当前图片
    function showSlides(n) {
      var slides = document.getElementsByClassName("slide");
      if (n > slides.length) {
        slideIndex = 1;
      }
      if (n < 1) {
        slideIndex = slides.length;
      }
      for (var i = 0; i < slides.length; i++) {
        slides[i].style.display = "none";
      }
      slides[slideIndex - 1].style.display = "block";
    }
  </script>
</body>
</html>

示例2:上一条/下一条

点击上一条或下一条按钮,可以实现文字内容切换效果。代码如下所示:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>文字内容切换效果示例2</title>
  <style>
    * {box-sizing: border-box;}
    .container {position: relative;}
    .slideshow {max-width: 700px; margin: auto; position: relative;}
    .slide {display: none;}
    .slide img {width: 100%;}
    .controls {position: absolute; top: 50%; width: 100%; z-index: 1; display: flex; justify-content: space-between;}
    .controls a {color: #fff; cursor: pointer; font-size: 2em; margin: 0 10px;}
    .content {display: none;}
    .content h1 {font-size: 3em; text-align: center;}
    .content p {font-size: 1.5em; text-align: center;}
  </style>
</head>
<body>
  <div class="container">
    <div class="content">
      <h1>标题1</h1>
      <p>内容1</p>
    </div>
    <div class="content">
      <h1>标题2</h1>
      <p>内容2</p>
    </div>
    <div class="content">
      <h1>标题3</h1>
      <p>内容3</p>
    </div>
    <div class="controls">
      <a href="#" onclick="previousContent()">&#10094;</a>
      <a href="#" onclick="nextContent()">&#10095;</a>
    </div>
  </div>
  <script>
    var contentIndex = 1;  // 初始值为1,表示当前显示第一条内容

    showContent(contentIndex);   // 显示第一条内容

    // 下一条内容
    function nextContent() {
      showContent(contentIndex += 1);
    }

    // 上一条内容
    function previousContent() {
      showContent(contentIndex -= 1);  
    }

    // 显示当前内容
    function showContent(n) {
      var content = document.getElementsByClassName("content");
      if (n > content.length) {
        contentIndex = 1;
      }
      if (n < 1) {
        contentIndex = content.length;
      }
      for (var i = 0; i < content.length; i++) {
        content[i].style.display = "none";
      }
      content[contentIndex - 1].style.display = "block";
    }
  </script>
</body>
</html>

以上就是原生JS实现旋转轮播图+文字内容切换效果的完整攻略,希望可以帮助到你。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生JS实现旋转轮播图+文字内容切换效果【附源码】 - Python技术站

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

相关文章

  • WinX DVD Ripper Platinum怎么免费使用 DVD转换器图文激活教程

    使用WinX DVD Ripper Platinum进行DVD转换需要购买许可证激活软件,但有些人想了解如何在不购买许可证的情况下免费使用此软件进行 DVD 转换。下面是一些步骤,可以将其用于WinX DVD Ripper Platinum的免费激活: 步骤 1: 下载并安装WinX DVD Ripper Platinum 打开浏览器,进入官方网站 http…

    css 2023年6月10日
    00
  • 使用CSS3的背景渐变Text Gradient 创建文字颜色渐变

    使用 CSS3 的背景渐变 Text Gradient 可以创建文字颜色渐变效果,让文字看起来更加美观。本文将向您展示如何使用 CSS3 的 Text Gradient 创建文字颜色渐变。 步骤 1. 创建 HTML 结构 首先,在您的 HTML 文件中创建一个元素,用于标识您将要应用 Text Gradient 的文本,例如: <div class=…

    css 2023年6月9日
    00
  • JS+CSS3实现超炫的散列画廊特效

    让我来为您详细讲解一下“JS+CSS3实现超炫的散列画廊特效”的完整攻略。 一、项目背景 散列画廊特效是一种非常流行的网页动效,可以增强用户对网站内容的关注度,提升用户体验。 二、实现思路 该特效的实现主要分为三个部分: 利用CSS3的transform属性对图片进行平移和旋转; 利用JavaScript实现图片的散列排列和鼠标悬浮时的效果变化; 利用CSS…

    css 2023年6月9日
    00
  • css 单选按钮图标替换的方法

    针对“css 单选按钮图标替换的方法”的攻略,我将给您解答以下问题: 什么是单选按钮? 为什么需要替换单选按钮图标? 替换单选按钮图标的方法有哪些? 进行单选按钮图标替换的示例 1. 什么是单选按钮? 单选按钮是HTML中的一个表单控件,通常用于用户选择一项可选的内容。单选按钮可以选择一个选项,而其他选项都被取消选择。在HTML中,单选按钮由<inpu…

    css 2023年6月10日
    00
  • CSS3之transition实现下划线的示例代码

    下面我将为您提供关于“CSS3之transition实现下划线的示例代码”的完整攻略: 一、transition基本概念 在学习transition之前,先简述一下transition的基本概念:transition是CSS的一个属性,用于指定一个元素在属性变化时的“过渡”。例如,当一个元素的宽度从200px变为300px时,通过transition将会过渡…

    css 2023年6月9日
    00
  • vue实现动态列表尾部添加数据执行动画

    让我来详细讲解一下“vue实现动态列表尾部添加数据执行动画”的完整攻略。 1. 实现思路 动态列表尾部添加数据执行动画的实现思路大致如下: 首先,需要在data中定义一个数组,用于存储列表数据。接下来,在页面上使用v-for指令,循环渲染数组中的数据,展示列表内容。 接着,我们可以使用vue的过渡动画功能,对新添加的数据进行动画处理。当有新数据添加时,可以通…

    css 2023年6月10日
    00
  • 对未知高度的图片设置垂直居中的方法详解

    下面是「对未知高度的图片设置垂直居中的方法详解」的攻略: 1. 使用CSS3的Transform属性 我们可以使用CSS3的Transform属性来实现垂直居中的效果。具体的做法是: 将图片设置为绝对定位,然后设置父元素的position属性为相对定位。接着,设置图片的top和left值为50%,并使用Transform属性进行平移。 代码示例: HTML …

    css 2023年6月10日
    00
  • 关于css水平居中的小小探讨

    既然您想了解“关于css水平居中的小小探讨”的攻略,我先来简单介绍一下这个话题的背景。在前端开发中,一个常见的问题是如何将一个元素居中显示。其中,水平居中是一个比较常见的需求。下面,我会详细讲解实现水平居中的几种方法以及这些方法的适用场景。 1. text-align方法 text-align属性是设置文本水平对齐的CSS属性,可以用于快速对一个元素内的子元…

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