pull/16461/merge
Brenner Cruvinel 3 days ago committed by GitHub
commit cda2583283
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -189,9 +189,65 @@ Enforce that elements with an interactive role and interactive handlers (mouse o
Enforce that attributes important for accessibility have a valid value. For example, `href` should not be empty, `'#'`, or `javascript:`.
**Why this matters for accessibility:**
- Screen readers announce links to users, but `href="#"` provides no meaningful destination information
- Users who navigate by links (a common screen reader navigation method) will encounter unhelpful link descriptions
- `href="#"` scrolls to the top of the page when clicked, which can be disorienting
- Opening in a new tab results in the same page or a blank page
- These links cannot be bookmarked or shared
**Common mistakes and their solutions:**
```svelte
<!-- ❌ A11y: '' is not a valid href attribute -->
<a href="">Click me</a>
<!-- ❌ A11y: '#' is not a valid href attribute -->
<a href="#">Click me</a>
<!-- ❌ A11y: 'javascript:void(0)' is not a valid href attribute -->
<a href="javascript:void(0)">Click me</a>
```
**Better alternatives:**
If you need an element that performs an action (not navigation), use a button:
```svelte
<!-- ✅ Correct: Use button for actions -->
<button type="button" on:click={handleClick}>Click me</button>
```
If you need a link that looks like a button, style the button appropriately:
```svelte
<!-- ✅ Style a button to look like a link if needed -->
<button type="button" class="link-style" on:click={handleClick}>
Click me
</button>
<style>
.link-style {
background: none;
border: none;
color: blue;
text-decoration: underline;
cursor: pointer;
padding: 0;
font: inherit;
}
</style>
```
For actual navigation, provide a valid href:
```svelte
<!-- ✅ Correct: Provide meaningful href for navigation -->
<a href="/page">Go to page</a>
<a href="#section">Go to section</a>
```
If you're creating a placeholder link during development:
```svelte
<!-- A11y: '' is not a valid href attribute -->
<a href="">invalid</a>
<!-- ✅ Better: Make it clear this is temporary -->
<a href="/todo" aria-label="Link to be implemented">Coming soon</a>
```
## a11y_label_has_associated_control

Loading…
Cancel
Save