当前位置:首页 > JavaScript

js实现画廊

2026-02-01 10:25:11JavaScript

实现基础画廊布局

使用HTML和CSS创建基础的画廊容器结构。通过Flexbox或Grid布局实现响应式图片排列。

<div class="gallery">
  <img src="image1.jpg" alt="Gallery Image 1">
  <img src="image2.jpg" alt="Gallery Image 2">
  <img src="image3.jpg" alt="Gallery Image 3">
  <!-- 更多图片 -->
</div>
.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 16px;
  padding: 16px;
}

.gallery img {
  width: 100%;
  height: auto;
  border-radius: 8px;
  cursor: pointer;
  transition: transform 0.3s;
}

.gallery img:hover {
  transform: scale(1.03);
}

添加图片点击放大功能

使用JavaScript实现点击图片显示全屏预览功能,并添加导航按钮。

document.querySelectorAll('.gallery img').forEach(img => {
  img.addEventListener('click', function() {
    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.9)';
    modal.style.display = 'flex';
    modal.style.alignItems = 'center';
    modal.style.justifyContent = 'center';
    modal.style.zIndex = '1000';
    modal.style.cursor = 'pointer';

    const modalImg = document.createElement('img');
    modalImg.src = this.src;
    modalImg.style.maxHeight = '90vh';
    modalImg.style.maxWidth = '90vw';
    modalImg.style.objectFit = 'contain';

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

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

实现图片懒加载

优化性能,当图片进入可视区域时才加载。

function lazyLoadImages() {
  const images = document.querySelectorAll('.gallery img[data-src]');

  const observer = new IntersectionObserver((entries) => {
    entries.forEach(entry => {
      if (entry.isIntersecting) {
        const img = entry.target;
        img.src = img.dataset.src;
        img.removeAttribute('data-src');
        observer.unobserve(img);
      }
    });
  }, { threshold: 0.1 });

  images.forEach(img => observer.observe(img));
}

// 修改HTML,将src替换为data-src
// <img data-src="image1.jpg" alt="Gallery Image 1">

添加图片筛选功能

实现按类别筛选显示图片的功能。

// 为图片添加data-category属性
// <img src="image1.jpg" data-category="nature">

function setupFilterButtons() {
  const buttons = document.querySelectorAll('.filter-btn');
  const images = document.querySelectorAll('.gallery img');

  buttons.forEach(btn => {
    btn.addEventListener('click', () => {
      const category = btn.dataset.category;

      images.forEach(img => {
        if (category === 'all' || img.dataset.category === category) {
          img.style.display = 'block';
        } else {
          img.style.display = 'none';
        }
      });
    });
  });
}

实现滑动画廊效果

创建横向滑动的画廊展示,适合移动设备。

js实现画廊

.scroll-gallery {
  display: flex;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  gap: 10px;
  padding: 10px;
}

.scroll-gallery img {
  scroll-snap-align: start;
  min-width: 80vw;
  height: 60vh;
  object-fit: cover;
}

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

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现验证

js实现验证

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

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…