jquery 实现轮播图详解及实例代码

标题:jQuery实现轮播图详解及实例代码

标题:jQuery实现轮播图详解及实例代码

1. 准备工作

在使用jQuery实现轮播图之前,需要引入jQuery库文件。可以在head标签中添加如下代码:

<head>
  <script src="https://cdn.bootcss.com/jquery/3.6.0/jquery.min.js"></script>
</head>

另外,还需要编写一些CSS样式来控制轮播图的布局和样式。可以在head标签中添加如下代码:

<head>
  <style>
    .carousel {
      position: relative;
      overflow: hidden;
      width: 100%;
      height: 300px;
    }
    .carousel .carousel-inner {
      position: relative;
      width: 100%;
      height: 100%;
    }
    .carousel .carousel-inner .item {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      opacity: 0;
      z-index: 1;
    }
    .carousel .carousel-inner .active {
      opacity: 1;
      z-index: 2;
    }
    .carousel .carousel-indicators {
      position: absolute;
      bottom: 20px;
      left: 50%;
      transform: translateX(-50%);
      z-index: 3;
    }
    .carousel .carousel-indicators li {
      display: inline-block;
      width: 10px;
      height: 10px;
      margin: 0 5px;
      background-color: #999;
      border-radius: 50%;
      cursor: pointer;
    }
    .carousel .carousel-indicators li.active {
      background-color: #fff;
    }
    .carousel .left,
    .carousel .right {
      position: absolute;
      z-index: 3;
      top: 50%;
      transform: translateY(-50%);
      font-size: 2em;
      font-weight: bold;
      color: #fff;
      cursor: pointer;
    }
    .carousel .left {
      left: 30px;
    }
    .carousel .right {
      right: 30px;
    }
  </style>
</head>

2. HTML结构

在准备工作完成之后,可以开始编写轮播图的HTML结构。可以使用如下代码作为轮播图的基础结构:

<div class="carousel">
  <div class="carousel-inner">
    <div class="item active">
      <img src="img/01.jpg" alt="轮播图1">
    </div>
    <div class="item">
      <img src="img/02.jpg" alt="轮播图2">
    </div>
    <div class="item">
      <img src="img/03.jpg" alt="轮播图3">
    </div>
  </div>
  <ul class="carousel-indicators">
    <li class="active"></li>
    <li></li>
    <li></li>
  </ul>
  <a href="#" class="left">&lt;</a>
  <a href="#" class="right">&gt;</a>
</div>

以上结构中包含了轮播图的基本要素:轮播图片、指示器和左右切换按钮。其中,轮播图片需要用<img>标签来展示,指示器使用<ul><li>标签,左右切换按钮使用<a>标签。

3. JS代码

在HTML结构编写完成后,可以开始编写jQuery代码实现轮播图。可以使用如下代码:

<script>
  $(function() {
    var $carousel = $('.carousel');
    var $carouselInner = $carousel.find('.carousel-inner');
    var $items = $carouselInner.find('.item');
    var $indicators = $carousel.find('.carousel-indicators li');
    var $left = $carousel.find('.left');
    var $right = $carousel.find('.right');
    var index = 0;
    var timerId = null;

    // 定义切换函数
    function carousel() {
      $items.eq(index).addClass('active').siblings().removeClass('active');
      $indicators.eq(index).addClass('active').siblings().removeClass('active');
    }

    // 定义自动切换函数
    function autoCarousel() {
      timerId = setInterval(function() {
        index++;
        if (index >= $items.length) {
          index = 0;
        }
        carousel();
      }, 3000);
    }

    // 调用自动切换函数
    autoCarousel();

    // 鼠标悬停事件
    $carousel.hover(function() {
      clearInterval(timerId);
    }, function() {
      autoCarousel();
    });

    // 点击指示器事件
    $indicators.click(function() {
      index = $(this).index();
      carousel();
    });

    // 点击左箭头事件
    $left.click(function() {
      index--;
      if (index < 0) {
        index = $items.length - 1;
      }
      carousel();
    });

    // 点击右箭头事件
    $right.click(function() {
      index++;
      if (index >= $items.length) {
        index = 0;
      }
      carousel();
    });
  });
</script>

以上代码中,使用$()来获取轮播图中的各个元素,并定义了切换函数和自动切换函数。使用setInterval()定时器来控制轮播图自动切换,使用clearInterval()函数来清除定时器。鼠标悬停时,清除定时器停止自动切换;鼠标移出时,重新调用自动切换函数。点击指示器和左右箭头时,通过改变index的值来实现切换。

4. 示例说明

示例一

使用缓动效果实现轮播图切换。在carousel()函数中,修改为如下代码:

function carousel() {
  $items.eq(index).stop(true, true).fadeIn(1000).siblings().stop(true, true).fadeOut(1000);
  $indicators.eq(index).addClass('active').siblings().removeClass('active');
}

在图片切换时,使用fadeIn()fadeOut()方法来实现渐入渐出效果。其中,stop()方法用来清除动画队列,防止出现卡顿的效果。

示例二

使用缓动效果实现轮播图切换。在carousel()函数中,修改为如下代码:

function carousel() {
  $carouselInner.animate({'left': -index * $items.width()}, 500);
  $indicators.eq(index).addClass('active').siblings().removeClass('active');
}

使用animate()方法来实现轮播图切换。其中,动画的属性为left,值为-index * $items.width(),表示轮播图向左移动的距离。动画的时间为500毫秒。

本文标题为:jquery 实现轮播图详解及实例代码

基础教程推荐