# Shared Element Transition (sharedTransition)
A shared element transition is a transition animation applied to a component that is present on two pages. This component is called the shared element and can be set in the **sharedTransition** attribute.
> **NOTE**
>
> The APIs of this module are supported since API version 7. Updates will be marked with a superscript to indicate their earliest API version.
## Attributes
| Name | Type | Mandatory | Description |
| ---------------- | -----------------|------------------------------------------- | ------------------------------------------------------------ |
| id | string | Yes | Transition of the shared element. If the same **id** value is configured for a component on the two pages, this component is considered as a shared element of the pages. If the **id** value is an empty string, no transition will be applied to the component.|
| options | [sharedTransitionOptions](#sharedtransitionoptions) | No | Parameters of the shared element transition animation.|
> **NOTE**
>
> **motionPath** is effective only when **type** is set to **SharedTransitionEffectType.Exchange**.
## sharedTransitionOptions
**Atomic service API**: This API can be used in atomic services since API version 11.
| Name | Type | Mandatory | Description |
| ----------------- | -------------|-------------- | --------------------------------------------------------------|
| duration | number | No | Animation duration.
Default value: **1000**
Unit: ms|
| curve | [Curve](ts-appendix-enums.md#curve) \| string \| [ICurve](../js-apis-curve.md#icurve9)10+ | No| Animation curve.
Default value: **Curve.Linear**|
| delay | number | No | Delay of animation playback.
Default value: **0**
Unit: ms|
| motionPath | [MotionPathOptions](./ts-motion-path-animation.md) | No | Motion path.|
| zIndex | number | No | Z-axis.|
| type | [SharedTransitionEffectType](ts-appendix-enums.md#sharedtransitioneffecttype) | No | Animation type.
Default value: **SharedTransitionEffectType.Exchange**|
## Example
This example implements the custom transition of a shared image during redirection from one page to another, which is triggered by a click on the image.
```ts
// xxx.ets
@Entry
@Component
struct SharedTransitionExample {
@State active: boolean = false
build() {
Column() {
Navigator({ target: 'pages/PageB', type: NavigationType.Push }) {
Image($r('app.media.ic_health_heart')).width(50).height(50)
.sharedTransition('sharedImage', { duration: 800, curve: Curve.Linear, delay: 100 })
}.padding({ left: 20, top: 20 })
.onClick(() => {
this.active = true
})
}
}
}
```
```ts
// PageB.ets
@Entry
@Component
struct pageBExample {
build() {
Stack() {
Image($r('app.media.ic_health_heart')).width(150).height(150)
.sharedTransition('sharedImage', { duration: 800, curve: Curve.Linear, delay: 100 })
}.width('100%').height('100%')
}
}
```
