当前位置:首页 > JavaScript

js实现无缝滚动代码

2026-01-30 19:29:28JavaScript

实现无缝滚动的JavaScript代码

无缝滚动通常用于轮播图或新闻列表等场景,通过循环滚动内容实现无限播放效果。以下是两种常见的实现方式:

js实现无缝滚动代码

使用CSS动画结合JavaScript控制

// HTML结构示例
// <div class="scroll-container">
//   <div class="scroll-content">需要滚动的内容</div>
// </div>

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

// 克隆内容实现无缝衔接
content.innerHTML += content.innerHTML;

let scrollPos = 0;
function autoScroll() {
  scrollPos += 1;
  if(scrollPos >= content.scrollWidth / 2) {
    scrollPos = 0;
  }
  container.scrollLeft = scrollPos;
  requestAnimationFrame(autoScroll);
}
autoScroll();

使用transform实现性能更优的无缝滚动

const slider = document.querySelector('.slider');
const slides = document.querySelector('.slides');
const slideItems = document.querySelectorAll('.slide-item');

// 克隆第一组元素
slides.innerHTML += slides.innerHTML;

let currentPosition = 0;
const slideWidth = slideItems[0].offsetWidth;
const totalSlides = slideItems.length;

function animate() {
  currentPosition -= 1;
  if(Math.abs(currentPosition) >= slideWidth * totalSlides / 2) {
    currentPosition = 0;
  }
  slides.style.transform = `translateX(${currentPosition}px)`;
  requestAnimationFrame(animate);
}
animate();

关键实现要点

  1. 内容需要克隆一份追加到原有内容后面,当滚动到克隆部分时立即重置位置
  2. 使用requestAnimationFrame实现平滑动画,比setInterval性能更好
  3. 计算元素宽度时要考虑边框和padding的影响
  4. 对于水平滚动使用scrollLeft或transform: translateX
  5. 对于垂直滚动使用scrollTop或transform: translateY

响应式注意事项

窗口大小改变时需要重新计算元素尺寸:

js实现无缝滚动代码

window.addEventListener('resize', () => {
  slideWidth = slideItems[0].offsetWidth;
});

暂停和继续控制

可以通过标志位控制动画暂停:

let isPaused = false;
function toggleScroll() {
  isPaused = !isPaused;
  if(!isPaused) {
    animate();
  }
}

标签: 代码js
分享给朋友:

相关文章

js实现拷贝

js实现拷贝

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

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…