Porsche Design System
You are currently viewing an earlier release of the Porsche Design System.Switch to the latest Porsche Design System documentation.
SearchNavigate to GitHub repository of Porsche Design SystemOpen sidebar
ConfiguratorExamplesUsageAccessibilityAPI
Tabs Bar Table of Contents Accessibility support Keyboard Tabs Bar as a tabbed interface Key / stateFunctionTab- Moves focus to the active tab.
- When the tab list contains the focus, moves focus to the next element in the tab sequence, which is the tabpanel element.
Right Arrow, Left Arrow- Moves focus to the next tab.
- Activates the newly focused tab.
- If focus is on the last tab, moves focus to the first tab.
Home, End- Moves focus to the first/last tab and activates it.
Tabs Bar as link list Key / stateFunctionTab, Shift-TabMoves focus to next (or previous) focusable element.EnterActivates the link. ARIA enhancements Internal ARIA that is managed by the component: ARIAUsagerole="tablist"Indicates that the element serves as a container for a set of tabs.role="tab"Indicates the button serves as a tab control.aria-selected="BOOLEAN"Indicates whether the tab is selected and whether its associated tabpanel is visible. Development considerations ARIA enhancements if used as a tabbed interface The p-tabs-bar component is detached from the content (tabpanel) which belongs to the active tab. To be truly accessible you need to provide additional ARIA attributes, because every tab (button) needs an aria-controls attribute which points to the corresponding id of the tabpanel. The content placeholder needs the role="tabpanel" and the attribute aria-labelledby which points to the unique id of the corresponding tab (button). You must also take care of the focus handling of the tabpanel. Therefore, the active tab panel must have a tabindex="0" to receive keyboard focus and the focus indicator must be styled accordingly. Use the provided focus style like this:
<p-tabs-bar active-tab-index="0"> <button type="button" id="tab-item-0" aria-controls="tab-panel-0">Tab One</button> <button type="button" id="tab-item-1" aria-controls="tab-panel-1">Tab Two</button> <button type="button" id="tab-item-2" aria-controls="tab-panel-2">Tab Three</button> </p-tabs-bar> <div id="tab-panel-0" role="tabpanel" tabindex="0" aria-labelledby="tab-item-0"> <p-text>Your content of Tab 1</p-text> </div> <div id="tab-panel-1" role="tabpanel" hidden tabindex="-1" aria-labelledby="tab-item-1"> <p-text>Your content of Tab 2</p-text> </div> <div id="tab-panel-2" role="tabpanel" hidden tabindex="-1" aria-labelledby="tab-item-2"> <p-text>Your content of Tab 3</p-text> </div>
p-tabs-bar ~ [tabindex='0'][role='tabpanel'] { @include pds-focus; }
ARIA enhancements if used as a link list Route based navigation If the p-tabs-bar is used as a link list, the semantic of that UI component changes completely - from a tabbed interface where content changes happen on-site to a normal list of links where content changes are route-based. Therefore, additional ARIA attributes must not be provided for tab identification. The p-tabs-bar component manages this also internally. To enhance accessibility even further, an aria-current="page" attribute should be provided to the active link.
<p-tabs-bar> <a href="https://porsche.com" target="_blank" aria-current="page">Tab One</a> <a href="https://porsche.com" target="_blank">Tab Two</a> <a href="https://porsche.com" target="_blank">Tab Three</a> </p-tabs-bar>
In-page jump navigation If the p-tabs-bar is used as an in-page jump navigation, you should follow the same rules as for the route-based variant except that aria-current="page" should not be used. Tests Automated TechnologySupportAXE-Core (WCAG 2.2 AA, Best-Practice)High-Contrast Mode (light/dark)Text-Zoom (200%) Manual TechnologySupportKeyboardScreen reader (VoiceOver, NVDA)
Global settingsColor SchemeAll color tokens use the light-dark() CSS function. Set the theme via the CSS color-scheme property: light for light mode, dark for dark mode, or light dark to follow the user's system preference.LightDarkLight DarkDirectionThe dir global attribute in HTML changes the direction of text and other content within an element. It's most often used on the <html> tag to set the entire page's direction, which is crucial for supporting languages that are written from right to left (RTL), such as Arabic and Hebrew. For example, using <html dir="rtl"> makes the entire page display from right to left, adjusting the layout and text flow accordingly.LTR (left-to-right)RTL (right-to-left)Text ZoomTo ensure accessibility and comply with WCAG 2.2 AA standards, it is mandatory for web content to support text resizing up to at least 200% without loss of content or functionality. Using relative units like rem is a best practice for achieving this, as they allow the text to scale uniformly based on the user's browser settings.100%130%150%200%