当前位置:首页 > JavaScript

js 实现 marquee

2026-02-01 02:48:20JavaScript

实现 Marquee 效果

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

使用 CSS 动画结合 JavaScript

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

<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';
});

js 实现 marquee

标签: jsmarquee
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https:/…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previ…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div c…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…