当前位置:首页 > 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添加:

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媒体查询:

@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实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js防抖和节流实现

js防抖和节流实现

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

js实现瀑布流

js实现瀑布流

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