当前位置:首页 > JavaScript

js 实现 marquee

2026-04-05 19:10:52JavaScript

使用 CSS 实现 Marquee 效果

CSS 提供了 marquee 相关的动画属性,可以通过 animation@keyframes 实现文字或元素的滚动效果。

<div class="marquee">
  <span>这里是滚动的文字内容</span>
</div>
.marquee {
  width: 100%;
  overflow: hidden;
  white-space: nowrap;
}

.marquee span {
  display: inline-block;
  animation: marquee 10s linear infinite;
}

@keyframes marquee {
  0% { transform: translateX(100%); }
  100% { transform: translateX(-100%); }
}

使用 JavaScript 实现 Marquee

通过 JavaScript 动态计算位置,实现更灵活的滚动效果。

js 实现 marquee

<div class="marquee-js">
  <span>这里是滚动的文字内容</span>
</div>
const marquee = document.querySelector('.marquee-js span');
const container = document.querySelector('.marquee-js');
let position = container.offsetWidth;

function animate() {
  position--;
  if (position < -marquee.offsetWidth) {
    position = container.offsetWidth;
  }
  marquee.style.transform = `translateX(${position}px)`;
  requestAnimationFrame(animate);
}

animate();

使用 <marquee> HTML 标签(已废弃)

尽管 <marquee> 标签在现代浏览器中仍可用,但已不再推荐使用,因其不符合标准且性能较差。

js 实现 marquee

<marquee behavior="scroll" direction="left">这里是滚动的文字内容</marquee>

优化 JavaScript 实现

通过优化计算逻辑,减少不必要的重绘,提升性能。

const marquee = document.querySelector('.marquee-js span');
const container = document.querySelector('.marquee-js');
let position = 0;
const speed = 1;

function animate() {
  position -= speed;
  if (position < -marquee.offsetWidth) {
    position = container.offsetWidth;
  }
  marquee.style.transform = `translateX(${position}px)`;
  requestAnimationFrame(animate);
}

animate();

实现双向滚动

支持从左到右或从右到左的滚动方向。

const marquee = document.querySelector('.marquee-js span');
const container = document.querySelector('.marquee-js');
let position = container.offsetWidth;
const direction = -1; // 1 向右,-1 向左

function animate() {
  position += direction;
  if (direction === 1 && position > container.offsetWidth) {
    position = -marquee.offsetWidth;
  } else if (direction === -1 && position < -marquee.offsetWidth) {
    position = container.offsetWidth;
  }
  marquee.style.transform = `translateX(${position}px)`;
  requestAnimationFrame(animate);
}

animate();

以上方法提供了不同的实现方式,可根据需求选择 CSS 动画或 JavaScript 动态计算方案。

标签: jsmarquee
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback) {…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…