当前位置:首页 > JavaScript

js 实现 marquee

2026-02-01 02:48:20JavaScript

实现 Marquee 效果

使用 JavaScript 实现 Marquee(跑马灯)效果可以通过多种方式完成,以下是几种常见的方法:

js 实现 marquee

使用 CSS 动画结合 JavaScript

通过 CSS 的 @keyframesanimation 属性实现滚动效果,JavaScript 用于动态控制内容。

js 实现 marquee

<div id="marquee" style="overflow: hidden; white-space: nowrap;">
  <span id="marquee-content">这里是需要滚动的内容,可以很长很长...</span>
</div>
const marqueeContent = document.getElementById('marquee-content');
const marquee = document.getElementById('marquee');

// 克隆内容以实现无缝滚动
marqueeContent.innerHTML += marqueeContent.innerHTML;

// 获取内容宽度
const contentWidth = marqueeContent.scrollWidth / 2;

// 设置动画
marqueeContent.style.animation = `scroll ${contentWidth / 50}s linear infinite`;

// 定义 CSS 动画
const style = document.createElement('style');
style.innerHTML = `
  @keyframes scroll {
    0% { transform: translateX(0); }
    100% { transform: translateX(-${contentWidth}px); }
  }
`;
document.head.appendChild(style);

使用 JavaScript 定时器

通过 setInterval 动态修改元素的 scrollLefttransform 属性实现滚动。

<div id="marquee" style="overflow: hidden; white-space: nowrap;">
  <span id="marquee-content">这里是需要滚动的内容,可以很长很长...</span>
</div>
const marqueeContent = document.getElementById('marquee-content');
const marquee = document.getElementById('marquee');

// 克隆内容
marqueeContent.innerHTML += marqueeContent.innerHTML;

let position = 0;
const speed = 2; // 滚动速度

function scrollMarquee() {
  position -= speed;
  if (position <= -marqueeContent.scrollWidth / 2) {
    position = 0;
  }
  marqueeContent.style.transform = `translateX(${position}px)`;
  requestAnimationFrame(scrollMarquee);
}

scrollMarquee();

使用 HTML <marquee> 标签(不推荐)

虽然 HTML 原生支持 <marquee> 标签,但已过时,不建议在现代项目中使用。仅作参考:

<marquee behavior="scroll" direction="left">
  这里是需要滚动的内容,可以很长很长...
</marquee>

注意事项

  1. 性能优化:使用 requestAnimationFrame 替代 setInterval 可以获得更流畅的动画效果。
  2. 响应式设计:动态计算内容宽度以适应不同屏幕尺寸。
  3. 无缝滚动:通过克隆内容并重置位置实现无缝循环。
  4. 暂停交互:可以通过 JavaScript 监听鼠标事件实现悬停暂停功能。
marquee.addEventListener('mouseenter', () => {
  marqueeContent.style.animationPlayState = 'paused';
});

marquee.addEventListener('mouseleave', () => {
  marqueeContent.style.animationPlayState = 'running';
});

标签: jsmarquee
分享给朋友:

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…