当前位置:首页 > 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属性
  • 内存管理:清除不再使用的定时器

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

相关文章

h5实现左右滚动效果

h5实现左右滚动效果

使用CSS实现横向滚动 在HTML5中实现左右滚动效果,可以通过CSS的overflow-x属性配合white-space或flex布局实现。以下是一个基础示例: <div class="sc…

vue实现滚动效果

vue实现滚动效果

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

vue实现翻书效果

vue实现翻书效果

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

vue实现轮播效果

vue实现轮播效果

使用Swiper插件实现轮播 安装Swiper及相关依赖: npm install swiper vue-awesome-swiper 组件代码示例: <template> <…

vue实现开关效果

vue实现开关效果

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

vue 实现toggle效果

vue 实现toggle效果

使用 v-show 实现 Toggle 通过 v-show 指令可以控制元素的显示与隐藏,适合频繁切换的场景。v-show 仅切换 CSS 的 display 属性,不会销毁和重建 DOM。 <…