问答中心分类: CSS如何向 span 元素添加工具提示?
0
匿名用户 提问 49分钟 前

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

text
4 Answers
0
Josh Crozier 回答 49分钟 前

纯 CSS 的自定义工具提示 – 无需 JavaScript:
此处示例(带代码)/全屏示例
作为默认的替代方案title属性工具提示,您可以使用自定义 CSS 工具提示:before/:after 伪元素和 HTML5data-*属性.
使用提供的 CSS,您可以使用data-tooltip属性。
您还可以使用data-tooltip-position属性(接受的值:top/right/bottom/left)。
例如,以下将添加一个位于 span 元素底部的 tooltop。

<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;
}
Josh Crozier 回复 49分钟 前

@SearchForKnowledge 真的吗?我会在某个时候调查一下。谢谢。

SearchForKnowledge 回复 49分钟 前

是的,我刚刚对其进行了测试,并且对它不起作用也不感到惊讶。好旧的 IE! 😉

JIBIN BJ 回复 49分钟 前

@JoshCrozier 它帮助很大

darth0s 回复 49分钟 前

实际上,我认为这应该是最好的答案。它完美地满足了我的需求。非常感谢!

Kangur 回复 49分钟 前

内容可以样式化吗?

0
Brian Arnold Sinclair 回答 49分钟 前

在大多数浏览器中,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">

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

0
Abk 回答 49分钟 前

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

<span title="This is my tooltip"> Hover on me to see tooltip! </span>
0
Rony 回答 49分钟 前

title属性将被浏览器用作工具提示的文本。如果您想对其应用样式,请考虑使用一些库,例如jQuery 用户界面.