When a button switches between selected and unselected states, you must manage both the visual state and accessibility attributes:
- Visual State: Toggle the
.is-selected class. - Accessibility: Update the
aria-pressed attribute to "true" or "false". - Context: Use a
title attribute to describe the action if appropriate.
Example implementation logic:
// Toggle logic
let isSelected = toggleButton.getAttribute('aria-pressed') === 'true';
let newState = !isSelected;
toggleButton.classList.toggle('is-selected', newState);
toggleButton.setAttribute('aria-pressed', newState.toString());
<button class="s-btn is-selected" type="button" aria-pressed="true" title="Toggle action">Selected</button>