基于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日

相关文章

  • JS异步编程方法的6种方案总结

    JS异步编程方法的6种方案总结 异步编程和JS单线程模型 在JavaScript中,任务队列是基于事件循环(event loop)实现的,主线程执行完同步任务后,会被阻塞,直到下一个异步任务添加到任务队列中。当所有的同步任务都执行完毕后,主线程会去任务队列中取出第一个任务并执行。 这种机制就决定了JavaScript是单线程的,因为当主线程被阻塞时,不能同时…

    jquery 2023年5月27日
    00
  • jQuery Ajax使用FormData对象上传文件的方法

    jQuery Ajax使用FormData对象上传文件的方法 在前端开发中,经常会遇到需要上传文件的业务需求。而在大多数情况下,我们都会使用jQuery Ajax来实现文件上传功能。本文将详细介绍如何使用FormData对象上传文件。 使用FormData对象上传文件的步骤 创建FormData对象 通过FormData对象可以模拟表单提交的数据格式,实现异…

    jquery 2023年5月27日
    00
  • 基于jQuery的动态表格插件

    下面给出关于“基于jQuery的动态表格插件”的完整攻略: 一、什么是动态表格插件? 动态表格插件,是一种可以对数据进行分页、搜索、排序等操作的表格。这种表格通常使用jQuery作为前端框架,并且与后端进行交互,以获取数据。 二、为什么需要插件? 动态表格插件,可以极大的方便数据的处理,而不需要手动编写大量的JS代码。此外,这种插件通常包含大量的可配置选项,…

    jquery 2023年5月27日
    00
  • jQWidgets jqxKnob改变事件

    jQWidgets jqxKnob改变事件攻略 jQWidgets 是一个基于 jQuery 的 UI 组件库,提供了丰富的 UI 组件和工具,可于创建现代化 Web 应用程序。 jqxKnob旋钮件,用于可视化调整数值。攻略将详细介绍 jqxKnob 的改变事件,该事件在旋钮值更时触发。 改变事件 jqxKnob 组件的 change 事件在旋钮值更改时触…

    jquery 2023年5月10日
    00
  • jQWidgets jqxGauge RadialGauge border属性

    jQWidgets jqxGauge RadialGauge border属性 jQWidgets是一个基于jQuery的UI组件库,提供了丰富的UI组件和工具包括表格、下拉等。jqxGauge是jQWidgets的组件之一,用于创建仪表盘。RadialGauge是jqxGauge的类型,用于创建圆形仪表盘。border属性是RadialGauge的一个属性…

    jquery 2023年5月9日
    00
  • jquery常用方法及使用示例汇总

    jQuery常用方法及使用示例汇总 什么是jQuery? jQuery是一个快速、简洁的JavaScript库,使得JavaScript更容易使用。通过jQuery,您可以处理HTML文档遍历和操作,使得动态效果和用户交互变得更加简单和快速。 常用方法 1. 事件处理 click():点击事件 hover():鼠标悬停事件 mousedown():鼠标按下事…

    jquery 2023年5月27日
    00
  • jQuery click()方法

    jQuery change()方法是用于在元素的值发生改变时触发事件的方法。该方法可以用于添加值改变事件处理程序,以便在用户改变元素的值时执行某些操作。 以下是jQuery change()方法的详细攻略: 语法 $(selector).change(function) 参数 function:必需。规定当元素的值发生改变时要运行的函数。 示例1:显示警告框…

    jquery 2023年5月9日
    00
  • jQWidgets jqxNavigationBar remove()方法

    以下是关于 jQWidgets jqxNavigationBar 组件中 remove() 方法的详细攻略。 jQWidgets jqxNavigationBar remove() 方法 jQWidgets jqxNavigationBar 的 remove() 方法用于从导航栏组件中删除指定的导航栏项。 语法 // 从导航栏组件中删除指定的导航栏项 $(‘…

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