当前位置:首页 > 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实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选框 co…

js实现图片滚动

js实现图片滚动

图片滚动的实现方法 使用CSS动画实现 通过CSS的animation和@keyframes可以实现简单的图片滚动效果。这种方法适合静态图片的无缝循环滚动。 <style> .scr…