当前位置:首页 > JavaScript

js实现相册

2026-04-05 12:45:22JavaScript

实现相册功能

使用JavaScript实现相册功能通常涉及图片展示、切换、缩放等交互。以下是基于HTML、CSS和JavaScript的简易相册实现方案。

HTML结构

创建基础的HTML结构,包含图片容器和导航按钮:

<div class="gallery">
  <img src="image1.jpg" class="active">
  <img src="image2.jpg">
  <img src="image3.jpg">
  <button class="prev">Previous</button>
  <button class="next">Next</button>
</div>

CSS样式

为相册添加基础样式,确保图片切换效果流畅:

js实现相册

.gallery {
  position: relative;
  width: 600px;
  height: 400px;
  margin: 0 auto;
  overflow: hidden;
}
.gallery img {
  position: absolute;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: opacity 0.5s;
  opacity: 0;
}
.gallery img.active {
  opacity: 1;
}
button {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
}
.prev { left: 10px; }
.next { right: 10px; }

JavaScript逻辑

实现图片切换功能:

document.addEventListener('DOMContentLoaded', function() {
  const images = document.querySelectorAll('.gallery img');
  const prevBtn = document.querySelector('.prev');
  const nextBtn = document.querySelector('.next');
  let currentIndex = 0;

  function showImage(index) {
    images.forEach(img => img.classList.remove('active'));
    images[index].classList.add('active');
  }

  prevBtn.addEventListener('click', () => {
    currentIndex = (currentIndex - 1 + images.length) % images.length;
    showImage(currentIndex);
  });

  nextBtn.addEventListener('click', () => {
    currentIndex = (currentIndex + 1) % images.length;
    showImage(currentIndex);
  });

  // 初始化显示第一张图片
  showImage(0);
});

扩展功能

  1. 缩略图导航
    添加缩略图列表,点击可快速跳转:

    js实现相册

    <div class="thumbnails">
      <img src="image1_thumb.jpg" data-index="0">
      <img src="image2_thumb.jpg" data-index="1">
      <img src="image3_thumb.jpg" data-index="2">
    </div>
    document.querySelectorAll('.thumbnails img').forEach(thumb => {
      thumb.addEventListener('click', () => {
        currentIndex = parseInt(thumb.getAttribute('data-index'));
        showImage(currentIndex);
      });
    });
  2. 自动轮播
    添加定时自动切换功能:

    let intervalId = setInterval(() => {
      currentIndex = (currentIndex + 1) % images.length;
      showImage(currentIndex);
    }, 3000);
    
    // 鼠标悬停时暂停轮播
    document.querySelector('.gallery').addEventListener('mouseenter', () => {
      clearInterval(intervalId);
    });
    document.querySelector('.gallery').addEventListener('mouseleave', () => {
      intervalId = setInterval(() => {
        currentIndex = (currentIndex + 1) % images.length;
        showImage(currentIndex);
      }, 3000);
    });
  3. 响应式设计
    通过CSS媒体查询适配不同屏幕尺寸:

    @media (max-width: 768px) {
      .gallery {
        width: 100%;
        height: 300px;
      }
    }

注意事项

  • 图片路径需根据实际项目结构调整
  • 大图加载可能需要预加载优化
  • 移动端可添加触摸事件支持滑动切换

标签: 相册js
分享给朋友:

相关文章

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…