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

相关文章

  • 如何设计制作自适应网页

    设计制作自适应网页是一项非常重要的技能,因为不同设备有不同的屏幕尺寸和分辨率,我们的网页需要适配它们,以便在不同设备上展示良好,提供更好的用户体验。下面是一些关于如何设计制作自适应网页的攻略: 1. 使用响应式布局 使用响应式布局是制作自适应网页的一种常见方法。这种方法可以根据用户的设备来调整网页的布局,使其适合不同的屏幕大小和设备类型。 在实现响应式布局时…

    css 2023年6月10日
    00
  • CSS3盒子模型详解

    下面是关于“CSS3盒子模型详解”的完整攻略。 什么是CSS3盒子模型 CSS3盒子模型是Web开发中的一种基本布局模型,它是指用于布局的文档树中的任何元素都可以看作是一个矩形的盒子,这个盒子包含了元素的内容、内边距、边框和外边距。 CSS3盒子模型的属性 CSS3盒子模型的属性包括: width(宽度) 宽度指定了盒子的内容区域的宽度,不包含内边距、边框和…

    css 2023年6月10日
    00
  • CSS中overflow-y: visible;不起作用的原因分析及解决方法

    下面是详细讲解“CSS中overflow-y: visible;不起作用的原因分析及解决方法”的完整攻略。 问题描述 在CSS中,我们可以使用overflow属性来控制元素内容的溢出显示。其中,overflow-y属性用于控制垂直方向的溢出情况,其可选值包括visible、hidden、scroll、auto等。但是,有时候我们会发现overflow-y: …

    css 2023年6月10日
    00
  • border 边框属性在浏览器中的渲染方式

    border是CSS中一个常用的属性,用于定义元素的边框样式、宽度和颜色。在浏览器中,对于border属性的渲染方式主要包括以下几个方面: 1. 边框样式 border有以下几种常见的样式: solid:实线 dotted:点状线 dashed:虚线 double:双线 groove:3D凹槽线 ridge:3D垄状线 inset:3D凹边线 outset:…

    css 2023年6月9日
    00
  • Html5+jQuery+CSS制作相册小记录

    让我来详细讲解一下“HTML5+jQuery+CSS制作相册小记录”的完整攻略。 准备工作 安装文本编辑器:选择一个适合自己的文本编辑器,并学习如何使用它。建议使用Visual Studio Code。 学习HTML、CSS、JavaScript和jQuery:掌握HTML、CSS、JavaScript和jQuery的基础知识及其运用方式。 HTML布局 创…

    css 2023年6月9日
    00
  • div+css设置div的背景为半透明的方法

    Div 是文档中常用的一个标签元素,可以用来表示文档的一部分,这里将详细讲解如何使用 CSS 给 div 元素设置背景色半透明的方法。 使用 CSS 设置背景色半透明的方法 设置 div 元素不透明的一种方法是使用 RGBA 颜色值,RGBA 是一种带透明度的颜色格式,其中 R、G、B 表示颜色的 RGB 值,A 表示透明度,范围从 0(完全透明)到 1(完…

    css 2023年6月9日
    00
  • 基于jQuery选择器的整理集合

    以下是关于“基于jQuery选择器的整理集合”的完整攻略: 一、什么是jQuery选择器? jQuery选择器是一种基于CSS选择器的语法,可以用于选择HTML文档中的元素,并进行相应的操作。通过使用jQuery选择器,我们可以方便地找到我们需要的DOM元素,进行样式的修改、内容的插入、事件的绑定等。 二、常见的jQuery选择器 jQuery选择器可以根据…

    css 2023年6月10日
    00
  • jquery实现页面图片等比例放大缩小功能

    一、前言 在进行网页布局的时候,我们常常会遇到图片的等比例放大缩小问题。当图片大小不合适的时候,会严重影响页面的美观度和用户体验。而jQuery作为一款广泛应用于网站前端开发的JavaScript库,提供了一些很方便的方法来实现图片等比例放大缩小功能。 二、实现方法 在jQuery中,可以使用两种方式实现图片等比例放大缩小功能: 1.设置图片的最大宽高度,然…

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