mirror of
https://github.com/twbs/bootstrap.git
synced 2024-12-03 15:24:19 +01:00
aa06dffdf6
* Disabled link cleanup per https://www.w3.org/TR/html-aria/#docconformance > It is NOT RECOMMENDED to use `aria-disabled="true"` on an `a` element with an `href` attribute. > >NOTE >If a link needs to be "disabled", remove the `href` attribute. This PR removes the unnecessary `href="#"`, `tabindex="-1"`, and `aria-disabled="true"` from disabled links in both docs pages and examples. `aria-disabled="true"` *is* kept for disabled link-based buttons (that have `role="button"`) as there it's appropriate to use (you *want* to convey to assistive technologies that this thing you're claiming is a button is also disabled at the moment) Further, the PR extends the "Link functionality caveat" to show the "proper" way (removing `href` and adding `.disabled` class only) to disable a link, but then explains what to do if that's not possible (and then keeps an example with all the traditional `href="#" tabindex="-1" aria-disabled="true"`, but explains clearly that it's not ideal). Same sort of explanation is also added to the pointer event utilities page * Turn big note into actual normal doc text Co-authored-by: Mark Otto <markd.otto@gmail.com> Co-authored-by: Mark Otto <markd.otto@gmail.com> Co-authored-by: XhmikosR <xhmikosr@gmail.com>
43 lines
2.2 KiB
Markdown
43 lines
2.2 KiB
Markdown
---
|
|
layout: docs
|
|
title: Interactions
|
|
description: Utility classes that change how users interact with contents of a website.
|
|
group: utilities
|
|
toc: false
|
|
---
|
|
|
|
## Text selection
|
|
|
|
Change the way in which the content is selected when the user interacts with it.
|
|
|
|
{{< example >}}
|
|
<p class="user-select-all">This paragraph will be entirely selected when clicked by the user.</p>
|
|
<p class="user-select-auto">This paragraph has default select behavior.</p>
|
|
<p class="user-select-none">This paragraph will not be selectable when clicked by the user.</p>
|
|
{{< /example >}}
|
|
|
|
## Pointer events
|
|
|
|
Bootstrap provides `.pe-none` and `.pe-auto` classes to prevent or add element interactions.
|
|
|
|
{{< example >}}
|
|
<p><a href="#" class="pe-none" tabindex="-1" aria-disabled="true">This link</a> can not be clicked.</p>
|
|
<p><a href="#" class="pe-auto">This link</a> can be clicked (this is default behavior).</p>
|
|
<p class="pe-none"><a href="#" tabindex="-1" aria-disabled="true">This link</a> can not be clicked because the <code>pointer-events</code> property is inherited from its parent. However, <a href="#" class="pe-auto">this link</a> has a <code>pe-auto</code> class and can be clicked.</p>
|
|
{{< /example >}}
|
|
|
|
The `.pe-none` class (and the `pointer-events` CSS property it sets) only prevents interactions with a pointer (mouse, stylus, touch). Links and controls with `.pe-none` are, by default, still focusable and actionable for keyboard users. To ensure that they are completely neutralized even for keyboard users, you may need to add further attributes such as `tabindex="-1"` (to prevent them from receiving keyboard focus) and `aria-disabled="true"` (to convey the fact they are effectively disabled to assistive technologies), and possibly use JavaScript to completely prevent them from being actionable.
|
|
|
|
If possible, the simpler solution is:
|
|
|
|
- For form controls, add the `disabled` HTML attribute.
|
|
* For links, remove the `href` attribute, making it a non-interactive anchor or placeholder link.
|
|
|
|
## Sass
|
|
|
|
### Utilities API
|
|
|
|
Interaction utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
|
|
|
|
{{< scss-docs name="utils-interaction" file="scss/_utilities.scss" >}}
|