aboutsummaryrefslogtreecommitdiff
path: root/scss
diff options
context:
space:
mode:
authorPatrick H. Lauke <[email protected]>2019-03-12 13:16:18 +0000
committerXhmikosR <[email protected]>2019-03-12 15:16:18 +0200
commit3e05d016cf18e99725b9e77491a501c97b8dc7ac (patch)
tree1e1d96690a868c877c3951692f9aba48df97107d /scss
parente8827874ad2c08556169c8bcdc6a4529bd5f6907 (diff)
downloadbootstrap-3e05d016cf18e99725b9e77491a501c97b8dc7ac.tar.xz
bootstrap-3e05d016cf18e99725b9e77491a501c97b8dc7ac.zip
Remove indiscriminate outline suppression for tabindex="-1" elements (#28437)
instead, only apply outline suppression if the browser wouldn't normally apply the focus outline, using the (currently experimental) `:focus-visible` pseudo-class
Diffstat (limited to 'scss')
-rw-r--r--scss/_reboot.scss16
1 files changed, 10 insertions, 6 deletions
diff --git a/scss/_reboot.scss b/scss/_reboot.scss
index c55d42e44..4955f7fe8 100644
--- a/scss/_reboot.scss
+++ b/scss/_reboot.scss
@@ -54,12 +54,16 @@ body {
background-color: $body-bg; // 2
}
-// Suppress the focus outline on elements that cannot be accessed via keyboard.
-// This prevents an unwanted focus outline from appearing around elements that
-// might still respond to pointer events.
-//
-// Credit: https://github.com/suitcss/base
-[tabindex="-1"]:focus {
+// Future-proof rule: in browsers that support :focus-visible, suppress the focus outline
+// on elements that programmatically receive focus but wouldn't normally show a visible
+// focus outline. In general, this would mean that the outline is only applied if the
+// interaction that led to the element receiving programmatic focus was a keyboard interaction,
+// or the browser has somehow determined that the user is primarily a keyboard user and/or
+// wants focus outlines to always be presented.
+//
+// See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible
+// and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/
+[tabindex="-1"]:focus:not(:focus-visible) {
outline: 0 !important;
}