Skip to content

圖片

介紹如何使用圖片元件。

圖片欄位格式

目前 GraphQL 後端有定義以下圖片類型可以使用:

圖片類型說明
Image一般圖片
Cover封面圖片
Background背景圖片

GraphQL 後端欄位都有不同的類型定義,需要依照查詢的欄位來輸入對應的 Fragment。而每個圖片都有以下欄位:

欄位名稱說明
desktop桌面版圖片
desktop_blur桌面版模糊圖片 (目前不使用)
mobile手機版圖片
mobile_blur手機版模糊圖片 (目前不使用)

請求 API 的圖片欄位

比如要使用 Image 圖片,就引入 imageFields Fragment,並在查詢時使用 ...ImageFields 來帶入圖片欄位。以及要在 Data 介面中定義圖片欄位的型別為 ImageSource

以下是一個使用 Image 圖片的範例:

astro
---
import { gql, graphQLAPI } from '@/api'
import { imageFields, Image, ResponsiveImage } from '@stephenchenorg/astro/image'
import type { ImageSource } from '@stephenchenorg/astro/image'

interface Data extends DataCompanySetting {
  product: {
    image: ImageSource
    cover: ImageSource
    background: ImageSource
  }
}

const data = await graphQLAPI<Data>(gql`
  query {
    product {
      image {
        ...ImageFields
      }
      cover {
        ...CoverFields
      }
      background {
        ...BackgroundFields
      }
    }
  }
  ${imageFields}
  ${coverFields}
  ${backgroundFields}
`)
---

<div>
  <Image src={data.product.image.desktop} alt="Image alt" />
  <Image src={data.product.image.mobile} alt="Image alt" />

  <ResponsiveImage {...data.product.image} alt="Responsive image alt" />
</div>

圖片元件

以下是 <Image> 元件的可用屬性:

astro
<Image
  class="image"
  src="https//example.com/logo.png"
  alt="Image alt"
/>

以下是 <ResponsiveImage> 元件的可用屬性:

astro
<ResponsiveImage
  class="image"
  desktop="https//example.com/desktop.png"
  desktopBlur="https//example.com/desktop.png"
  mobile="https//example.com/mobile.png"
  mobileBlur="https//example.com/mobile.png"
  alt="Responsive image alt"
/>