原生JS利用transform实现banner的无限滚动示例代码

yizhihongxing

让我来讲解一下如何利用原生JS实现banner的无限滚动。

基本思路

首先,我们需要获取到需要滚动的 banner 图片,将它们垂直排列起来,接着用 CSS 的 transform 将整个容器向上移动,直到第一张图片完全消失后,将它的下一张图片放到容器的底部,实现 banner 的无限滚动。

HTML 结构

<div class="banner">
  <div class="banner-wrap">
    <img src="./images/banner1.jpg" alt="banner1">
    <img src="./images/banner2.jpg" alt="banner2">
    <img src="./images/banner3.jpg" alt="banner3">
    <img src="./images/banner4.jpg" alt="banner4">
    <img src="./images/banner5.jpg" alt="banner5">
  </div>
</div>

CSS 样式

.banner {
  width: 100%;
  height: 600px;
  overflow: hidden;
}

.banner-wrap {
  width: 100%;
  height: 3000px;
  position: relative;
  transition: transform 1s;
}
.banner-wrap img {
  width: 100%;
}

JS 代码

// 获取元素
const banner = document.querySelector('.banner');
const bannerWrap = document.querySelector('.banner-wrap');
const bannerImgs = bannerWrap.querySelectorAll('img');

// 定义变量
const bannerHeight = banner.clientHeight; // banner图片宽度
let curIndex = 0; // 当前显示的图片编号

// 自动滚动
function move() {
  curIndex++;
  bannerWrap.style.transform = `translateY(-${bannerHeight * curIndex}px)`;

  // 当滚动到最后一张图片时,重置为第一张图片
  if (curIndex === bannerImgs.length - 1) {
    setTimeout(() => {
      curIndex = 0;
      bannerWrap.style.transform = `translateY(0)`;
    }, 1000);
  }
}

// 每3秒自动滚动图片
setInterval(move, 3000);

以上就是用原生 JS 实现 banner 无限滚动的代码和思路了。其中,通过 clientHeight 获取到了 banner 的高度,并用 setInterval 设置了滚动间隔。同时,通过 transition 属性实现了滚动时的平滑过渡。如果需要增加 banner 的数量,只需在 HTML 结构中增加图片,并修改变量 curIndex 的最大值即可。

示例说明一

如果您的 banner 都是水平排列的,只需将 translateY 改为 translateX 就可以实现横向无限滚动。

示例说明二

如果您需要增加滚动的速度,只需将 setInterval 函数中的 3000 改为更小的数字即可。但是需要注意的是,过快的滚动速度会导致用户体验不佳。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生JS利用transform实现banner的无限滚动示例代码 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • js开发中的页面、屏幕、浏览器的位置原理(高度宽度)说明讲解(附图)

    在JavaScript开发中,要理解页面、屏幕和浏览器的位置原理是非常重要的,这是因为在布局和交互方面都与这些位置相关联。下面将从高度和宽度两个方面详细讲解。 页面高度和宽度 在JavaScript中,可以通过下面的代码来获取页面的高度和宽度: var pageHeight = document.documentElement.scrollHeight; v…

    JavaScript 2023年6月11日
    00
  • 原生js实现验证码功能

    实现验证码功能是网站注册、登录等操作中常见的一项安全措施。本文将介绍如何使用原生JS实现验证码功能,包括以下几个步骤: 生成随机验证码。 将随机验证码渲染到页面上。 监听用户输入的验证码,进行验证。 刷新验证码。 生成随机验证码 要实现验证码功能,首先需要生成一个随机的验证码字符串。可以使用Math.random()和String.fromCharCode(…

    JavaScript 2023年6月10日
    00
  • JS正则表达式替换字符串replace()方法实例代码

    下面是关于JS正则表达式替换字符串replace()方法的详细攻略: 什么是JS正则表达式替换字符串replace()方法? 在JavaScript中,字符串replace() 方法可以将一个字符串中的指定内容替换成新的内容,这有很多应用场景。其中,JS正则表达式替换字符串replace()方法,可以让开发者使用正则表达式来进行替换操作,更加高效和灵活。 J…

    JavaScript 2023年5月28日
    00
  • js实现兔年转圈圈动画示例

    下面我将用Markdown格式文本详细讲解“js实现兔年转圈圈动画示例”的完整攻略。 什么是“js实现兔年转圈圈动画示例” “js实现兔年转圈圈动画示例”是一种使用HTML、CSS和JavaScript技术来实现的动态效果,它可以将一张兔年的图片进行旋转、变换等动态效果的展示。 如何实现“js实现兔年转圈圈动画示例” 步骤一:创建HTML文件 首先,我们需要…

    JavaScript 2023年6月10日
    00
  • vue3使用vue-router及路由权限拦截方式

    让我为你讲解一下“vue3使用vue-router及路由权限拦截方式”的完整攻略。 1. 安装和配置vue-router 首先需要在项目中安装vue-router。 npm install vue-router 接下来在main.js中配置路由,并将其挂载到Vue实例上: import { createRouter, createWebHistory } f…

    JavaScript 2023年6月11日
    00
  • 禁止弹窗中蒙层底部页面跟随滚动的几种方法

    请看以下完整攻略。 背景 在做弹窗时,通常会有蒙层的效果,以防止用户误点击背景操作。但是,这时候出现了一个问题,就是在弹窗出现的时候,蒙层底部的页面也跟着滚动了。影响了用户体验。因此,需要解决这个问题。 解决方案 在这里提供几种解决方案,可以根据实际情况选择其中一种或多种方法。 方案一:禁止body滚动 body { overflow: hidden; } …

    JavaScript 2023年6月11日
    00
  • Object的相关方法 和 js遍历对象的常用方法总结

    我会详细讲解“Object的相关方法和js遍历对象的常用方法总结”的完整攻略。 Object的相关方法 Object 是 JavaScript 的一个基础类型,它包含以下常用的方法: 创建对象 在 JavaScript 中,可以使用以下方法创建一个对象: 字面量方式 let obj = { prop1: ‘value1’, prop2: ‘value2’ }…

    JavaScript 2023年5月27日
    00
  • 微信小程序返回上一页的各种方法实例

    微信小程序返回上一页的各种方法实例 在微信小程序中,返回上一页是开发过程中经常会涉及到的一个需求。本文将详细讲解微信小程序中返回上一页的各种方法,并提供两个示例说明。 方法一:调用微信提供的API 微信小程序提供了一个 wx.navigateBack() 方法用于返回上一页,该方法可接受一个参数,表示返回的层数,默认值为1,即返回上一页。 示例代码如下: w…

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