当前位置:首页 > JavaScript

js实现跑马灯效果

2026-04-05 00:48:58JavaScript

实现跑马灯效果的JavaScript方法

使用CSS动画结合JavaScript控制

通过CSS定义动画关键帧,JavaScript动态调整内容宽度和动画时长。以下是示例代码:

<div class="marquee-container">
  <div class="marquee-content">这里是需要滚动的文本内容...</div>
</div>

<style>
.marquee-container {
  width: 100%;
  overflow: hidden;
  white-space: nowrap;
}
.marquee-content {
  display: inline-block;
  animation: marquee 10s linear infinite;
}
@keyframes marquee {
  0% { transform: translateX(100%); }
  100% { transform: translateX(-100%); }
}
</style>

纯JavaScript实现

通过定时器不断修改元素位置实现滚动:

function startMarquee(element, speed = 50) {
  const container = document.querySelector(element);
  const content = container.firstElementChild;
  const containerWidth = container.offsetWidth;
  const contentWidth = content.offsetWidth;

  let position = containerWidth;

  function animate() {
    position -= 1;
    if (position < -contentWidth) {
      position = containerWidth;
    }
    content.style.transform = `translateX(${position}px)`;
    requestAnimationFrame(animate);
  }

  animate();
}

响应式处理

添加窗口大小变化时的自适应处理:

window.addEventListener('resize', () => {
  // 重新计算容器和内容宽度
  // 重置动画位置
});

暂停和继续功能

通过控制CSS动画的播放状态实现交互:

const marquee = document.querySelector('.marquee-content');
marquee.style.animationPlayState = 'paused'; // 暂停
marquee.style.animationPlayState = 'running'; // 继续

注意事项

js实现跑马灯效果

  • 确保内容宽度大于容器宽度时才启用动画
  • 移动端需要考虑触摸事件的处理
  • 性能优化:使用transform而非left/top属性
  • 内存管理:清除不再使用的定时器

标签: 跑马灯效果
分享给朋友:

相关文章

vue实现滚动效果

vue实现滚动效果

Vue 实现滚动效果的方法 使用原生滚动方法 通过 Vue 的 ref 获取 DOM 元素,调用原生 scrollTo 或 scrollIntoView 方法实现滚动。 <template&g…

vue效果实现

vue效果实现

Vue 效果实现方法 Vue.js 提供了多种方式实现动态效果,包括过渡动画、状态驱动的 UI 变化以及第三方动画库集成。以下是常见效果的实现方案: 过渡动画 使用 Vue 内置的 <tran…

vue实现翻书效果

vue实现翻书效果

Vue实现翻书效果的方法 翻书效果可以通过CSS动画和Vue的动态绑定实现,以下是几种常见的实现方式: 使用CSS transform和transition 通过CSS的transform属性实现翻…

vue实现开关效果

vue实现开关效果

使用Vue实现开关效果 使用v-model绑定数据 通过v-model绑定一个布尔值来控制开关状态。当用户点击开关时,布尔值会自动更新。 <template> <div cla…

vue 实现滑动效果

vue 实现滑动效果

Vue 实现滑动效果的方法 使用 CSS Transition 通过 Vue 的 v-if 或 v-show 结合 CSS Transition 实现滑动效果。定义一个 CSS 类,利用 transf…

vue实现taggle效果

vue实现taggle效果

Vue实现Toggle效果 在Vue中实现Toggle效果可以通过多种方式完成,以下是几种常见的方法: 方法1:使用v-model和v-show/v-if 通过v-model绑定一个布尔值,结合v…