diff options
| author | Patrick H. Lauke <[email protected]> | 2020-12-11 23:28:45 +0200 |
|---|---|---|
| committer | XhmikosR <[email protected]> | 2020-12-15 09:22:14 +0200 |
| commit | eae52b1cb0af18c5bf3fddd660f53d58d689cd63 (patch) | |
| tree | 5bda1d015ef474c9ba5180b3c61c3d344fa9a2e7 | |
| parent | 9b6c81514831038646fb921e8fbacf702a56be04 (diff) | |
| download | bootstrap-eae52b1cb0af18c5bf3fddd660f53d58d689cd63.tar.xz bootstrap-eae52b1cb0af18c5bf3fddd660f53d58d689cd63.zip | |
Expand `visually-hidden-focusable` so it can be used on a container, so the container becomes visible when focus is inside it / on one of its child elements.
| -rw-r--r-- | scss/helpers/_visually-hidden.scss | 2 | ||||
| -rw-r--r-- | scss/mixins/_visually-hidden.scss | 5 | ||||
| -rw-r--r-- | site/content/docs/5.0/helpers/visually-hidden.md | 5 | ||||
| -rw-r--r-- | site/content/docs/5.0/migration.md | 5 |
4 files changed, 12 insertions, 5 deletions
diff --git a/scss/helpers/_visually-hidden.scss b/scss/helpers/_visually-hidden.scss index 0a843d383..4760ff03d 100644 --- a/scss/helpers/_visually-hidden.scss +++ b/scss/helpers/_visually-hidden.scss @@ -3,6 +3,6 @@ // .visually-hidden, -.visually-hidden-focusable:not(:focus) { +.visually-hidden-focusable:not(:focus):not(:focus-within) { @include visually-hidden(); } diff --git a/scss/mixins/_visually-hidden.scss b/scss/mixins/_visually-hidden.scss index d980696c8..ed7bc9c13 100644 --- a/scss/mixins/_visually-hidden.scss +++ b/scss/mixins/_visually-hidden.scss @@ -17,12 +17,13 @@ border: 0 !important; } -// Use to only display content when it's focused. +// Use to only display content when it's focused, or one of its child elements is focused +// (i.e. when focus is within the element/container that the class was applied to) // // Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 @mixin visually-hidden-focusable() { - &:not(:focus) { + &:not(:focus):not(:focus-within) { @include visually-hidden(); } } diff --git a/site/content/docs/5.0/helpers/visually-hidden.md b/site/content/docs/5.0/helpers/visually-hidden.md index f80160edd..d8148b3f3 100644 --- a/site/content/docs/5.0/helpers/visually-hidden.md +++ b/site/content/docs/5.0/helpers/visually-hidden.md @@ -6,13 +6,16 @@ group: helpers aliases: "/docs/5.0/helpers/screen-readers/" --- -Visually hide an element while still allowing it to be exposed to assistive technologies (such as screen readers) with `.visually-hidden`. Use `.visually-hidden-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. +Visually hide an element while still allowing it to be exposed to assistive technologies (such as screen readers) with `.visually-hidden`. Use `.visually-hidden-focusable` to visually hide an element by default, but to display it when it's focused (e.g. by a keyboard-only user). `.visually-hidden-focusable` can also be applied to a container–thanks to `:focus-within`, the container will be displayed when any child element of the container receives focus. {{< example >}} <h2 class="visually-hidden">Title for screen readers</h2> <a class="visually-hidden-focusable" href="#content">Skip to main content</a> +<div class="visually-hidden-focusable">A container with a <a href="#">focusable element</a>.</div> {{< /example >}} +Both `visually-hidden` and `visually-hidden-focusable` can also be used as mixins. + ```scss // Usage as a mixin diff --git a/site/content/docs/5.0/migration.md b/site/content/docs/5.0/migration.md index 05bf47705..952cc937e 100644 --- a/site/content/docs/5.0/migration.md +++ b/site/content/docs/5.0/migration.md @@ -9,6 +9,10 @@ toc: true ## v5.0.0-beta2 +### Sass + +- Extended the `.visually-hidden-focusable` helper to also work on containers, using `:focus-within`. + ### JavaScript - The default value for the `fallbackPlacements` is changed to `['top', 'right', 'bottom', 'left']` for better placement of popper elements. @@ -58,7 +62,6 @@ Breakpoints specific variants are consequently renamed too (eg. `.text-md-start` - Renamed `$form-check-inline-margin-right` to `$form-check-inline-margin-end`. - Renamed `$form-select-feedback-icon-padding-right` to `$form-select-feedback-icon-padding-end`. - ### JavaScript - Data attributes for all JavaScript plugins are now namespaced to help distinguish Bootstrap functionality from third parties and your own code. For example, we use `data-bs-toggle` instead of `data-toggle`. |
