当前位置:首页 > JavaScript

js 实现图片列表

2026-03-16 03:05:16JavaScript

实现图片列表的 JavaScript 方法

动态生成图片列表

通过 JavaScript 动态创建 DOM 元素,将图片数据渲染到页面上。假设有一个图片 URL 数组:

const images = [
  'image1.jpg',
  'image2.jpg',
  'image3.jpg'
];

const container = document.getElementById('image-container');

images.forEach(src => {
  const img = document.createElement('img');
  img.src = src;
  img.alt = 'Gallery image';
  container.appendChild(img);
});

使用模板字符串

对于更复杂的图片列表结构,可以使用模板字符串批量生成 HTML:

const images = [
  { src: 'photo1.jpg', title: 'Nature' },
  { src: 'photo2.jpg', title: 'Cityscape' }
];

document.getElementById('gallery').innerHTML = `
  <ul class="image-list">
    ${images.map(image => `
      <li>
        <img src="${image.src}" alt="${image.title}">
        <p>${image.title}</p>
      </li>
    `).join('')}
  </ul>
`;

懒加载实现

对于大量图片,实现懒加载优化性能:

const lazyImages = document.querySelectorAll('img[data-src]');

const lazyLoad = target => {
  const io = new IntersectionObserver((entries, observer) => {
    entries.forEach(entry => {
      if (entry.isIntersecting) {
        const img = entry.target;
        img.src = img.dataset.src;
        observer.unobserve(img);
      }
    });
  });

  io.observe(target);
};

lazyImages.forEach(lazyLoad);

响应式图片列表

结合 CSS Grid 或 Flexbox 创建响应式布局:

function createResponsiveGallery(images, columns) {
  const gallery = document.getElementById('gallery');
  gallery.style.display = 'grid';
  gallery.style.gridTemplateColumns = `repeat(${columns}, 1fr)`;

  images.forEach(imgSrc => {
    const imgElement = document.createElement('img');
    imgElement.src = imgSrc;
    imgElement.style.width = '100%';
    gallery.appendChild(imgElement);
  });
}

图片预览功能

为图片列表添加点击预览功能:

document.querySelectorAll('.thumbnail').forEach(thumb => {
  thumb.addEventListener('click', () => {
    const fullsizeSrc = thumb.dataset.fullsize;
    const preview = document.createElement('div');
    preview.className = 'preview-overlay';
    preview.innerHTML = `
      <img src="${fullsizeSrc}" class="preview-image">
      <button class="close-preview">X</button>
    `;
    document.body.appendChild(preview);

    preview.querySelector('.close-preview').addEventListener('click', () => {
      preview.remove();
    });
  });
});

使用现代框架示例(React)

在 React 中创建图片列表组件:

js 实现图片列表

function ImageGallery({ images }) {
  return (
    <div className="gallery">
      {images.map((image, index) => (
        <div key={index} className="gallery-item">
          <img 
            src={image.url} 
            alt={image.description}
            loading="lazy"
          />
        </div>
      ))}
    </div>
  );
}

注意事项

  • 始终为图片添加 alt 属性以提高可访问性
  • 考虑使用图片 CDN 进行优化
  • 对于大量图片实现分页或无限滚动
  • 添加适当的错误处理机制
  • 考虑使用 WebP 等现代图片格式提高性能

标签: 列表图片
分享给朋友:

相关文章

vue实现拖动图片验证

vue实现拖动图片验证

Vue 实现拖动图片验证功能 核心思路 拖动图片验证通常需要用户将图片拖动到指定区域或按正确顺序排列。实现时需要处理拖拽事件、验证逻辑和视觉反馈。 实现步骤 1. 基础组件结构 <templ…

js实现图片滚动效果

js实现图片滚动效果

使用CSS动画实现图片滚动 通过CSS的@keyframes和animation属性实现无缝滚动效果。将图片容器设置为横向排列,通过动画平移位置。 <style> .scroll-c…

vue实现列表权限

vue实现列表权限

实现列表权限控制的方法 在Vue中实现列表权限控制通常涉及前端逻辑与后端数据的配合。以下是几种常见方法: 基于角色或权限码的渲染控制 通过v-if或v-show指令根据用户权限动态渲染列表项: &…

uniapp 内容列表

uniapp 内容列表

uniapp 内容列表的实现方法 在uniapp中实现内容列表通常需要结合组件和数据绑定。以下是一个常见的方法: 模板部分 <template> <view class="c…

vue实现列表分页

vue实现列表分页

Vue 列表分页实现方法 基础分页实现 安装依赖(如使用第三方库) npm install vue-paginate 模板部分示例 <template> <div>…

vue实现图片压缩

vue实现图片压缩

使用 canvas 实现图片压缩 在 Vue 项目中可以通过 canvas 的 drawImage 和 toDataURL 方法实现图片压缩。创建一个方法处理图片文件,将其绘制到 canvas 并输出…