当前位置:首页 > JavaScript

js 实现无缝

2026-04-06 10:25:56JavaScript

无缝滚动实现方法

使用CSS动画实现无缝滚动 通过CSS的@keyframesanimation属性可以创建无缝滚动效果。将内容包裹在容器中,设置动画从右向左移动,到达终点时重置位置。

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

使用JavaScript实现动态无缝滚动 通过定时器动态修改元素的transformleft属性,当元素完全移出可视区域时,将其重置到起始位置。

js 实现无缝

const container = document.querySelector('.scroll-container');
const content = document.querySelector('.scroll-content');
let position = 0;

function scroll() {
  position -= 1;
  if (position <= -content.offsetWidth) {
    position = 0;
  }
  content.style.transform = `translateX(${position}px)`;
  requestAnimationFrame(scroll);
}
scroll();

克隆节点实现无缝衔接 克隆滚动内容并追加到原内容后面,当原始内容滚动完毕时,立即切换到克隆内容,实现视觉上的无缝衔接。

js 实现无缝

const container = document.querySelector('.scroll-container');
const content = document.querySelector('.scroll-content');
content.innerHTML += content.innerHTML;
let position = 0;

function scroll() {
  position -= 1;
  if (position <= -content.offsetWidth/2) {
    position = 0;
  }
  content.style.transform = `translateX(${position}px)`;
  requestAnimationFrame(scroll);
}
scroll();

使用Web Animation API 现代浏览器支持的Web Animation API可以创建更流畅的动画效果,同时保持较好的性能。

const content = document.querySelector('.scroll-content');
const animation = content.animate(
  [{ transform: 'translateX(0)' }, { transform: 'translateX(-100%)' }],
  { duration: 10000, iterations: Infinity }
);

注意事项

  • 确保容器设置overflow: hidden以防止内容溢出
  • 对于动态内容,需要监听内容变化并重新计算布局
  • 移动端设备注意使用will-change: transform提升性能
  • 考虑使用requestAnimationFrame而不是setInterval以获得更流畅的动画

标签: js
分享给朋友:

相关文章

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js实现下拉刷新

js实现下拉刷新

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

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…