如何将工具提示添加到span元素?


364

在下面的代码中,我希望用户悬停跨度时出现工具提示,该怎么办?我不想使用任何链接。

<span> text </span>

Answers:


676

这是简单的内置方法:

<span title="My tip">text</span>

这将为您提供纯文本工具提示。如果要使用格式丰富的HTML的丰富工具提示,则需要使用库来实现。幸运的是有那些


1
但是,如果跨度中没有任何文本,这是否可行?比如说一个空白背景为bg图像?
2013年

1
@UGS:您确定您的元素是您认为的大小吗?尝试像我一样给它一个粉红色的背景。:-)
RichieHindle

非常感谢。!但是我只使用了tipsy.js,它看起来比我想要的更好。:D并且这篇文章使我感到困惑:htmlgoodies.com/tutorials/html_401/article.php/3479661/…其中说工具提示适用于“文本”
Augiwan 2013年

1
嗨,有人可以澄清这是否在某些/所有HTML版本中都是标准的吗?
乔纳森·多斯·桑托斯

@jonathan:至少从HTML4开始,这已经成为标准:w3.org/TR/html4/struct/global.html#adef-title
RichieHindle 2013年

97

带有纯CSS的自定义工具提示-无需JavaScript:

此处的示例(带有代码) / 全屏示例

作为默认title属性工具提示的替代方法,您可以使用:before/ :after 伪元素和HTML5 data-*属性来制作自己的自定义CSS工具提示。

使用提供的CSS,您可以使用data-tooltip属性将工具提示添加到元素。

您还可以使用data-tooltip-position属性(接受的值:top/ right/ bottom/ left)控制自定义工具提示的位置。

例如,以下内容将在span元素的底部添加一个工具栏。

<span data-tooltip="Custom tooltip text." data-tooltip-position="bottom">Custom bottom tooltip.</span>

在此处输入图片说明

这是如何运作的?

通过使用attr()函数检索自定义属性值,可以显示带有伪元素的自定义工具提示。

[data-tooltip]:before {
    content: attr(data-tooltip);
}

就工具提示的位置而言,只需使用属性选择器并根据属性的值更改位置即可。

此处的示例(带有代码) / 全屏示例

示例中使用的完整CSS-根据您的需要对其进行自定义。

[data-tooltip] {
    display: inline-block;
    position: relative;
    cursor: help;
    padding: 4px;
}
/* Tooltip styling */
[data-tooltip]:before {
    content: attr(data-tooltip);
    display: none;
    position: absolute;
    background: #000;
    color: #fff;
    padding: 4px 8px;
    font-size: 14px;
    line-height: 1.4;
    min-width: 100px;
    text-align: center;
    border-radius: 4px;
}
/* Dynamic horizontal centering */
[data-tooltip-position="top"]:before,
[data-tooltip-position="bottom"]:before {
    left: 50%;
    -ms-transform: translateX(-50%);
    -moz-transform: translateX(-50%);
    -webkit-transform: translateX(-50%);
    transform: translateX(-50%);
}
/* Dynamic vertical centering */
[data-tooltip-position="right"]:before,
[data-tooltip-position="left"]:before {
    top: 50%;
    -ms-transform: translateY(-50%);
    -moz-transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    transform: translateY(-50%);
}
[data-tooltip-position="top"]:before {
    bottom: 100%;
    margin-bottom: 6px;
}
[data-tooltip-position="right"]:before {
    left: 100%;
    margin-left: 6px;
}
[data-tooltip-position="bottom"]:before {
    top: 100%;
    margin-top: 6px;
}
[data-tooltip-position="left"]:before {
    right: 100%;
    margin-right: 6px;
}

/* Tooltip arrow styling/placement */
[data-tooltip]:after {
    content: '';
    display: none;
    position: absolute;
    width: 0;
    height: 0;
    border-color: transparent;
    border-style: solid;
}
/* Dynamic horizontal centering for the tooltip */
[data-tooltip-position="top"]:after,
[data-tooltip-position="bottom"]:after {
    left: 50%;
    margin-left: -6px;
}
/* Dynamic vertical centering for the tooltip */
[data-tooltip-position="right"]:after,
[data-tooltip-position="left"]:after {
    top: 50%;
    margin-top: -6px;
}
[data-tooltip-position="top"]:after {
    bottom: 100%;
    border-width: 6px 6px 0;
    border-top-color: #000;
}
[data-tooltip-position="right"]:after {
    left: 100%;
    border-width: 6px 6px 6px 0;
    border-right-color: #000;
}
[data-tooltip-position="bottom"]:after {
    top: 100%;
    border-width: 0 6px 6px;
    border-bottom-color: #000;
}
[data-tooltip-position="left"]:after {
    right: 100%;
    border-width: 6px 0 6px 6px;
    border-left-color: #000;
}
/* Show the tooltip when hovering */
[data-tooltip]:hover:before,
[data-tooltip]:hover:after {
    display: block;
    z-index: 50;
}

2
@SearchForKnowledge真的吗?我会在某个时候进行调查。谢谢。
Josh Crozier 2015年

5
是的,我刚刚对其进行了测试,也并不奇怪它没有起作用。很好的旧IE!;)
SearchForKnowledge 2015年

@JoshCrozier帮了大忙
JIBIN BJ

20

在大多数浏览器中,title属性将作为工具提示呈现,并且通常可以灵活使用哪种元素。

<span title="This will show as a tooltip">Mouse over for a tooltip!</span>
<a href="http://www.stackoverflow.com" title="Link to stackoverflow.com">stackoverflow.com</a>
<img src="something.png" alt="Something" title="Something">

所有这些将在大多数每种浏览器中呈现工具提示。


6

对于基本工具提示,您需要:

<span title="This is my tooltip"> Hover on me to see tooltip! </span>


4

"title"属性将被浏览器用作工具提示的文本,如果您想对其应用样式,请考虑使用一些插件

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.