JavaScript实现简单精致的图片左右无缝滚动效果

下面是“JavaScript实现简单精致的图片左右无缝滚动效果”的完整攻略。

准备工作

  • 首先在HTML中创建一个包含所有滚动图片的容器。比如:
<div class="scroll-container">
   <img src="image1.jpg" class="scroll-image">
   <img src="image2.jpg" class="scroll-image">
   <img src="image3.jpg" class="scroll-image">
   <img src="image4.jpg" class="scroll-image">
   <img src="image5.jpg" class="scroll-image">
   <img src="image6.jpg" class="scroll-image">
</div>
  • 确保所有图片的宽度和高度相同,并且在容器中位置和大小一致。

  • 设置容器的宽度及样式,确保所有图片可以在这个容器内水平滚动。比如:

.scroll-container {
    overflow: hidden;
    white-space: nowrap;
    width: 100%;
    height: 250px;
}

.scroll-image {
    width: 600px;
    height: 250px;
    display: inline-block;
}

实现滚动效果

  • 在JavaScript中获取需要滚动的容器和所有包含图片的元素。
let container = document.querySelector('.scroll-container');
let items = document.querySelectorAll('.scroll-image');
  • 创建一个效果循环,这个循环将在指定的时间间隔内重复执行。
let currentItem = 1;
let scrollInterval = setInterval(scroll, 2000);
  • 实现scroll函数,该函数将图片向左滚动。
function scroll() {
   if(currentItem === items.length) {
      currentItem = 1;
      container.scrollLeft = 0;
   } else {
      currentItem ++;
   }
   let scrollAmount = container.scrollWidth / items.length * (currentItem - 1);
   container.scroll({ left: scrollAmount, behavior: 'smooth' });
}
  • 通过设置scrollAmount来计算每个滚动步骤的距离,这个距离是基于当前图片大小和数量的。在每次滚动完成后更新currentItem的值,如果到达了最后一张图片,则滚动回第一张图片,并将currentItem重置为1。

  • container.scroll()函数将会在浏览器中执行动画,使用behavior: 'smooth'参数可以使其具有平滑的动画效果。

  • 最后,当页面切换到另一个标签或浏览器最小化时,JavaScript动画会因此被挂起,为了确保在页面重新回到前台时能够继续执行,可以使用requestAnimationFrame()cancelAnimationFrame()将动画暂停以及恢复。

示例说明

下面是两个示例说明,介绍如何在实际网页中应用上述攻略来实现图片左右无缝滚动效果。

示例1:基于jQuery库

在此示例中,我们使用jQuery库来处理DOM相关操作。

  • 导入jQuery库:
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  • 添加HTML代码:
<div class="scroll-wrapper">
  <div class="scroll-container">
    <img src="https://picsum.photos/id/1/600/400">
    <img src="https://picsum.photos/id/10/600/400">
    <img src="https://picsum.photos/id/100/600/400">
    <img src="https://picsum.photos/id/1000/600/400">
  </div>
</div>
  • 添加CSS代码:
.scroll-wrapper {
  position: relative;
  overflow: hidden;
  height: 400px;
}

.scroll-container {
  position: absolute;
  top: 0;
  left: 0;
  white-space: nowrap;
  animation: scroll 32s infinite linear;
}

.scroll-container img {
  display: inline-block;
  height: 400px;
}

@keyframes scroll {
   0% {
      transform: translateX(0);
   }
   100% {
      transform: translateX(-2400px);
   }
}
  • 添加JavaScript代码:
$(document).ready(function() {
   var container = $('.scroll-container');
   var scrollWidth = container.width();
   $('.scroll-container img').each(function() {
      scrollWidth += $(this).width();
   });
   container.css('width', scrollWidth + 'px');
});

示例2:基于纯JavaScript

在此示例中,我们没有使用jQuery库。而是采用纯JavaScript的方式来实现。

  • 添加HTML代码:
<div class="scroll-wrapper">
  <div class="scroll-container">
    <img src="https://picsum.photos/id/1/600/400">
    <img src="https://picsum.photos/id/10/600/400">
    <img src="https://picsum.photos/id/100/600/400">
    <img src="https://picsum.photos/id/1000/600/400">
  </div>
</div>
  • 添加CSS代码:
.scroll-wrapper {
  position: relative;
  overflow: hidden;
  height: 400px;
}

.scroll-container {
  position: absolute;
  top: 0;
  left: 0;
  white-space: nowrap;
}

.scroll-container img {
  display: inline-block;
  height: 400px;
}
  • 添加JavaScript代码:
window.onload = function() {
   var container = document.querySelector('.scroll-container');
   var scrollWidth = container.offsetWidth;
   var images = document.querySelectorAll('.scroll-container img');
   images.forEach(function(image) {
      scrollWidth += image.offsetWidth;
   });
   container.style.width = scrollWidth + 'px';
   setInterval(scroll, 2000);
};

var currentItem = 1;
function scroll() {
   var container = document.querySelector('.scroll-container');
   var items = document.querySelectorAll('.scroll-container img');
   if(currentItem === items.length) {
      currentItem = 1;
      container.scrollLeft = 0;
   } else {
      currentItem ++;
   }
   var scrollAmount = container.scrollWidth / items.length * (currentItem - 1);
   container.scroll({ left: scrollAmount, behavior: 'smooth' });
}

以上就是“JavaScript实现简单精致的图片左右无缝滚动效果”的完整攻略了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现简单精致的图片左右无缝滚动效果 - Python技术站

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

相关文章

  • 这些年、我收集的JQuery代码小结

    下面我会详细讲解“这些年、我收集的JQuery代码小结”的完整攻略,包括如何收集代码、如何整理并记录、以及部分示例说明。 收集代码 收集JQuery代码的方法很多,可以通过搜索引擎或社区论坛等途径获取。在收集的过程中,需要注意以下几点: 确定代码来源可靠。避免使用来路不明的代码,以防安全问题。 注意代码的版本和兼容性。JQuery的版本和浏览器的兼容性是需要…

    jquery 2023年5月28日
    00
  • jquery 模板的应用示例

    让我们来详细讲解“jquery 模板的应用示例”的完整攻略。 1. jQuery模板介绍 jQuery模板是一种基于JavaScript模板引擎的技术,它可以让程序员通过模板定义出数据的展示格式,并将数据与模板相结合,生成HTML字符串。它可以使动态页面的开发变得更为方便和快捷。 2. jQuery模板的使用方法 jQuery模板有两个主要的函数,$.tem…

    jquery 2023年5月28日
    00
  • jQWidgets jqxDropDownList打开事件

    jQWidgets jqxDropDownList 打开事件详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件和工具包。jqxDropDownList是Widgets组,用于实现下拉列表功能。open事件是jqxDropDownList的一个事件,用于在下拉列表打开时触发。本文将详细介绍open事件,并提供两个示例。 open事件…

    jquery 2023年5月10日
    00
  • 如何使用jQuery在移动视图中隐藏一个HTML元素

    首先,在移动视图中隐藏一个HTML元素可以通过jQuery的hide()方法实现。hide()方法将元素的display属性设置为none以隐藏它。 以下是使用jQuery隐藏HTML元素的步骤: 1.将jQuery库添加至HTML文件中。例如: <script src="https://cdn.bootcdn.net/ajax/libs/j…

    jquery 2023年5月12日
    00
  • 如何使用JavaScript/jQuery检查Mentioned文件是否存在

    一、检查Mentioned文件是否存在 在使用 JavaScript/jQuery 检查 Mentioned 文件是否存在时,我们通常会使用 Ajax 请求去检测文件是否存在。我们可以先构建一个 Ajax 请求,然后发送给服务器去查询这个文件是否存在。如果服务器返回 200 状态码,说明文件存在,如果返回 404 状态码,说明文件不存在。 代码示例: $.a…

    jquery 2023年5月13日
    00
  • 如何在jQuery中替换HTML元素

    使用jQuery可以轻松地替换HTML元素。以下是详细的攻略,包含两个示例,演示如何在jQuery中替换HTML元素: 步骤1:引入jQuery库 在使用之前,需要先在HTML文引jQuery库。可以通过以下方式引入: <script src="https://code.jquery.com/jquery-3.6.0.min.js"…

    jquery 2023年5月9日
    00
  • 如何使用jQuery点击一个段落并添加另一个段落

    在jQuery中,我们可以使用click()方法来为元素添加点击事件,并使用append()方法或after()方法来添加新的元素。以下是详细的攻略: 方法一:使用append()方法添加新段落 我们可以使用append()方法来添加新的段落。以下是一个示例,演示了如何使用click()方法和append()方法在单击段落时添加另一个段落: <!DOC…

    jquery 2023年5月9日
    00
  • jquery中用jsonp实现搜索框功能

    下面是实现搜索框功能的完整攻略: 1. 确定查询接口 首先,需要确定查询数据的接口地址,以百度搜索为例,我们可以使用如下地址: https://www.baidu.com/su?wd=搜索关键词&cb=回调函数名 其中,wd参数表示搜索关键词,cb参数表示在返回数据时调用的回调函数名。该接口返回数据的格式为JSONP格式。 2. 编写HTML代码 根…

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