Back to Ant Design

Image

components/image/index.en-US.md

6.3.79.5 KB
Original Source

When To Use

  • When you need to display pictures.
  • Display when loading a large image or fault tolerant handling when loading fail.

Examples

<!-- prettier-ignore -->

<code src="./demo/basic.tsx">Basic Usage</code> <code src="./demo/fallback.tsx">Fault tolerant</code> <code src="./demo/placeholder.tsx">Progressive Loading</code> <code src="./demo/preview-group.tsx">Multiple image preview</code> <code src="./demo/preview-group-visible.tsx">Preview from one image</code> <code src="./demo/previewSrc.tsx">Custom preview image</code> <code src="./demo/controlled-preview.tsx">Controlled Preview</code> <code src="./demo/toolbarRender.tsx">Custom toolbar render</code> <code src="./demo/imageRender.tsx">Custom preview render</code> <code src="./demo/mask.tsx">preview mask</code> <code src="./demo/style-class.tsx" version="6.0.0">Custom semantic dom styling</code> <code src="./demo/preview-mask.tsx" debug>Custom preview mask</code> <code src="./demo/coverPlacement.tsx" debug>Custom preview cover placement</code> <code src="./demo/nested.tsx">nested</code> <code src="./demo/preview-group-top-progress.tsx" debug>Top progress customization when previewing multiple images</code> <code src="./demo/component-token.tsx" debug>Custom component token</code> <code src="./demo/preview-imgInfo.tsx" debug>Gets image info in the render function</code>

API

Common props ref:Common props

Image

PropertyDescriptionTypeDefaultVersion
altImage descriptionstring-
classNamesCustomize class for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string>-
fallbackFallback URL when load failsstring-
heightImage heightstring | number-
placeholderLoading placeholder; if true, uses default placeholderReactNode-
previewPreview configuration; set to false to disableboolean | PreviewTypetrue
srcImage URLstring-
stylesCustomize inline style for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, CSSProperties> | (info: { props })=> Record<SemanticDOM, CSSProperties>-
widthImage widthstring | number-
onErrorCallback when loading error occurs(event: Event) => void-

Other Property ref <img>

PreviewType

PropertyDescriptionTypeDefaultVersion
actionsRenderCustom toolbar render(originalNode: React.ReactElement, info: ToolbarRenderInfoType) => React.ReactNode-
closeIconCustom close iconReact.ReactNode-
coverCustom preview maskReact.ReactNode | CoverConfig-CoverConfig support after v6.0
destroyOnCloseDestroy child elements on preview close (removed, no longer supported)booleanfalse
forceRenderForce render preview image (removed, no longer supported)boolean-
getContainerSpecify container for preview mounting; still full screen; false mounts at current locationstring | HTMLElement | (() => HTMLElement) | false-
imageRenderCustom preview content(originalNode: React.ReactElement, info: { transform: TransformType, image: ImgInfo }) => React.ReactNode-
maskpreview mask effectboolean | { enabled?: boolean, blur?: boolean }true
maskClassNameThumbnail mask class name; please use 'classNames.cover' insteadstring-
maxScaleMaximum zoom scalenumber50
minScaleMinimum zoom scalenumber1
movableWhether it is movablebooleantrue
openWhether to display previewboolean-
rootClassNameRoot DOM class name for preview; applies to both image and preview wrapperstring-
scaleStepEach step's zoom multiplier is 1 + scaleStepnumber0.5
srcCustom preview srcstring-
stylesCustom semantic structure stylesRecord<SemanticDOM, CSSProperties>-
toolbarRenderCustom toolbar; please use 'actionsRender' instead(originalNode: React.ReactElement, info: Omit<ToolbarRenderInfoType, 'current' | 'total'>) => React.ReactNode-
visibleWhether to show; please use 'open' insteadboolean-
onOpenChangeCallback when preview open state changes(visible: boolean) => void-
onTransformCallback for preview transform changes{ transform: TransformType, action: TransformAction }-
onVisibleChangeCallback when 'visible' changes; please use 'onOpenChange' instead(visible: boolean, prevVisible: boolean) => void-

PreviewGroup

PropertyDescriptionTypeDefaultVersion
classNamesCustomize class for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string>-
fallbackFallback URL for load errorstring-
itemsArray of preview itemsstring[] | { src: string, crossOrigin: string, ... }[]-
previewPreview configuration; disable by setting to falseboolean | PreviewGroupTypetrue

PreviewGroupType

PropertyDescriptionTypeDefaultVersion
actionsRenderCustom toolbar render(originalNode: React.ReactElement, info: ToolbarRenderInfoType) => React.ReactNode-
closeIconCustom close iconReact.ReactNode-
countRenderCustom preview count render(current: number, total: number) => React.ReactNode-
currentIndex of the current preview imagenumber-
forceRenderForce render preview image (removed, no longer supported)boolean-
getContainerSpecify container for preview mounting; still full screen; false mounts at current locationstring | HTMLElement | (() => HTMLElement) | false-
imageRenderCustom preview content(originalNode: React.ReactElement, info: { transform: TransformType, image: ImgInfo, current: number }) => React.ReactNode-
maskpreview mask effectboolean | { enabled?: boolean, blur?: boolean }true
maskClassNameThumbnail mask class name; please use 'classNames.cover' insteadstring-
minScaleMinimum zoom scalenumber1
maxScaleMaximum zoom scalenumber50
movableWhether movablebooleantrue
openWhether to display previewboolean-
rootClassNameRoot DOM class name for preview; applies to both image and preview wrapper. Use 'classNames.root' insteadstring-
stylesCustom semantic structure stylesRecord<SemanticDOM, CSSProperties>-
scaleStepEach step's zoom multiplier is 1 + scaleStepnumber0.5
toolbarRenderCustom toolbar; please use 'actionsRender' instead(originalNode: React.ReactElement, info: ToolbarRenderInfoType) => React.ReactNode-
visibleWhether to show; please use 'open' insteadboolean-
onOpenChangeCallback when preview open state changes, includes current preview index(visible: boolean, info: { current: number }) => void-
onChangeCallback when changing preview image(current: number, prevCurrent: number) => void-
onTransformCallback for preview transform changes{ transform: TransformType, action: TransformAction }-
onVisibleChangeCallback when 'visible' changes; please use 'onOpenChange' instead(visible: boolean, prevVisible: boolean, current: number) => void-

Interface

TransformType

typescript
{
  x: number;
  y: number;
  rotate: number;
  scale: number;
  flipX: boolean;
  flipY: boolean;
}

TransformAction

typescript
type TransformAction =
  | 'flipY'
  | 'flipX'
  | 'rotateLeft'
  | 'rotateRight'
  | 'zoomIn'
  | 'zoomOut'
  | 'close'
  | 'prev'
  | 'next'
  | 'wheel'
  | 'doubleClick'
  | 'move'
  | 'dragRebound';

ToolbarRenderInfoType

typescript
{
  icons: {
    flipYIcon: React.ReactNode;
    flipXIcon: React.ReactNode;
    rotateLeftIcon: React.ReactNode;
    rotateRightIcon: React.ReactNode;
    zoomOutIcon: React.ReactNode;
    zoomInIcon: React.ReactNode;
  };
  actions: {
    onActive?: (index: number) => void; // support after 5.21.0
    onFlipY: () => void;
    onFlipX: () => void;
    onRotateLeft: () => void;
    onRotateRight: () => void;
    onZoomOut: () => void;
    onZoomIn: () => void;
    onReset: () => void; // support after 5.17.3
    onClose: () => void;
  };
  transform: TransformType,
  current: number;
  image: ImgInfo
}

ImgInfo

typescript
{
  url: string;
  alt: string;
  width: string | number;
  height: string | number;
}

CoverConfig

typescript
type CoverConfig = {
  coverNode?: React.ReactNode; // The custom node of preview mask
  placement?: 'top' | 'bottom' | 'center'; // Set the position of the preview mask display.
};

Semantic DOM

<code src="./demo/_semantic.tsx" simplify="true"></code>

Design Token

<ComponentTokenTable component="Image"></ComponentTokenTable>