当前位置:首页 > JavaScript

js实现图片滚动

2026-02-28 22:17:13JavaScript

实现图片滚动的JavaScript方法

使用CSS动画结合JavaScript控制

通过CSS定义动画效果,JavaScript控制动画的启停或方向。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(-50%); }
}
const container = document.querySelector('.scroll-container');
container.addEventListener('mouseenter', () => {
  container.querySelector('.scroll-content').style.animationPlayState = 'paused';
});
container.addEventListener('mouseleave', () => {
  container.querySelector('.scroll-content').style.animationPlayState = 'running';
});

使用JavaScript定时器实现滚动

通过setInterval动态修改元素的transformmargin属性,实现逐帧滚动效果。

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

function scrollImages() {
  position -= speed;
  if (position <= -content.scrollWidth / 2) {
    position = 0;
  }
  content.style.transform = `translateX(${position}px)`;
}

const interval = setInterval(scrollImages, 16);
document.querySelector('.scroll-container').addEventListener('mouseenter', () => {
  clearInterval(interval);
});

使用requestAnimationFrame优化性能

相比setIntervalrequestAnimationFrame能更好地与浏览器刷新率同步,避免卡顿。

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

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

animationId = requestAnimationFrame(animate);
document.querySelector('.scroll-container').addEventListener('mouseenter', () => {
  cancelAnimationFrame(animationId);
});

无缝循环滚动的实现技巧

克隆滚动内容并拼接,当滚动到克隆部分时重置位置,实现视觉上的无缝衔接。

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

function scroll() {
  container.scrollLeft += 1;
  if (container.scrollLeft >= content.scrollWidth / 2) {
    container.scrollLeft = 0;
  }
}

const interval = setInterval(scroll, 16);

响应式设计的注意事项

通过监听窗口大小变化,动态调整滚动速度或容器尺寸。

window.addEventListener('resize', () => {
  const containerWidth = document.querySelector('.scroll-container').offsetWidth;
  // 根据容器宽度调整滚动参数
});

触摸设备支持

添加touchstarttouchend事件处理,确保在移动设备上也能正常交互。

js实现图片滚动

const container = document.querySelector('.scroll-container');
container.addEventListener('touchstart', () => {
  // 暂停滚动
});
container.addEventListener('touchend', () => {
  // 恢复滚动
});

标签: 图片js
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

vue实现图片

vue实现图片

Vue 实现图片展示的方法 在 Vue 中实现图片展示可以通过多种方式完成,以下是一些常见的方法: 使用 img 标签直接引入 通过 img 标签的 src 属性直接引入本地或远程图片: <…

vue 实现图片

vue 实现图片

Vue 实现图片加载与展示的方法 在 Vue 中实现图片加载和展示可以通过多种方式完成,包括静态资源引用、动态绑定、懒加载等。以下是几种常见的方法: 静态资源引用 将图片放在项目的 public 或…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…