logoAnt Design

⌘ K
  • Design
  • Development
  • Components
  • Blog
  • Resources
5.24.3
  • Components Overview
  • General
    • Button
    • FloatButton
      5.0.0
    • Icon
    • Typography
  • Layout
    • Divider
    • Flex
      5.10.0
    • Grid
    • Layout
    • Masonry
      6.0.0
    • Space
    • Splitter
      5.21.0
  • Navigation
    • Anchor
    • Breadcrumb
    • Dropdown
    • Menu
    • Pagination
    • Steps
  • Data Entry
    • AutoComplete
    • Cascader
    • Checkbox
    • ColorPicker
      5.5.0
    • DatePicker
    • Form
    • Input
    • InputNumber
    • Mentions
    • Radio
    • Rate
    • Select
    • Slider
    • Switch
    • TimePicker
    • Transfer
    • TreeSelect
    • Upload
  • Data Display
    • Avatar
    • Badge
    • Calendar
    • Card
    • Carousel
    • Collapse
    • Descriptions
    • Empty
    • Image
    • List
    • Popover
    • QRCode
      5.1.0
    • Segmented
    • Statistic
    • Table
    • Tabs
    • Tag
    • Timeline
    • Tooltip
    • Tour
      5.0.0
    • Tree
  • Feedback
    • Alert
    • Drawer
    • Message
    • Modal
    • Notification
    • Popconfirm
    • Progress
    • Result
    • Skeleton
    • Spin
    • Watermark
      5.1.0
  • Other
    • Affix
    • App
      5.1.0
    • ConfigProvider
    • Util
      5.13.0

Image

Preview-able image.
Importimport{ Image }from"antd";
Sourcecomponents/image
Docs
Edit this pageChangelog

Resources

Ant Design X
Ant Design Charts
Ant Design Pro
Pro Components
Ant Design Mobile
Ant Design Mini
Ant Design Web3
Ant Design Landing-Landing Templates
Scaffolds-Scaffold Market
Umi-React Application Framework
dumi-Component doc generator
qiankun-Micro-Frontends Framework
Ant Motion-Motion Solution
China Mirror 🇨🇳

Community

Awesome Ant Design
Medium
Twitter
yuque logoAnt Design in YuQue
Ant Design in Zhihu
Experience Cloud Blog
seeconf logoSEE Conf-Experience Tech Conference

Help

GitHub
Change Log
FAQ
Bug Report
Issues
Discussions
StackOverflow
SegmentFault

Ant XTech logoMore Products

yuque logoYuQue-Document Collaboration Platform
AntV logoAntV-Data Visualization
Egg logoEgg-Enterprise Node.js Framework
Kitchen logoKitchen-Sketch Toolkit
Galacean logoGalacean-Interactive Graphics Solution
xtech logoAnt Financial Experience Tech
Theme Editor
Made with ❤ by
Ant Group and Ant Design Community
loading

When To Use

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

Examples

API

Common props ref:Common props

Image

PropertyDescriptionTypeDefaultVersion
altImage descriptionstring-
classNamesCustom semantic structure class namesRecord<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-
stylesCustom semantic structure stylesRecord<SemanticDOM, string>-
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-
classNamesCustom semantic structure class namesRecord<SemanticDOM, string>-
closeIconCustom close iconReact.ReactNode-
coverCustom preview maskReact.ReactNode-
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-
maskThumbnail mask, please use 'cover' insteadReactNode-
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, string>-
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
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-
classNamesCustom preview class names objectRecord<SemanticDOM, string>-
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-
maskThumbnail mask, please use 'cover' insteadReactNode-
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, string>-
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

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

TransformAction

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

ToolbarRenderInfoType

{
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

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

Semantic DOM

Design Token

Component TokenHow to use?
Token NameDescriptionTypeDefault Value
previewOperationColorColor of preview operation iconstringrgba(255,255,255,0.65)
previewOperationColorDisabledDisabled color of preview operation iconstringrgba(255,255,255,0.25)
previewOperationHoverColorColor of hovered preview operation iconstringrgba(255,255,255,0.85)
previewOperationSizeSize of preview operation iconnumber18
zIndexPopupz-index of preview popupnumber1080
Global TokenHow to use?
Basic Usage

Click the image to zoom in.

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code
Fault tolerant

Load failed to display image placeholder.

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code
Progressive Loading

Progressive when large image loading.

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code
Multiple image preview

Click the left and right switch buttons to preview multiple images.

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code
Preview from one image

Preview a collection from one image.

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code
Custom preview image

You can set different preview image.

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code
Controlled Preview

You can make preview controlled.

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code
Custom toolbar render

You can customize the toolbar and add a button for downloading the original image or downloading the flipped and rotated image.

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code
Custom preview render

You can customize the preview content.

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code
nested

Nested in the modal

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code
Preview
Preview
Preview
Preview
Preview
Preview
Preview
scaleStep:

Preview
Preview
Preview
Preview
Preview
  • root
    Root element
  • image
    Image element
  • preview.cover
    Cover element
  • preview.root
    Preview root element
  • preview.mask
    Preview mask element
  • preview.body
    Preview body element
  • preview.footer
    Preview footer element
  • preview.actions
    Preview actions group