当前位置:首页 > JavaScript

js 实现走马灯

2026-03-01 06:51:53JavaScript

实现走马灯效果的方法

使用CSS动画和JavaScript控制

通过CSS的@keyframes定义动画,结合JavaScript动态控制内容切换。

<div class="marquee-container">
  <div class="marquee-content">这里是走马灯内容1 | 内容2 | 内容3</div>
</div>
.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%); }
}
// 动态更新内容
document.querySelector('.marquee-content').textContent = '新内容1 | 新内容2';

纯JavaScript实现

通过定时器动态修改元素位置实现滚动效果。

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

function scrollMarquee() {
  position--;
  if (position < -text.offsetWidth) {
    position = marquee.offsetWidth;
  }
  text.style.transform = `translateX(${position}px)`;
  requestAnimationFrame(scrollMarquee);
}

scrollMarquee();

使用第三方库

例如使用jQuery插件快速实现:

<div class="marquee">滚动内容</div>
$('.marquee').marquee({
  duration: 5000,
  gap: 50,
  delayBeforeStart: 0,
  direction: 'left',
  duplicated: true
});

响应式走马灯

添加窗口大小监听,自适应容器宽度:

function initMarquee() {
  const container = document.querySelector('.marquee-container');
  const content = document.querySelector('.marquee-content');

  function updateSpeed() {
    const widthRatio = content.scrollWidth / container.offsetWidth;
    content.style.animationDuration = `${10 * widthRatio}s`;
  }

  window.addEventListener('resize', updateSpeed);
  updateSpeed();
}

initMarquee();

垂直走马灯

修改CSS实现垂直滚动效果:

js 实现走马灯

.marquee-vertical {
  height: 100px;
  overflow: hidden;
}
.marquee-content-vertical {
  animation: marquee-vertical 5s linear infinite;
}
@keyframes marquee-vertical {
  0% { transform: translateY(100%); }
  100% { transform: translateY(-100%); }
}

关键点在于根据实际需求选择实现方式,CSS方案性能较好但控制灵活性较低,纯JavaScript方案可实现更复杂的交互逻辑。

标签: 走马灯js
分享给朋友:

相关文章

js实现图片轮播

js实现图片轮播

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

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let curr…