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

yizhihongxing

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日

相关文章

  • js获取dom的高度和宽度(可见区域及部分等等)

    要获取DOM元素的宽度和高度,我们可以使用JavaScript中的clientWidth和clientHeight属性。这两个属性返回的是DOM元素的可视区域大小,不包括边框和外边距。以下是获取DOM元素宽度和高度的代码: const element = document.getElementById(‘myElement’); const elementW…

    JavaScript 2023年6月10日
    00
  • Vue 滚动行为的具体使用方法

    Vue 滚动行为是一种 Vue Router 的功能,它允许在切换视图时添加页面滚动的行为,从而提升用户体验。以下是使用Vue 滚动行为的具体步骤: 步骤1:为Vue Router安装scrollBehavior插件 首先,在 Vue Router 导出的实例中添加 scrollBehavior 对象,该对象表示滚动行为配置: const router = …

    JavaScript 2023年6月11日
    00
  • JS和JQ的event对象区别分析

    JS和JQ都有一个event对象,但是它们的区别还是比较明显的。在这里我们来详细讲解一下。 1. JS的event对象 在JS中,事件触发时会自动生成一个event对象,并且通过addEventListener或者window.attachEvent绑定的函数,第一个参数都是event。event对象包含了一些事件的属性和方法,可以方便的获取事件的相关信息。…

    JavaScript 2023年6月10日
    00
  • js实现酷炫倒计时动画

    下面是“js实现酷炫倒计时动画”的完整攻略。 1. 倒计时的原理 倒计时的实现原理是计算当前时间与目标时间之间的时间差(以秒为单位),然后将时间差转换成时、分、秒等单位,最后将这些单位显示出来。在实现动画效果时,可以将显示的数据和动画效果绑定在一起,通常是通过CSS3中的transition或者动画实现。 2. 实现步骤 2.1 设定目标时间 首先我们需要确…

    JavaScript 2023年6月10日
    00
  • JS数组方法join()用法实例分析

    JS数组方法join()用法实例分析 在 JavaScript 中,数组是一种常用的数据结构。而 join() 方法可以将数组中所有元素转化为一个字符串,并返回这个字符串。本文将详细讲解 join() 方法的具体用法及示例。 语法 array.join(separator) 参数: separator:可选。指定每个元素被转换为字符串后,元素之间使用的字符串…

    JavaScript 2023年5月27日
    00
  • JavaScript表单验证示例详解

    下面是“JavaScript表单验证示例详解”的完整攻略: 一、概述 在网页开发中,为了保证用户输入的信息的正确性和完整性,我们通常会对用户所填写的表单进行验证。JavaScript是一种常用的前端语言,它可以通过编写代码实现表单验证的功能。本文将对JavaScript表单验证进行详细讲解,让大家可以通过学习掌握该技术。 二、表单验证的准备工具 实现表单验证…

    JavaScript 2023年6月10日
    00
  • JavaScript基于ChatGPT实现打字机消息回复

    下面是 JavaScript 基于 ChatGPT 实现打字机消息回复的完整攻略: 1. 确定使用的 ChatGPT API 首先,需要确定使用的 ChatGPT API,可以选择开放的 API 或者自建 API。如果选择自建 API,需要对 GPT-2 模型有一定的了解和能力。 2. 安装必要的 JavaScript 库 在 JavaScript 中,需要…

    JavaScript 2023年6月1日
    00
  • 用JavaScript计算在UTF-8下存储字符串占用字节数

    首先,我们需要了解UTF-8编码方式对于Unicode字符的存储规则。UTF-8使用一至四个字节来表示一个Unicode字符,其中使用一个字节来存储单字节字符,使用两至三个字节来存储双字节字符,使用四个字节来存储三至四字节字符。 接下来,我们可以使用JavaScript编写一个函数来计算某个字符串在UTF-8下占用字节数,具体过程如下: 将字符串转换为UTF…

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