diff --git a/en/application-dev/reference/arkui-ts/figures/TabBarStyle.jpeg b/en/application-dev/reference/arkui-ts/figures/TabBarStyle.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..cc2131f3d6b7f264f3a091e7788f7208232863cf
Binary files /dev/null and b/en/application-dev/reference/arkui-ts/figures/TabBarStyle.jpeg differ
diff --git a/en/application-dev/reference/arkui-ts/ts-container-tabcontent.md b/en/application-dev/reference/arkui-ts/ts-container-tabcontent.md
index 400132c6ffd427a249df0c19b50e04c06eabcc3a..d874d686fd63a1e00b2892ec5d24a7e069786e02 100644
--- a/en/application-dev/reference/arkui-ts/ts-container-tabcontent.md
+++ b/en/application-dev/reference/arkui-ts/ts-container-tabcontent.md
@@ -23,13 +23,45 @@ In addition to the [universal attributes](ts-universal-attributes-size.md), the
| Name| Type| Description|
| -------- | -------- | -------- |
-| tabBar | string \| Resource \| {
icon?: string \| Resource,
text?: string \| Resource
}
\| [CustomBuilder](ts-types.md)8+ | Content displayed on the tab bar.
**CustomBuilder**: builder, to which components can be passed (applicable to API version 8 and later versions).
> **NOTE**
If an icon uses an SVG image, the width and height attributes of the SVG image must be deleted. Otherwise, the icon size will be determined by the width and height attributes of the SVG image.|
+| tabBar | string \| Resource \| {
icon?: string \| Resource,
text?: string \| Resource
}
\| [CustomBuilder](ts-types.md)8+ | Content displayed on the tab bar.
**CustomBuilder**: builder, to which components can be passed (applicable to API version 8 and later versions).
**NOTE**
If an icon uses an SVG image, the width and height attributes of the SVG image must be deleted. Otherwise, the icon size will be determined by the width and height attributes of the SVG image. |
+| tabBar9+ | [SubTabBarStyle](#subtabbarstyle) \| [BottomTabBarStyle](#bottomtabbarstyle) | Content displayed on the tab bar.
**SubTabBarStyle**: subtab style. It takes text as its input parameter.
**BottomTabBarStyle**: bottom and side tab style. It takes text and images as its input parameters.|
> **NOTE**
> - The **\** component does not support setting of the common width attribute. By default, its width is the same as that of the parent **\** component.
> - The **\** component does not support setting of the common height attribute. Its height is determined by the height of the parent **\** component and the **\** component.
-> - The **\** component does not support setting of the [touch target](ts-universal-attributes-touch-target.md).
+## SubTabBarStyle9+
+
+Implements the subtab style.
+
+### constructor9+
+
+constructor(content: string | Resource)
+
+A constructor used to create a **SubTabBarStyle** instance.
+
+**Parameters**
+
+| Name| Type | Mandatory| Description|
+| -------- | -------- | -------- | -------- |
+| content | string \| [Resource](ts-types.md#resource) | Yes| Text for the tab.|
+
+## BottomTabBarStyle9+
+
+Implements the bottom and side tab style.
+
+### constructor9+
+
+constructor(icon: string | Resource, text: string | Resource)
+
+A constructor used to create a **BottomTabBarStyle** instance.
+
+**Parameters**
+
+| Name| Type | Mandatory| Description|
+| -------- | -------- | -------- | -------- |
+| icon | string \| [Resource](ts-types.md#resource) | Yes| Image for the tab.|
+| text | string \| [Resource](ts-types.md#resource) | Yes| Text for the tab.|
## Example
@@ -194,3 +226,101 @@ struct TabContentExample {
```
![tabContent](figures/tabContent2.gif)
+
+Example 3:
+
+```ts
+// xxx.ets
+@Entry
+@Component
+struct TabBarStyleExample {
+ build() {
+ Column({ space: 5 }) {
+ Text ("Subtab Style")
+ Column() {
+ Tabs({ barPosition: BarPosition.Start }) {
+ TabContent() {
+ Column().width('100%').height('100%').backgroundColor(Color.Pink)
+ }.tabBar(new SubTabBarStyle('Pink'))
+
+ TabContent() {
+ Column().width('100%').height('100%').backgroundColor(Color.Yellow)
+ }.tabBar(new SubTabBarStyle('Yellow'))
+
+ TabContent() {
+ Column().width('100%').height('100%').backgroundColor(Color.Blue)
+ }.tabBar(new SubTabBarStyle('Blue'))
+
+ TabContent() {
+ Column().width('100%').height('100%').backgroundColor(Color.Green)
+ }.tabBar(new SubTabBarStyle('Green'))
+ }
+ .vertical(false)
+ .scrollable(true)
+ .barMode(BarMode.Fixed)
+ .onChange((index: number) => {
+ console.info(index.toString())
+ })
+ .width('100%')
+ .backgroundColor(0xF1F3F5)
+ }.width('100%').height(200)
+ Text ("Bottom Tab Style")
+ Column() {
+ Tabs({ barPosition: BarPosition.End }) {
+ TabContent() {
+ Column().width('100%').height('100%').backgroundColor(Color.Pink)
+ }.tabBar(new BottomTabBarStyle($r('sys.media.ohos_app_icon'), 'pink'))
+
+ TabContent() {
+ Column().width('100%').height('100%').backgroundColor(Color.Yellow)
+ }.tabBar(new BottomTabBarStyle($r('sys.media.ohos_app_icon'), 'Yellow'))
+
+ TabContent() {
+ Column().width('100%').height('100%').backgroundColor(Color.Blue)
+ }.tabBar(new BottomTabBarStyle($r('sys.media.ohos_app_icon'), 'Blue'))
+
+ TabContent() {
+ Column().width('100%').height('100%').backgroundColor(Color.Green)
+ }.tabBar(new BottomTabBarStyle($r('sys.media.ohos_app_icon'), 'Green'))
+ }
+ .vertical(false)
+ .scrollable(true)
+ .barMode(BarMode.Fixed)
+ .onChange((index: number) => {
+ console.info(index.toString())
+ })
+ .width('100%')
+ .backgroundColor(0xF1F3F5)
+ }.width('100%').height(200)
+ Text ("Side Tab Style")
+ Column() {
+ Tabs({ barPosition: BarPosition.Start }) {
+ TabContent() {
+ Column().width('100%').height('100%').backgroundColor(Color.Pink)
+ }.tabBar(new BottomTabBarStyle($r('sys.media.ohos_app_icon'), 'pink'))
+
+ TabContent() {
+ Column().width('100%').height('100%').backgroundColor(Color.Yellow)
+ }.tabBar(new BottomTabBarStyle($r('sys.media.ohos_app_icon'), 'Yellow'))
+
+ TabContent() {
+ Column().width('100%').height('100%').backgroundColor(Color.Blue)
+ }.tabBar(new BottomTabBarStyle($r('sys.media.ohos_app_icon'), 'Blue'))
+
+ TabContent() {
+ Column().width('100%').height('100%').backgroundColor(Color.Green)
+ }.tabBar(new BottomTabBarStyle($r('sys.media.ohos_app_icon'), 'Green'))
+ }
+ .vertical(true).scrollable(true).barMode(BarMode.Fixed)
+ .onChange((index: number) => {
+ console.info(index.toString())
+ })
+ .width('100%')
+ .backgroundColor(0xF1F3F5)
+ }.width('100%').height(400)
+ }
+ }
+}
+```
+
+![tabbarStyle](figures/TabBarStyle.jpeg)
diff --git a/en/application-dev/reference/arkui-ts/ts-container-tabs.md b/en/application-dev/reference/arkui-ts/ts-container-tabs.md
index b331d2efa09a4cb8da1b6880f642ced3ca411fb3..e1d90464b363777239c670b679a0cf1e2c5d711d 100644
--- a/en/application-dev/reference/arkui-ts/ts-container-tabs.md
+++ b/en/application-dev/reference/arkui-ts/ts-container-tabs.md
@@ -34,7 +34,7 @@ Tabs(value?: {barPosition?: BarPosition, index?: number, controller?: [TabsContr
## Attributes
-In addition to the [universal attributes](ts-universal-attributes-size.md), the following attributes are supported. The [touch target](ts-universal-attributes-touch-target.md) is not supported.
+In addition to the [universal attributes](ts-universal-attributes-size.md), the following attributes are supported.
| Name| Type| Description|
| -------- | -------- | -------- |
@@ -43,7 +43,7 @@ In addition to the [universal attributes](ts-universal-attributes-size.md), the
| barMode | BarMode | Tab bar layout mode. For details, see **BarMode**.
Default value: **BarMode.Fixed**|
| barWidth | number \| Length8+ | Width of the tab bar. |
| barHeight | number \| Length8+ | Height of the tab bar. |
-| animationDuration | number | Animation duration of the tab content.
Default value: **200**|
+| animationDuration | number | Duration of the slide animation for tab switching. If this parameter is set, the tab switching animation is played when the user switches between tabs by sliding or clicking. If this parameter is not set, the tab switching animation is played only when the user switches between tabs by sliding.
Default value: **200**|
## BarMode