bootstrap icon indicating copy to clipboard operation
bootstrap copied to clipboard

abbr[title] with tooltip is deleting dotted underline styling

Open fulldecent opened this issue 2 years ago • 3 comments

Prerequisites

Describe the issue

I use a <abbr title="...">...</abbr> abbreviation in text.

This is good because it provides context for YTD and other terms that not everybody knows.

Now, because in 2023 every human-computer interaction that takes more than 10ms is broken, and because browsers typically take 1,000ms to show that abbreviation title, I use BS tooltips to show this abbreviation.

In this scenario, the tooltip will properly show on mouse-over. But now it is hiding the dotted underline styling that makes this feature discoverable.

Expected: Screenshot 2023-08-09 at 11 46 06

Actual: Screenshot 2023-08-09 at 11 46 15

Reduced test cases

Please try this as-is, and then when commenting out the script at bottom.

Repro: https://stackblitz.com/edit/github-rpfnqj-hsmnpo?file=index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>Bootstrap demo</title>
    <link
      href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
      rel="stylesheet"
      integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM"
      crossorigin="anonymous"
    />
    <script
      src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
      integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz"
      crossorigin="anonymous"
    ></script>
  </head>
  <body>
    <abbr title="Bootstrap">BS</abbr> is awesome
    <script>
      // Activate BS5 tooltips everywhere
      [].slice
        .call(document.querySelectorAll('[title]'))
        .forEach((el) => new bootstrap.Tooltip(el));
    </script>
  </body>
</html>

What operating system(s) are you seeing the problem on?

macOS

What browser(s) are you seeing the problem on?

Chrome

What version of Bootstrap are you using?

5.3.0

fulldecent avatar Aug 09 '23 15:08 fulldecent

This is an interesting use case.

Indeed, Bootstrap Tooltip JS will use title and replace it with data-bs-original-title, and so the dotted default browser rendering will be broken because I suppose that <abbr> uses title to make the dotted rendering. Even the accessibility will be probably broken because the title of an <abbr> is read by screen readers.

Haven't tested it at all but you could maybe try something like this (kinda ugly) in the meantime (even if you'll probably have both tooltips: browser + Bootstrap):

<abbr title="Bootstrap"><span title="Bootstrap">BS</span></abbr> is awesome
<script>
  // Activate BS5 tooltips everywhere
  [].slice
    .call(document.querySelectorAll('[title]'))
    .forEach((el) => new bootstrap.Tooltip(el.querySelector('span')));
</script>

julien-deramond avatar Aug 22 '23 08:08 julien-deramond

The workaround it to add this style:

abbr[data-bs-original-title] {
  text-decoration: underline dotted;
  cursor: help;
  text-decoration-skip-ink: none;
}

fulldecent avatar Apr 29 '25 14:04 fulldecent

Added PR at https://github.com/twbs/bootstrap/pull/41421

fulldecent avatar Apr 29 '25 14:04 fulldecent