当前位置:首页 > JavaScript

js 实现走马灯

2026-01-30 15:48:19JavaScript

实现走马灯效果的方法

使用CSS动画和HTML结构

通过CSS的@keyframestransform属性实现水平滚动的走马灯效果。HTML结构需将内容包裹在容器内,CSS设置动画循环移动。

<div class="marquee">
  <div class="marquee-content">这里是走马灯内容,可以替换为任意文本或元素。</div>
</div>
.marquee {
  width: 100%;
  overflow: hidden;
  white-space: nowrap;
}
.marquee-content {
  display: inline-block;
  animation: scroll 10s linear infinite;
}
@keyframes scroll {
  0% { transform: translateX(100%); }
  100% { transform: translateX(-100%); }
}

使用JavaScript动态控制

通过定时器动态修改元素的lefttransform属性,实现更灵活的交互控制(如暂停、调速)。

const marquee = document.querySelector('.marquee-content');
let position = 0;
const speed = 2;

function animate() {
  position -= speed;
  if (position <= -marquee.offsetWidth) {
    position = document.querySelector('.marquee').offsetWidth;
  }
  marquee.style.transform = `translateX(${position}px)`;
  requestAnimationFrame(animate);
}
animate();

无缝循环的优化方案

克隆内容节点并拼接,当原始内容滚动完成后立即显示克隆内容,避免视觉断层。

const container = document.querySelector('.marquee');
const content = document.querySelector('.marquee-content');
content.innerHTML += content.innerHTML; // 克隆内容

let scrollPos = 0;
setInterval(() => {
  scrollPos += 1;
  if (scrollPos >= content.offsetWidth / 2) {
    scrollPos = 0;
  }
  container.scrollLeft = scrollPos;
}, 20);

响应式处理

通过监听窗口大小变化,动态调整走马灯速度或布局。

js 实现走马灯

window.addEventListener('resize', () => {
  const viewportWidth = window.innerWidth;
  document.querySelector('.marquee-content').style.animationDuration = 
    viewportWidth < 768 ? '15s' : '10s';
});

注意事项

  • 性能优化:使用transform代替left属性,避免重排。
  • 内容长度:确保内容宽度足够,否则动画可能不连贯。
  • 兼容性:老旧浏览器需添加-webkit-前缀。

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

相关文章

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…