当前位置:首页 > JavaScript

js实现marquee

2026-01-31 22:39:47JavaScript

使用HTML原生marquee标签

HTML自带<marquee>标签可实现简单的滚动效果,但已过时(不推荐生产环境使用):

js实现marquee

<marquee behavior="scroll" direction="left">滚动文本内容</marquee>
  • behavior: 可选scroll(循环滚动)、slide(滑动停止)、alternate(往返滚动)
  • direction: 控制方向(left, right, up, down

使用CSS动画实现

通过CSS @keyframestransform实现更现代的滚动效果:

js实现marquee

<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%); }
}
  • 调整animation-duration(如10s)控制速度
  • 支持双向滚动:修改transform值为translateY可实现垂直滚动

使用JavaScript动态控制

通过定时器动态修改元素位置实现灵活控制:

<div id="js-marquee" style="overflow: hidden;">
  <span id="marquee-text">需要滚动的文本内容</span>
</div>
const marquee = document.getElementById('js-marquee');
const text = document.getElementById('marquee-text');
let position = marquee.offsetWidth;

function animate() {
  position--;
  if (position < -text.offsetWidth) {
    position = marquee.offsetWidth;
  }
  text.style.transform = `translateX(${position}px)`;
  requestAnimationFrame(animate);
}
animate();
  • 使用requestAnimationFrame优化性能
  • 可通过position增减实现不同方向滚动

第三方库(如jQuery)

使用jQuery简化实现:

$('.marquee').each(function() {
  const $this = $(this);
  $this.css('overflow', 'hidden');
  const text = $this.find('span');
  let position = $this.width();

  setInterval(() => {
    position--;
    if (position < -text.width()) {
      position = $this.width();
    }
    text.css('transform', `translateX(${position}px)`);
  }, 20);
});

注意事项

  • 性能优化:避免频繁DOM操作,使用transform代替left/top
  • 响应式设计:监听容器宽度变化时重置position
  • 无缝循环:克隆内容节点实现平滑衔接

根据需求选择方案,CSS动画适用于简单场景,JavaScript方案提供更高可控性。

标签: jsmarquee
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现复制功能

js实现复制功能

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

js 实现滚动

js 实现滚动

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

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

js 实现递归

js 实现递归

递归的基本概念 递归是指函数直接或间接调用自身的过程。在JavaScript中,递归通常用于解决可以分解为相似子问题的问题,如阶乘、斐波那契数列、树形结构遍历等。 递归的实现要点 基线条件(Base…