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基础知识大集锦(二) 推荐收藏

    JavaScript基础知识大集锦(二) 推荐收藏 1. 为什么要学习JavaScript基础知识 JavaScript是网页开发的基础,无论是网页的交互动画设计还是后端的Node.js开发,都离不开JavaScript。因此,学习JavaScript基础知识是每个Web开发者必不可少的一步。 2. JavaScript基础知识大集锦(二)主要内容 本篇文章…

    JavaScript 2023年5月18日
    00
  • javascript中Number对象的toString()方法分析

    我们先来了解一下Number对象。 Number对象 在JavaScript中,Number对象是一个基本的数据类型,用于表示数字。它包含以下常用的属性和方法: 常用属性: Number.MAX_VALUE: 最大值(1.7976931348623157e+308) Number.MIN_VALUE: 最小值(5e-324) Number.NaN: 表示非数…

    JavaScript 2023年6月10日
    00
  • 使用canvas生成含有微信头像的邀请海报没有微信头像问题

    使用Canvas生成含有微信头像的邀请海报是一项常见的需求,当中有时会遇到生成海报时,无法正确显示微信头像的问题。基于此,我编写了以下攻略来帮助您解决该问题。 常见问题分析 微信头像无法正确显示原因 微信头像无法正确显示,通常情况下是由于CORS的限制所导致的。在浏览器中,脚本的跨源HTTP请求通常会受到同源策略的限制,因此无法获取其他网站的数据。而我们在使…

    JavaScript 2023年6月11日
    00
  • C#设置或验证PDF文本域格式的方法详解

    C#设置或验证PDF文本域格式的方法详解 介绍 PDF文本域是指在PDF文档中提供的一种可编辑的文本框,用户可以输入文本或选择选项。如果需要对PDF文本域的格式进行设置或验证,那么就需要使用C#编写代码来实现。 本文将详细讲解如何使用C#设置或验证PDF文本域格式,包括以下内容: 创建PDF文本域 设置PDF文本域格式 验证PDF文本域格式 创建PDF文本域…

    JavaScript 2023年5月19日
    00
  • js动态设置div的值下例子

    下面让我来详细讲解“js动态设置div的值”的完整攻略。 基本概念 在开始具体的实现代码之前,我们先来了解一下这个问题的基本概念。 动态设置div的值:指的是通过JavaScript脚本代码实现在网页中的某个元素(如div)中动态设置内容,而不是直接在HTML代码中写死。 实现过程 实现动态设置div的值可以分为以下两个步骤: 1. 获取div元素 在Jav…

    JavaScript 2023年6月11日
    00
  • Javascript中的关键字和保留字整理

    Javascript中的关键字和保留字整理 在Javascript中,有些字是具有特殊含义的,这些字被称为关键字。而有些字没有特殊含义,但是被保留,这些字就被称为保留字。本文将介绍Javascript中的关键字和保留字,以及它们的具体用途。 关键字 Javascript中的关键字是指具有特殊含义的字,不可以用作变量名或函数名等标识符。下面列出Javascri…

    JavaScript 2023年5月18日
    00
  • Three.js快速入门教程

    下面是”Three.js快速入门教程”的完整攻略,涵盖了安装Three.js、创建场景、添加网格、添加光源、渲染场景等基本步骤。 1. 安装Three.js 在使用Three.js之前,我们需要先将其引入项目中。可以通过以下两种方式来引入: 下载Three.js的源文件到本地并且引入: “`html 2. 在需要使用Three.js的文件中使用CDN地址:…

    JavaScript 2023年5月28日
    00
  • 用js实现简单轮播图

    下面是用js实现简单轮播图的完整攻略: 1. 创建HTML结构 首先,我们需要先在HTML中创建结构,包括轮播图的容器和图片等元素。代码如下所示: <div class="carousel"> <ul class="carousel-list"> <li><img src=&q…

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