"screen readers" is quite reductive, as there are other assistive technologies. content hidden this way is even announced by things like Alexa/Siri etc, so it's not so much just "screen readers".
in the long run, we may even consider changing the actual classnames (maybe `.visually-hidden` / `.visually-hidden-focusable`, though admittedly that's a bit verbose).
also includes a tiny tweak to layout.md to generalise the note about using `.sr-only`
@import "helpers/colored-links";
@import "helpers/embed";
@import "helpers/position";
-@import "helpers/screenreaders";
+@import "helpers/visually-hidden";
@import "helpers/stretched-link";
@import "helpers/text-truncation";
//
-// Screenreaders
+// Visually hidden
//
.visually-hidden,
Use the `.col-auto` class to create horizontal layouts. By adding [gutter modifier classes]({{< docsref "/layout/gutters" >}}), we'll have gutters in horizontal and vertical directions. The `.align-items-center` aligns the form elements to the middle, making the `.form-checkbox` align properly.
-Be sure to always include a `<label>` with each form control, even if you need to hide it from non-screenreader visitors with `.visually-hidden`.
+Be sure to always include a `<label>` with each form control, even if you need to visually hide it with `.visually-hidden` (which still keeps it available to assistive technologies such as screen readers).
{{< example >}}
<form class="row row-cols-md-auto g-3 align-items-center">
--- /dev/null
+---
+layout: docs
+title: Visually hidden
+description: Use these helpers to visually hide elements but keep them accessible to assistive technologies.
+group: helpers
+---
+
+Visually hide an element while still allowing it to be exposed to assistive technologies (such as screen readers) with `.sr-only`. Use `.sr-only-focusable` to visually hide an element by default, but to display it when it's focused (e.g. by a keyboard-only user). Can also be used as mixins.
+
+{{< example >}}
+<h2 class="sr-only">Title for screen readers</h2>
+<a class="sr-only-focusable" href="#content">Skip to main content</a>
+{{< /example >}}
+
+{{< highlight scss >}}
+// Usage as a mixin
+
+.sr-only-title {
+ @include sr-only;
+}
+
+.skip-navigation {
+ @include sr-only-focusable;
+}
+{{< /highlight >}}
- title: Colored links
- title: Embed
- title: Position
- - title: Screen readers
+ - title: Visually hidden
- title: Stretched link
- title: Text truncation