You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求提供具备缩略图与主图互换功能的Angular轮播示例

Angular 双向切换轮播组件示例

实现以下核心功能:

  • 显示一张处于激活状态的主图
  • 点击缩略图时,该缩略图替换当前主图
  • 原主图同时移动至被点击缩略图的位置

<div class="carousel-container">
  <!-- 主图区域 -->
  <div class="main-image-wrapper">
    <img [src]="activeImage.url" alt="{{activeImage.alt}}" class="main-image" />
  </div>

  <!-- 缩略图区域 -->
  <div class="thumbnails-wrapper">
    <div 
      class="thumbnail-item"
      *ngFor="let image of thumbnails; let i = index"
      (click)="swapImages(i)"
    >
      <img [src]="image.url" alt="{{image.alt}}" class="thumbnail-image" />
    </div>
  </div>
</div>
import { Component } from '@angular/core';

interface ImageItem {
  url: string;
  alt: string;
}

@Component({
  selector: 'app-image-carousel',
  templateUrl: './app-image-carousel.component.html',
  styleUrls: ['./app-image-carousel.component.css']
})
export class AppImageCarouselComponent {
  activeImage: ImageItem = {
    url: 'https://picsum.photos/id/237/800/400',
    alt: '主图示例'
  };

  thumbnails: ImageItem[] = [
    { url: 'https://picsum.photos/id/1/200/100', alt: '缩略图1' },
    { url: 'https://picsum.photos/id/2/200/100', alt: '缩略图2' },
    { url: 'https://picsum.photos/id/3/200/100', alt: '缩略图3' }
  ];

  swapImages(thumbnailIndex: number): void {
    // 临时存储当前主图
    const tempImage = this.activeImage;
    // 将点击的缩略图设为新主图
    this.activeImage = this.thumbnails[thumbnailIndex];
    // 把原主图放到被点击的缩略图位置
    this.thumbnails[thumbnailIndex] = tempImage;
  }
}
.carousel-container {
  max-width: 800px;
  margin: 2rem auto;
  padding: 0 1rem;
}

.main-image-wrapper {
  margin-bottom: 1.5rem;
  border: 2px solid #ddd;
  border-radius: 8px;
  overflow: hidden;
}

.main-image {
  width: 100%;
  height: auto;
  display: block;
}

.thumbnails-wrapper {
  display: flex;
  gap: 1rem;
  justify-content: center;
  flex-wrap: wrap;
}

.thumbnail-item {
  border: 2px solid transparent;
  border-radius: 4px;
  cursor: pointer;
  transition: border-color 0.3s ease;
}

.thumbnail-item:hover {
  border-color: #007bff;
}

.thumbnail-image {
  width: 200px;
  height: 100px;
  object-fit: cover;
  display: block;
  border-radius: 4px;
}

使用方式

在父组件模板中直接引入该组件即可:

<app-image-carousel></app-image-carousel>

内容的提问来源于stack exchange,提问作者Spawnet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 18:28:11