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

yizhihongxing

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

相关文章

  • HTML超链接标签(a标签)详解

    HTML超链接标签<a>用于添加链接到网页上,并可以链接到其他网页、文档、图像、音频、视频等。 基本语法 <a href="链接地址">链接文本</a> 其中, href 属性表示链接地址,可以是绝对路径或相对路径,也可以是外部网址。链接文本是可选的,可以是文字、图片等。 示例代码: 超链接到外部网址:…

    Web开发基础 2023年3月15日
    00
  • p​h​p​c​m​s​栏目调用详解

    PHPcms栏目调用详解 如果想要在 PHPcms 网站中调用某个栏目下的文章或子栏目信息,可以使用如下代码: {php} $catid = 1;//需要调用的栏目ID $categorys = getcache(‘category_content_1′,’commons’); $catid = intval($catid); $data = array()…

    css 2023年6月9日
    00
  • CSS制作各种样式的彩虹效果

    CSS制作各种样式的彩虹效果的完整攻略如下: 1. 使用渐变实现彩虹效果 使用CSS渐变可以轻松地实现彩虹效果。以下是一个简单的例: .rainbow { background: linear-gradient(to right, red, orange, yellow, green, blue, indigo, violet); } 上述代码将创建一个类名…

    css 2023年5月18日
    00
  • Flask 扩展是什么?如何安装使用

    Flask 是一款轻量级的 Python Web 框架,拥有一定的灵活性和扩展性,可以让开发者根据自己的需求进行定制化开发。扩展是 Flask 框架的一个重要特性,可以为 Flask 提供更多的功能和能力。 本文将详细介绍 Flask 扩展的相关知识和使用方法,过程中会提供代码示例。 什么是 Flask 扩展? Flask 扩展是针对 Flask 应用程序的…

    Flask 2023年3月13日
    00
  • 绝对定位的元素在ie6下不显示隐藏了的有效解决方法

    确保绝对定位元素所在的父元素拥有相对定位 在IE6浏览器中,如果想让绝对定位的元素能够正确显示,则需要保证该元素所在的父级元素拥有相对定位。因此,我们需要给该父元素添加position:relative属性,这样就可以让绝对定位的子元素相对于其父元素来定位。 .parent { position: relative; } .child { position:…

    css 2023年6月10日
    00
  • 解析JavaScript中 querySelector 与 getElementById 方法的区别

    当在JavaScript中需要通过DOM方法来操作HTML文档元素时,会用到querySelector与getElementById两种方法。尽管这两种方法都可以工作,但是它们之间存在一些区别。 区别1:查找方式 使用querySelector方法可以使用CSS选择器来查找元素。例如,可以使用querySelector(“#example”)来查找id为ex…

    css 2023年6月9日
    00
  • html内联元素和块级元素的基本概念及使用示例

    HTML中的元素可以分为内联元素和块级元素,这两种元素有着不同的基本概念和使用方式。本文将详细讲解内联元素和块级元素的基本概念及使用示例。 基本概念 内联元素 内联元素是指在排版时与其他内联元素在同一行内显示的元素,通常用于标记文本中的一部分,比如<a>、<strong>、<em>、<span>等。内联元素的特…

    css 2023年6月10日
    00
  • HTML iframe(内联框架)标签详解

    HTML中的<iframe>标签可以创建一个内联框架,用来嵌入其他网页或文档。使用<iframe>标签可以为你的网页添加更多的内容,同时还可以提供更好的用户体验和功能。本文介绍了如何使用<iframe>标签,包括其属性和代码示例。 基本语法 使用<iframe>标签需要指定被嵌入的文档的URL: <ifr…

    Web开发基础 2023年3月16日
    00
合作推广
合作推广
分享本页
返回顶部