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 Tile 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 an interactive element. It's required for buttons with hideLabel="true".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. 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 the button does not clearly indicate what the button's function 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 "Detail" or "Open" 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 "Open details of product XYZ." Common do's and don'ts Do pass ARIA attributes via the aria prop when the visible label needs more context. Do provide a descriptive label that explains the tile action. Do add aria-label on slotted <video> elements used as backgrounds. Don't add native aria-* attributes directly on the component host. Integration examples
ARIA on component host vs aria prop❌ Anti-pattern
<p-button-tile label="Open" aria-label="Open details of Porsche Taycan" aria-haspopup="dialog"></p-button-tile>
✅ Recommended
<p-button-tile label="Open" aria="{'aria-haspopup': 'dialog', 'aria-label': 'Open details of Porsche Taycan'}"></p-button-tile>
Vague tile label without context❌ Anti-pattern
<p-button-tile label="Open"></p-button-tile>
✅ Recommended
<p-button-tile label="Configure Porsche Taycan"></p-button-tile>
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%