js实现的类marquee水平循环滚动

JS实现的类marquee水平循环滚动,是指在一个容器内部以水平方向不间断滚动一段文字或图片等内容,类似于HTML中的标签效果。以下为完整的攻略:

步骤1:HTML结构

首先,在HTML中建立一个容器,例如:

<div id="scroll-container">
  <span>这是一段滚动文字</span>
</div>

步骤2:CSS样式

为了让容器能够水平滚动,需要设置容器的宽度,并将内部内容设置为行内块元素。还需要将容器设置为溢出隐藏,使内容在容器内部滚动。例如:

#scroll-container {
  width: 100%;
  overflow: hidden;
}

#scroll-container span {
  display: inline-block;
}

步骤3:JS功能实现

接下来,需要用JS实现滚动功能。具体实现步骤如下:

  1. 获取容器和内容元素
  2. 获取容器宽度
  3. 复制一份内容元素,并将其插入到容器末尾,形成一个连续的内容序列
  4. 定时器实现滚动功能,步长可以自定义,默认为1像素
  5. 当滚动到内容末尾时,重置滚动位置以实现循环滚动

下面是示例代码:

// 获取容器和内容元素
var container = document.getElementById('scroll-container');
var content = container.getElementsByTagName('span')[0];

// 获取容器宽度
var containerWidth = container.offsetWidth;

// 复制一份内容元素
var newContent = content.cloneNode(true);
// 将新内容插入到容器末尾
container.appendChild(newContent);

// 每隔10毫秒向右移动1个像素的滚动效果
var scrollStep = 1;
setInterval(function() {
  var left = container.scrollLeft + scrollStep;
  // 判断是否到达右侧边界
  if (left >= newContent.offsetLeft) {
    left -= newContent.offsetWidth;
  }
  // 滚动到指定位置
  container.scrollLeft = left;
}, 10);

示例1:滚动图片

这是一段滚动图片的示例代码,整个滚动效果和滚动文字类似,只需要将内部的元素改为图片即可。

<div id="scroll-container">
  <img src="image1.jpg">
</div>
#scroll-container {
  width: 100%;
  overflow: hidden;
}

#scroll-container img {
  display: inline-block;
}
// 获取容器和内容元素
var container = document.getElementById('scroll-container');
var content = container.getElementsByTagName('img')[0];

// 获取容器宽度
var containerWidth = container.offsetWidth;

// 复制一份内容元素
var newContent = content.cloneNode(true);
// 将新内容插入到容器末尾
container.appendChild(newContent);

// 每隔10毫秒向右移动1个像素的滚动效果
var scrollStep = 1;
setInterval(function() {
  var left = container.scrollLeft + scrollStep;
  // 判断是否到达右侧边界
  if (left >= newContent.offsetLeft) {
    left -= newContent.offsetWidth;
  }
  // 滚动到指定位置
  container.scrollLeft = left;
}, 10);

示例2:循环滚动多个元素

这是一个循环滚动多个元素的示例代码,在此示例中,需要将容器宽度设置为每个元素的宽度之和,以便让每个元素顺序循环滚动。

<div id="scroll-container">
  <span>这是第一个元素</span>
  <span>这是第二个元素</span>
  <span>这是第三个元素</span>
</div>
#scroll-container {
  width: 300px; /* 每个元素的宽度为100px,共3个元素,因此宽度为300px */
  overflow: hidden;
}

#scroll-container span {
  display: inline-block;
  width: 100px;
}
// 获取容器和内容元素
var container = document.getElementById('scroll-container');
var contents = container.getElementsByTagName('span');

// 获取容器宽度
var containerWidth = container.offsetWidth;

// 复制一份所有内容元素
for (var i = 0; i < contents.length; i++) {
  var newContent = contents[i].cloneNode(true);
  container.appendChild(newContent);
}

// 每隔10毫秒向右移动1个像素的滚动效果
var scrollStep = 1;
setInterval(function() {
  var left = container.scrollLeft + scrollStep;
  // 判断是否到达右侧边界
  if (left >= containerWidth) {
    left -= containerWidth;
  }
  // 滚动到指定位置
  container.scrollLeft = left;
}, 10);

以上就是实现JS类marquee水平循环滚动的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现的类marquee水平循环滚动 - Python技术站

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

相关文章

  • JavaScript 判断iPhone X Series机型的方法

    下面是详细讲解”JavaScript 判断iPhone X Series机型的方法” 的完整攻略。 前言 首先,我们需要了解一下 iPhone X Series 机型的特点,它们比一般的 iPhone 机型拥有更高的设备屏幕分辨率,并且它们的设备宽高比(device aspect ratio)都是 1125:2436。 判断方法 为了判断一个设备是否为 iP…

    JavaScript 2023年6月11日
    00
  • JavaScript判断DOM何时加载完毕的技巧

    JavaScript是一门运行在客户端的编程语言,它可以操作和控制网页中的元素和内容。但有些时候,我们需要确保DOM加载完毕后再执行JavaScript代码,因为如果在DOM加载之前执行JavaScript代码,可能会出现错误。 以下是判断DOM何时加载完毕的几种技巧: 1. window.onload window.onload是最常用的判断DOM是否加载…

    JavaScript 2023年6月10日
    00
  • 详解tween.js的使用教程

    详解tween.js的使用教程 什么是tween.js? tween.js是一款简单易用的JavaScript补间动画库,它可以让Web开发者很方便地创建和控制复杂的动画效果。它的特点是功能全面、易于使用,支持各种类型的动画插值器和缓动函数,以及灵活的回调函数和参数调整。此外,它还支持并行和序列动画,实现动画效果的细粒度控制。 如何使用tween.js? 1…

    JavaScript 2023年6月11日
    00
  • vue router总结 $router和$route及router与 router与route区别

    下面来详细讲解一下 “vue router 总结 $router和$route及router与 router与route区别” 1. 什么是vue-router? Vue Router 是 Vue.js 官方的路由管理器。它与 Vue.js 核心深度集成,我们可以用 Vue.js 生成的组件结构快速构建 SPA,并且非常方便地管理应用程序的路由。Vue Ro…

    JavaScript 2023年6月11日
    00
  • 深入理解javascript中的this

    深入理解JavaScript中的this的完整攻略 什么是this 所谓 this ,就是JavaScript中一个相对特殊的关键字,指向当前函数的执行环境。换句话说,this 可以看做是一个对象,这个对象指向的是函数执行时所在的环境对象,而这个环境对象是由调用方式来决定的。 this指向的典型情况 在JavaScript中,this 的指向是根据如何调用当…

    JavaScript 2023年6月10日
    00
  • php中preg_replace正则替换用法分析【一次替换多个值】

    《PHP中preg_replace正则替换用法分析【一次替换多个值】》是一篇介绍PHP中正则替换的文章,主要介绍preg_replace函数中的一些使用技巧,可以一次替换多个值。 一、preg_replace函数 preg_replace是PHP中用于正则替换的函数。它的语法如下: preg_replace($pattern, $replacement, $…

    JavaScript 2023年6月10日
    00
  • 从面试题学习Javascript 面向对象(创建对象)

    很高兴能够为你详细讲解“从面试题学习Javascript 面向对象(创建对象)”的完整攻略。下面我将为你提供详细的自学指导及相关示例。 学习Javascript面向对象的创建对象 了解Javascript中对象的创建方式 在Javascript中,有多种创建对象的方式,包括: 对象字面量语法 构造函数 Object.create方法 工厂函数等 在学习创建对…

    JavaScript 2023年5月27日
    00
  • javascript动画系列之模拟滚动条

    我来给你详细讲解 “javascript动画系列之模拟滚动条”的完整攻略。本篇攻略将分成以下几个部分介绍如何使用 JavaScript 实现一个模拟滚动条。 准备工作 在进行模拟滚动条的制作之前,我们需要有 HTML 和 CSS 的基础。这里不做过多的讲解,只讲有关滚动条部分的 HTML 和 CSS 代码。下面的代码片段是例子的 HTML 代码: <d…

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