- Success Criterion 1.3.1
- Conformance level A
Meaningful Content Added Only Through CSS Generated Text
1.3.1 — Info and Relationships
Scenario
Setting
A project-management tool's task board
What’s wrong
CSS-generated content (::before counters, icons) conveying relationships not present in page code (DOM) text.
Example
<style>.task.high-priority::before { content: "High priority: "; }</style>
<div class="task high-priority">Fix login bug</div> Why it matters
A screen reader user hears only "Fix login bug" with no priority mentioned, since text added by ::before rarely enters the accessibility tree.
How to test
Turn off CSS and check whether the::before/::after generated content (icons, counters) that conveys real meaning is present as actual text. CSS content isn't read by all screen readers.
How to fix
CSS generated content is unreliable for meaning; put anything a user needs to know as real text in the page.
<div class="task high-priority"><span class="visually-hidden">High priority: </span>Fix login bug</div> Outcome
Scanning the board, a team member hears which cards are high priority before opening any of them.
Who is affected
Screen reader users scanning the task board can't tell which cards are high priority at all.
Learn more
- Understanding Understanding document (opens in a new tab)
Related scenarios
- Text Styled to Look Like a Heading Instead of Coded as One
- Text Columns Faked With Spaces Instead of Real Table Markup
- Table Layout Faked With Spaces Instead of Real Table Code
- Clickable Div Acting as a Link Button With No Real Role
- Structural HTML Tags Used Purely for Visual Styling
- Layout-Only Table Wrongly Coded With Real Header Cells