当前位置:首页 > JavaScript

js 实现画廊

2026-03-15 05:17:25JavaScript

实现基础画廊结构

使用HTML和CSS创建基础画廊布局,图片以网格形式排列。HTML部分包含一个容器和多个图片元素,CSS设置网格布局或Flexbox。

<div class="gallery">
  <img src="image1.jpg" alt="Image 1">
  <img src="image2.jpg" alt="Image 2">
  <!-- 更多图片 -->
</div>
.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 10px;
  padding: 20px;
}
.gallery img {
  width: 100%;
  height: auto;
  object-fit: cover;
  border-radius: 5px;
  cursor: pointer;
}

添加点击放大功能

通过JavaScript监听图片点击事件,创建模态框显示放大后的图片。

document.querySelectorAll('.gallery img').forEach(img => {
  img.addEventListener('click', () => {
    const modal = document.createElement('div');
    modal.style.position = 'fixed';
    modal.style.top = '0';
    modal.style.left = '0';
    modal.style.width = '100vw';
    modal.style.height = '100vh';
    modal.style.backgroundColor = 'rgba(0,0,0,0.8)';
    modal.style.display = 'flex';
    modal.style.justifyContent = 'center';
    modal.style.alignItems = 'center';
    modal.style.zIndex = '1000';

    const modalImg = document.createElement('img');
    modalImg.src = img.src;
    modalImg.style.maxWidth = '80%';
    modalImg.style.maxHeight = '80%';

    modal.appendChild(modalImg);
    document.body.appendChild(modal);

    modal.addEventListener('click', () => {
      document.body.removeChild(modal);
    });
  });
});

实现滑动切换功能

在模态框中添加导航按钮,允许用户切换上一张或下一张图片。

let currentIndex = 0;
const images = document.querySelectorAll('.gallery img');

function showModal(index) {
  const modal = document.createElement('div');
  modal.style.position = 'fixed';
  // ...模态框样式同上...

  const modalImg = document.createElement('img');
  modalImg.src = images[index].src;
  // ...图片样式同上...

  const prevBtn = document.createElement('button');
  prevBtn.textContent = '❮';
  prevBtn.style.position = 'absolute';
  prevBtn.style.left = '20px';
  prevBtn.style.fontSize = '2rem';
  prevBtn.style.backgroundColor = 'transparent';
  prevBtn.style.border = 'none';
  prevBtn.style.color = 'white';
  prevBtn.style.cursor = 'pointer';

  const nextBtn = document.createElement('button');
  nextBtn.textContent = '❯';
  nextBtn.style.position = 'absolute';
  nextBtn.style.right = '20px';
  // ...样式同上...

  prevBtn.addEventListener('click', (e) => {
    e.stopPropagation();
    currentIndex = (currentIndex - 1 + images.length) % images.length;
    modalImg.src = images[currentIndex].src;
  });

  nextBtn.addEventListener('click', (e) => {
    e.stopPropagation();
    currentIndex = (currentIndex + 1) % images.length;
    modalImg.src = images[currentIndex].src;
  });

  modal.appendChild(prevBtn);
  modal.appendChild(modalImg);
  modal.appendChild(nextBtn);
  document.body.appendChild(modal);

  modal.addEventListener('click', () => {
    document.body.removeChild(modal);
  });
}

images.forEach((img, index) => {
  img.addEventListener('click', () => {
    currentIndex = index;
    showModal(currentIndex);
  });
});

响应式布局优化

通过CSS媒体查询调整画廊在不同屏幕尺寸下的显示效果。

js 实现画廊

@media (max-width: 600px) {
  .gallery {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 400px) {
  .gallery {
    grid-template-columns: 1fr;
  }
}

性能优化建议

  • 使用懒加载技术延迟加载图片,减少初始页面负载。
  • 为图片添加loading="lazy"属性:
    <img src="image1.jpg" alt="Image 1" loading="lazy">
  • 压缩图片文件大小,确保加载速度。

标签: 画廊js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现复制

js实现复制

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

js实现乘

js实现乘

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

js轮播图实现原理

js轮播图实现原理

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

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现求导

js实现求导

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