UNPKG

@shopify/polaris

Version:

Shopify’s product component library

102 lines (78 loc) 2.68 kB
--- name: Visually hidden category: Titles and text keywords: - VisuallyHidden - screen readers - hidden but available for screen readers - visually hidden headings - hide - hidden headings - hidden text - visually hidden table headers - visually hidden headers - hidden table headers - hidden table headings - accessibility - a11y - assistive technology --- # Visually hidden Use when an element needs to be available to assistive technology (e.g. screen readers) but otherwise hidden. --- ## Purpose Put the merchant first by identifying the problem they face and the component that helps them solve it. ### Problem A content element may be visually redundant but provides important context to merchants who are using a screen reader. ### Solution Wrap the piece of text in the visually hidden component so it doesn’t show on the interface, but will still be available to merchants using a screen reader. --- ## Best practices Visually hidden should: - Not be used if semantic markup can make content understandable to people using assistive technology - Be used to provide extra context when semantic markup isn’t enough - Be used on any content that is normally present but is being omitted - Make sense in context when used with a screen reader --- ## Content guidelines There are no content elements specific to this component. Follow any guidelines appropriate to the element being hidden. ## Examples ### Visually hidden heading Always provide a heading for a major page section such as a card. In rare cases the heading is visually redundant and the meaning is conveyed by context. Rather than omit the heading, wrap the heading in the visually hidden component. ```jsx <Card sectioned> <VisuallyHidden> <Heading>Title and description</Heading> </VisuallyHidden> <FormLayout> <TextField label="Title" value="Artisanal Wooden Spoon" /> <TextField label="Description" multiline /> </FormLayout> </Card> ``` ### Visually hidden table headers Whenever one or more table columns has no need for a visible header, hide the header content rather than omitting it. Note that due to browser quirks the visually hidden component must go inside each `<th>`. ```jsx <table> <thead> <tr> <th scope="col"><VisuallyHidden>Line item</VisuallyHidden></th> <th scope="col"><VisuallyHidden>Value</VisuallyHidden></th> </tr> </thead> <tbody> <tr> <th scope="row">Subtotal</th> <td>$184.13</td> </tr> <tr> <th scope="row">Tax</th> <td>$0.00</td> </tr> <tr> <th scope="row">Total</th> <td>$184.13</td> </tr> </tbody> </table> ```