基于jQuery实现列表循环滚动小技巧(超简单)

下面是“基于jQuery实现列表循环滚动小技巧(超简单)”的完整攻略。

1. 实现思路

本示例通过创建一个列表容器,实现循环滚动的效果,具体步骤如下:

  1. 创建一个列表容器,设置固定的宽度和高度;
  2. 将所有列表项(如<li>)添加到容器中,并通过样式设置它们的排列方式(如float);
  3. 使用setInterval()函数,每隔一定时间移动容器的位置(通过调整左边距实现);
  4. 监听容器的transitionend事件,当容器移动到最后一个列表项时,将容器重新移动到起始位置。

2. 实现代码

HTML代码:

<div class="list-container">
  <ul class="list">
    <li>列表项1</li>
    <li>列表项2</li>
    <li>列表项3</li>
    <li>列表项4</li>
    <li>列表项5</li>
    <li>列表项6</li>
  </ul>
</div>

CSS代码:

.list-container {
  width: 400px;
  height: 200px;
  overflow: hidden;
}

.list {
  margin: 0;
  padding: 0;
  width: 9999px; /* 确保放得下所有列表项 */
  transition: left 0.5s ease-out;
}

.list li {
  float: left;
  width: 100px;
  height: 100px;
  line-height: 100px;
  text-align: center;
  background-color: #ccc;
  margin-right: 20px;
  border-radius: 50%;
}

JavaScript代码:

$(document).ready(function() {
  var container = $(".list-container");
  var list = $(".list");
  var interval = 2000; // 每次移动的时间间隔,单位为毫秒
  var leftMargin = 0; // 初始左边距为0
  var itemWidth = list.find("li").outerWidth(true); // 每个列表项的宽度

  // 设置容器的宽度和列表项的位置
  list.width(itemWidth * list.find("li").length);

  // 每隔一段时间移动容器的位置
  setInterval(function() {
    leftMargin -= itemWidth;
    list.css("left", leftMargin + "px");
  }, interval);

  // 监听容器的transitionend事件,当容器移动到最后一个列表项时,将容器重新移动到起始位置
  container.on("transitionend", function() {
    if (leftMargin <= -itemWidth * list.find("li").length) {
      leftMargin = 0;
      list.css("left", leftMargin + "px");
    }
  });
});

3. 示例说明

示例一

下面是一个基础示例,实现了列表滚动的效果,每个列表项之间间隔20px,每隔2秒钟移动一次:

<!DOCTYPE html>
<html>
<head>
  <title>列表循环滚动小技巧</title>
  <style>
    .list-container {
      width: 400px;
      height: 200px;
      overflow: hidden;
    }

    .list {
      margin: 0;
      padding: 0;
      width: 9999px; /* 确保放得下所有列表项 */
      transition: left 0.5s ease-out;
    }

    .list li {
      float: left;
      width: 100px;
      height: 100px;
      line-height: 100px;
      text-align: center;
      background-color: #ccc;
      margin-right: 20px;
      border-radius: 50%;
    }
  </style>
</head>
<body>
  <div class="list-container">
    <ul class="list">
      <li>列表项1</li>
      <li>列表项2</li>
      <li>列表项3</li>
      <li>列表项4</li>
      <li>列表项5</li>
      <li>列表项6</li>
    </ul>
  </div>

  <script src="https://code.jquery.com/jquery-3.5.0.min.js"></script>
  <script>
    $(document).ready(function() {
      var container = $(".list-container");
      var list = $(".list");
      var interval = 2000; // 每次移动的时间间隔,单位为毫秒
      var leftMargin = 0; // 初始左边距为0
      var itemWidth = list.find("li").outerWidth(true); // 每个列表项的宽度

      // 设置容器的宽度和列表项的位置
      list.width(itemWidth * list.find("li").length);

      // 每隔一段时间移动容器的位置
      setInterval(function() {
        leftMargin -= itemWidth;
        list.css("left", leftMargin + "px");
      }, interval);

      // 监听容器的transitionend事件,当容器移动到最后一个列表项时,将容器重新移动到起始位置
      container.on("transitionend", function() {
        if (leftMargin <= -itemWidth * list.find("li").length) {
          leftMargin = 0;
          list.css("left", leftMargin + "px");
        }
      });
    });
  </script>
</body>
</html>

示例二

下面是一个稍微复杂一些的示例,实现了在列表项被点击时停止滚动,并在2秒钟后重新开始。

<!DOCTYPE html>
<html>
<head>
  <title>列表循环滚动小技巧</title>
  <style>
    .list-container {
      width: 400px;
      height: 200px;
      overflow: hidden;
    }

    .list {
      margin: 0;
      padding: 0;
      width: 9999px; /* 确保放得下所有列表项 */
      transition: left 0.5s ease-out;
    }

    .list li {
      float: left;
      width: 100px;
      height: 100px;
      line-height: 100px;
      text-align: center;
      background-color: #ccc;
      margin-right: 20px;
      border-radius: 50%;
      cursor: pointer;
    }

    .list li:hover {
      background-color: #aaa;
    }
  </style>
</head>
<body>
  <div class="list-container">
    <ul class="list">
      <li>列表项1</li>
      <li>列表项2</li>
      <li>列表项3</li>
      <li>列表项4</li>
      <li>列表项5</li>
      <li>列表项6</li>
    </ul>
  </div>

  <script src="https://code.jquery.com/jquery-3.5.0.min.js"></script>
  <script>
    $(document).ready(function() {
      var container = $(".list-container");
      var list = $(".list");
      var interval = 2000; // 每次移动的时间间隔,单位为毫秒
      var leftMargin = 0; // 初始左边距为0
      var itemWidth = list.find("li").outerWidth(true); // 每个列表项的宽度
      var timerId; // 用于存储setInterval返回的timer ID

      // 设置容器的宽度和列表项的位置
      list.width(itemWidth * list.find("li").length);

      // 每隔一段时间移动容器的位置
      timerId = setInterval(function() {
        leftMargin -= itemWidth;
        list.css("left", leftMargin + "px");
      }, interval);

      // 监听容器的transitionend事件,当容器移动到最后一个列表项时,将容器重新移动到起始位置
      container.on("transitionend", function() {
        if (leftMargin <= -itemWidth * list.find("li").length) {
          leftMargin = 0;
          list.css("left", leftMargin + "px");
        }
      });

      // 当列表项被点击时停止滚动,并在2秒钟后重新开始
      list.on("click", "li", function() {
        clearInterval(timerId);
        setTimeout(function() {
          timerId = setInterval(function() {
            leftMargin -= itemWidth;
            list.css("left", leftMargin + "px");
          }, interval);
        }, 2000);
      });
    });
  </script>
</body>
</html>

在这个示例中,我们给列表项添加了cursor:pointer样式,使得当鼠标悬浮在列表项上时变成手型,更容易引导用户去点击。当点击列表项时,我们调用clearInterval()函数停止滚动,然后使用setTimeout()函数在2秒钟后重新调用setInterval()函数开始滚动。为了方便,我们将setInterval()返回的timer ID存储到变量timerId中,以便在需要停止滚动时调用clearInterval()函数。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于jQuery实现列表循环滚动小技巧(超简单) - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • jQuery实现高度灵活的表单验证功能示例【无UI】

    来讲解一下关于“jQuery实现高度灵活的表单验证功能示例【无UI】”的完整攻略。 简要概述 “jQuery实现高度灵活的表单验证功能示例【无UI】”是一篇介绍如何使用jQuery实现表单验证功能的文章。该文中通过代码示例逐步讲解如何使用jQuery对表单进行各种类型的验证,如必填项、长度限制、正则表达式等。 环境准备 在进行表单验证前,需要准备好以下两个文…

    jquery 2023年5月28日
    00
  • jQuery $.data()方法使用注意细节

    是的,$.data()方法是 jQuery 内置方法之一,用于在HTML与JavaScript之间传递自定义数据,一些使用注意细节可能需要注意,以下是使用的详细攻略。 使用$.data方法传送自定义数据 $.data()方法是jQuery的内置方法之一,用于将自定义数据保存在一个元素上,以便在事件处理结束后能够访问该数据。$.data()方法接受两个参数:第…

    jquery 2023年5月28日
    00
  • jQWidgets jqxTextArea items 属性

    jQWidgets是一个面向现代web应用程序的高性能Javascript UI框架。jqxTextArea是jQWidgets中的一个文本输入控件,允许多行文本输入。其中,items属性指定输入框中的行数。在本文中,我们将详细讲解jqxTextArea的items属性。 1. items属性的语法 jqxTextArea的items属性语法为: $(sel…

    jquery 2023年5月12日
    00
  • jQWidgets jqxNotification disabled 属性

    以下是关于 jQWidgets jqxNotification 组件中 disabled 属性的详细攻略。 jQWidgets jqxNotification disabled 属性 jQWidgets jqxNotification 的 disabled 属性用于指定通知组件是否禁用。 语法 // 获取 disabled 属性值 var disabled …

    jquery 2023年5月12日
    00
  • jQWidgets jqxComplexInput roundedCorners 属性

    以下是关于“jQWidgets jqxComplexInput roundedCorners属性”的完整攻略,包含两个示例说明: 简介 jqxComplexInput 控件的 roundedCorners 属性用于设置控件的圆角半径。通过设置 roundedCorners 属性,可以使控件的边框和背景具有圆角效果。 详细攻略 以下是 jqxComplexIn…

    jquery 2023年5月11日
    00
  • jQWidgets jqxDataTable cellBeginEdit事件

    以下是关于“jQWidgets jqxDataTable cellBeginEdit事件”的完整攻略,包含两个示例说明: 简介 cellBeginEdit 事件是 jqxDataTable 控件的一个事件,当单元格开始编辑时触发。 攻略 以下是 jqxDataTable 控件的 cellBeginEdit 事件的完整攻略: 监听 cellBeginEdit …

    jquery 2023年5月11日
    00
  • 实例学习JavaScript读取和写入cookie

    下面是实例学习JavaScript读取和写入cookie的完整攻略。 什么是Cookie? Cookie是存储在用户计算机上的小文件,它通常包含有关用户的信息,例如网站首选项、购物车中的商品等等。网站可以通过JavaScript读取和写入cookie来存储这些信息。 如何读取Cookie? 要读取cookie,可以使用JavaScript中的document…

    jquery 2023年5月27日
    00
  • jQWidgets jqxDataTable selectRow()方法

    jQWidgets 是一个流行的 JavaScript UI 库,提供了许多可定制的 UI 组件。其中一个组件是 jqxDataTable,它是用于显示和编辑表格数据的件。jqxDataTable 提供多个方法和属性,其中之一是 selectRow()。下面是关于 jqxDataTable 的 selectRow() 方法的详攻略: selectRow() …

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