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日

相关文章

  • jQWidgets jqxGauge RadialGauge colorScheme属性

    以下是关于“jQWidgets jqxGauge RadialGauge colorScheme属性”的完整攻略,包含两个示例说明: 属性简介 jqxGauge 控件的 RadialGauge 类型的 colorScheme 属性用于设置表盘的颜色方案。该属性的语法如下: $("#gauge").jqxGauge({ colorSchem…

    jquery 2023年5月10日
    00
  • jQuery Mobile Loader checkLoaderPosition() 方法

    jQuery Mobile Loader是jQuery Mobile框架中的一个组件,用于在页面加载和处理中显示一个阻塞性的加载状态,给用户一个视觉上的提示。其中checkLoaderPosition()方法是jQuery Mobile Loader组件提供的一个函数,用于控制加载状态的位置和显示方式。 1. checkLoaderPosition()方法解…

    jquery 2023年5月12日
    00
  • jQWidgets jqxMenu 主题属性

    以下是关于 jQWidgets jqxMenu 组件中主题属性的详细攻略。 jQWidgets jqxMenu 主题属性 jQWidgets jqxMenu 组件的主题属性用于设置菜单的外观样式。该属性可以是一个字符串,表示要使用的主题名称。 语法 $(‘#menu’).jqxMenu({ theme: ‘classic’ }); // 设置菜单的主题为 c…

    jquery 2023年5月12日
    00
  • 如何从一个函数中禁用jQuery对话框中的一个按钮

    下面我将给出一份完整的攻略,以帮助禁用jQuery对话框中的一个按钮。 需求分析 首先需要确定需求,即需求如下:从一个函数中禁用jQuery对话框中的一个按钮。 解决方法 要实现这个需求,需要明确几个步骤: 获取需要禁用的按钮 禁用按钮 在需要的时候启用按钮 获取需要禁用的按钮 一般来说,我们可以在对话框显示之前获取要禁用的按钮。例如: $("#d…

    jquery 2023年5月12日
    00
  • jquery中表单 多选框的一种巧妙写法

    jQuery是一种快速、简洁的JavaScript库,专为简化HTML文档遍历、事件处理、动画设计和Ajax交互而设计。在网页开发中,使用jQuery可以大大简化开发过程。 在jQuery中,表单元素是常用的组件之一。其中,多选框控件是一种常见的表单元素,通常用于实现多选功能。下面,我们将介绍一种巧妙的多选框控件的写法。 原理 这种多选框控件的实现原理很简单…

    jquery 2023年5月28日
    00
  • jQuery动态创建元素以及追加节点的实现方法

    当我们需要在DOM结构中新增或者修改元素时,jQuery提供了很多方便的方法来实现。其中,动态创建元素以及追加节点是常见的操作, 动态创建元素 动态创建元素是指在页面中通过jQuery构造器函数来创建元素节点。 例如,以下代码可以创建一个h1元素并赋值为”Hello world”: var $h1 = $(‘<h1>Hello world<…

    jquery 2023年5月28日
    00
  • jQWidgets jqxComboBox enableBrowserBoundsDetection属性

    以下是关于“jQWidgets jqxComboBox enableBrowserBoundsDetection属性”的完整攻略,包含两个示例说明: 简介 jqxComboBox 控件 enableBrowserBoundsDetection 属性用于启或禁用浏览器边界检测。 完整攻略 以下是 jqxComboBox 控件 enableBrowserBoun…

    jquery 2023年5月11日
    00
  • 浅谈对Jquery+JSON+WebService的使用小结

    关于“浅谈对Jquery+JSON+WebService的使用小结”的完整攻略,我进行如下讲解。 1. Jquery+JSON+WebService的基本概念 1.1 Jquery Jquery 是一个轻量级的 JavaScript 库,它使得对 HTML 文档进行操作变得更加方便快捷。它能够实现许多常见的 JavaScript 操作,如事件处理、动画效果等…

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