…">
当前位置:首页 > JavaScript

js实现相册浏览

2026-02-03 05:40:54JavaScript

实现相册浏览的基本功能

使用HTML、CSS和JavaScript可以构建一个简单的相册浏览功能。以下是一个基础实现方案:

HTML结构:

<div class="gallery">
  <div class="thumbnails">
    <img src="image1.jpg" alt="Image 1">
    <img src="image2.jpg" alt="Image 2">
    <img src="image3.jpg" alt="Image 3">
  </div>
  <div class="viewer">
    <img id="main-image" src="image1.jpg">
  </div>
</div>

CSS样式:

.gallery {
  display: flex;
}
.thumbnails {
  width: 100px;
}
.thumbnails img {
  width: 100%;
  cursor: pointer;
  margin-bottom: 5px;
}
.viewer {
  flex: 1;
  padding-left: 20px;
}
#main-image {
  max-width: 100%;
  max-height: 80vh;
}

JavaScript交互:

document.querySelectorAll('.thumbnails img').forEach(thumb => {
  thumb.addEventListener('click', function() {
    document.getElementById('main-image').src = this.src;
  });
});

添加相册切换动画

为提升用户体验,可以添加图片切换时的过渡效果:

CSS修改:

.viewer img {
  transition: opacity 0.3s ease;
}
.viewer img.fade-out {
  opacity: 0;
}

JavaScript修改:

function changeImage(newSrc) {
  const mainImg = document.getElementById('main-image');
  mainImg.classList.add('fade-out');

  setTimeout(() => {
    mainImg.src = newSrc;
    mainImg.classList.remove('fade-out');
  }, 300);
}

document.querySelectorAll('.thumbnails img').forEach(thumb => {
  thumb.addEventListener('click', function() {
    changeImage(this.src);
  });
});

实现全屏浏览功能

扩展功能允许用户点击主图进入全屏模式:

JavaScript添加:

js实现相册浏览

document.getElementById('main-image').addEventListener('click', function() {
  if (!document.fullscreenElement) {
    this.requestFullscreen().catch(err => {
      console.error(`全屏错误: ${err.message}`);
    });
  } else {
    document.exitFullscreen();
  }
});

CSS添加全屏样式:

#main-image:-webkit-full-screen {
  max-width: none;
  max-height: none;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

添加键盘导航支持

允许用户使用键盘左右箭头切换图片:

JavaScript扩展:

let currentIndex = 0;
const thumbs = document.querySelectorAll('.thumbnails img');

function updateImage(index) {
  currentIndex = (index + thumbs.length) % thumbs.length;
  changeImage(thumbs[currentIndex].src);
}

document.addEventListener('keydown', (e) => {
  if (e.key === 'ArrowLeft') {
    updateImage(currentIndex - 1);
  } else if (e.key === 'ArrowRight') {
    updateImage(currentIndex + 1);
  }
});

// 初始化时设置当前选中缩略图
thumbs.forEach((thumb, index) => {
  thumb.addEventListener('click', function() {
    currentIndex = index;
    changeImage(this.src);
  });
});

响应式布局调整

确保相册在不同设备上都能良好显示:

CSS媒体查询:

js实现相册浏览

@media (max-width: 768px) {
  .gallery {
    flex-direction: column;
  }
  .thumbnails {
    width: 100%;
    display: flex;
    overflow-x: auto;
  }
  .thumbnails img {
    width: 80px;
    margin-right: 5px;
  }
  .viewer {
    padding-left: 0;
    padding-top: 20px;
  }
}

图片预加载优化

提升大图加载体验:

JavaScript预加载逻辑:

function preloadImages() {
  thumbs.forEach(thumb => {
    const img = new Image();
    img.src = thumb.src;
  });
}

// 页面加载完成后预加载
window.addEventListener('load', preloadImages);

添加图片描述支持

HTML结构扩展:

<div class="viewer">
  <img id="main-image" src="image1.jpg">
  <div id="image-description">图片1的描述文字</div>
</div>

JavaScript更新:

thumbs.forEach(thumb => {
  thumb.addEventListener('click', function() {
    changeImage(this.src);
    document.getElementById('image-description').textContent = this.alt;
  });
});

CSS样式:

#image-description {
  margin-top: 10px;
  text-align: center;
  font-style: italic;
  color: #666;
}

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

相关文章

js实现全屏

js实现全屏

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

js实现列表

js实现列表

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

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

jquery js

jquery js

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

js实现变形

js实现变形

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