Skip to contentPorsche Design System
You are currently viewing an earlier release of the Porsche Design System.Switch to the latest Porsche Design System documentation.
SearchGitHub repository of Porsche Design SystemOpen settings sidebar
Button Table of Contents Accessibility support Keyboard Key / stateFunctionTab, Shift-TabMoves focus to the next (or previous) focusable element.Enter, SpaceActivates the button.disabledButton still focusable. ARIA enhancements External ARIA provided by the aria property: ARIAUsagearia-labelDefines a string value that labels the interactive element.aria-descriptionDefines a string value that adds a more detailed description of the interactive element.aria-expandedExposes a visual state (e.g. expanded/collapsed) of another element.aria-pressedExposes the pressed state of a toggle button.aria-haspopupDefines that the button opens a popup (e.g. dialog). It can be used in combination with aria-expanded to indicate the state of the popup. Internal ARIA that is managed by the component: ARIAUsagearia-disabled="true"When disabled prop is set, this ARIA attribute is set on the button element.role="status"When loading prop is set, the component announces the loading state (start and finish).aria-hidden="true"When the icon prop is set, the icon is hidden from the screen reader. Limitations Due to the nature of Web Components and shadow DOM, there are limitations when using some ARIA attributes to define relationships between elements across different shadow DOMs or shadow DOM/light DOM combinations. ARIASupportaria-labelledby🚫aria-describedby🚫aria-owns🚫aria-controls🚫aria-activedescendant🚫 Development considerations Labelling If the text of a button does not clearly indicate what the button's behavior is, add a brief, descriptive label using the aria property with the aria-label value to provide more context for screen reader users. Phrases like "Add", "Detail" or "Show" can be unclear when read out of context by a screen reader. In such instances, provide an alternative text that offers more detailed information, such as "Add item XYZ to shopping cart" or "Details of product XYZ." Common do's and don'ts Do pass ARIA attributes via the aria prop, for example aria="{ 'aria-haspopup': 'dialog' }" when opening a dialog. Do provide a clear accessible name for icon-only actions via slotted label or aria property. Don't add native aria-* attributes directly on the component host. Don't rely on short generic button labels like "Show" or "Add" without context. Integration examples
ARIA on component host vs aria prop❌ Anti-pattern
<p-button aria-haspopup="dialog" aria-label="Open details of product XYZ">
  Open details
</p-button>
✅ Recommended
<p-button aria="{'aria-haspopup': 'dialog', 'aria-label': 'Open details of product XYZ'}">
  Open details
</p-button>
Icon-only button without accessible name❌ Anti-pattern
<p-button icon="plus"></p-button>
✅ Recommended
<p-button icon="plus" hide-label="true">
  Add item XYZ to shopping cart
</p-button>
Vague button label without context❌ Anti-pattern
<p-button icon="plus">
  Add
</p-button>
✅ Recommended
<p-button icon="plus" aria="{'aria-label': 'Add item XYZ to shopping cart'}">
  Add
</p-button>

<!-- or use descriptive visible text -->

<p-button icon="plus">
  Add item XYZ to cart
</p-button>
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%