创建 HTML 鼠标悬停工具提示的最简单方法是什么?

发布于 2024-12-05 22:38:54 字数 189 浏览 2 评论 0原文

在不使用 JavaScript 的情况下创建 HTML 鼠标悬停工具提示的最简单、最简洁的方法是什么?

<img id=Pennstate src="/blah" style="cursor:pointer;">

将鼠标悬停在上面,就会出现一个漂亮的工具提示“我们是宾夕法尼亚州立大学!”

What is the easiest, cleanest way to create an HTML mouseover tool tip without using JavaScript?

<img id=Pennstate src="/blah" style="cursor:pointer;">

mouse over that and have a a nice tooltip "We are Pennstate!"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

烟─花易冷 2024-12-12 22:38:55

您可以使用伪元素作为工具提示,使用 css attr() 函数。

[data-tooltip]:hover::after {
  display: block;
  position: absolute;
  content: attr(data-tooltip);
  border: 1px solid black;
  background: #eee;
  padding: .25em;
}
<div data-tooltip="We are Pennstate!">Pennstate</div>

You may use a pseudoelement as a tooltip, setting its content from a data property using the css attr() function.

[data-tooltip]:hover::after {
  display: block;
  position: absolute;
  content: attr(data-tooltip);
  border: 1px solid black;
  background: #eee;
  padding: .25em;
}
<div data-tooltip="We are Pennstate!">Pennstate</div>

鲜肉鲜肉永远不皱 2024-12-12 22:38:55

现代方法(≥ 2024 年)是使用 Popover API。由于它目前不支持将悬停作为触发器,因此我们需要一些 JavaScript 来使其工作。弹出窗口通常是为对话框/模态设计的,但我们可以利用anchor规则(更多信息请参见:https://developer.chrome.com/blog/introducing-popover-api#anchor_positioning) 将其定位在触发器顶部 按钮。

const popover = document.querySelectorAll("[popovertarget][data-trigger='hover']");

popover.forEach((e) => {
  const target = document.querySelector("#" + e.getAttribute("popovertarget"));
  e.addEventListener("mouseover",()=>{
    target.showPopover();
  });
  
  e.addEventListener("mouseout",()=>{
    target.hidePopover();
  });
});
body {
  height: 10rem;
  display: grid;
  place-items: center;
}

.tooltip {
  bottom: anchor(bottom);
  translate: 0 80%;
  border-radius: 0.5rem;
}
<button id="tip-anchor" popovertarget="fun-fact" data-trigger="hover">ℹ️</button>

<div popover anchor="tip-anchor" id="fun-fact" class="tooltip">The narwahl tusk develops from a tooth!</div>

The modern approach (≥ 2024) would be to use the Popover API. As it currently doesn't support hover as a trigger, we'd need a sprinkle of JavaScript to make that work. Popovers are usually designed for dialogs/modals, but we can make use of the anchor rules (more on that here: https://developer.chrome.com/blog/introducing-popover-api#anchor_positioning) to position it atop the trigger button.

const popover = document.querySelectorAll("[popovertarget][data-trigger='hover']");

popover.forEach((e) => {
  const target = document.querySelector("#" + e.getAttribute("popovertarget"));
  e.addEventListener("mouseover",()=>{
    target.showPopover();
  });
  
  e.addEventListener("mouseout",()=>{
    target.hidePopover();
  });
});
body {
  height: 10rem;
  display: grid;
  place-items: center;
}

.tooltip {
  bottom: anchor(bottom);
  translate: 0 80%;
  border-radius: 0.5rem;
}
<button id="tip-anchor" popovertarget="fun-fact" data-trigger="hover">ℹ️</button>

<div popover anchor="tip-anchor" id="fun-fact" class="tooltip">The narwahl tusk develops from a tooth!</div>

岁月静好 2024-12-12 22:38:55

这是最简单的...现在所有浏览器似乎都有工具提示,因此它们可以直接从 HTML 进行解释:

      <span title={timezoneOffset} data-toggle="tooltip">
        {timeZoneAbbreviation}
      </span>
  • 标题:工具提示文本
  • 数据切换:告诉浏览器要做什么
    与它

This is the easiest... all browsers now seem to have tooltips so they can interpret from the HTML directly:

      <span title={timezoneOffset} data-toggle="tooltip">
        {timeZoneAbbreviation}
      </span>
  • Title: Text for Tooltip
  • data-toggle: Tells the browser what to do
    with it
只怪假的太真实 2024-12-12 22:38:55

这不是官方方法,但它可以通过包装所需的内容来减轻为工具提示编写额外代码的负担
缩写缩写标签内的元素

<abbr title="this is a tool tip">
 <div> any content....<div/>
<abbr/>

This is not an official way but it can reduce the burden of writing extra code for tool tip by wrapping your required
element inside a abbreviation abbr tag

<abbr title="this is a tool tip">
 <div> any content....<div/>
<abbr/>
想念有你 2024-12-12 22:38:54

最简单的方法是使用原生 HTML 标题属性

<img src="https://stackoverflow.com/favicon.ico"
     style="cursor:pointer;"
     title="Stack Overflow">

但如果您需要更多信息,请尝试 jQuery UI 自 1.9 版以来提供的 tooltip 小部件。

The easiest way is to use the native HTML title attribute:

<img src="https://stackoverflow.com/favicon.ico"
     style="cursor:pointer;"
     title="Stack Overflow">

But if you need more, try the tooltip widget provided by jQuery UI since version 1.9.

走过海棠暮 2024-12-12 22:38:54

如果您不太关心工具提示的外观,您可以随时使用“标题”属性

If you don't care much what the tooltip looks like you can always just use the "title" attribute

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文