Como adiciono uma dica de ferramenta a um elemento de amplitude?


364

No código a seguir, quero que uma dica de ferramenta seja exibida quando o usuário passar o tempo, como faço isso? Não quero usar nenhum link.

<span> text </span>

Respostas:


677

Aqui está a maneira simples e integrada:

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

Isso fornece dicas de ferramentas de texto simples. Se você deseja dicas de ferramentas avançadas, com HTML formatado, precisará usar uma biblioteca para fazer isso. Felizmente, existem muitos deles .


11
Mas isso funciona se não houver texto no intervalo? Digamos, por exemplo, um espaço vazio com uma imagem bg?
Augiwan

11
@UGS: Você tem certeza de que seu elemento é do tamanho que você pensa que é? Tente dar um fundo rosa como o meu. :-)
RichieHindle 23/01

Muito obrigado.! Mas eu apenas usei tipsy.js e parece melhor que o que eu queria. : D E este artigo ajudou na minha confusão: htmlgoodies.com/tutorials/html_401/article.php/3479661/… onde diz que a dica de ferramenta funciona para o "texto"
Augiwan

11
Oi, Alguém pode esclarecer se isso é padrão em alguns / todos os sabores HTML?
Jonathan dos Santos

@ Jonathan: Tem sido norma desde pelo menos HTML4: w3.org/TR/html4/struct/global.html#adef-title
RichieHindle

97

Dicas de ferramentas personalizadas com CSS puro - não é necessário JavaScript:

Exemplo aqui (com código) / Exemplo em tela cheia

Como alternativa às titledicas de ferramentas de atributos padrão , você pode criar suas próprias dicas de ferramentas CSS personalizadas usando :before/ :after pseudo elementos e data-*atributos HTML5 .

Usando o CSS fornecido, você pode adicionar uma dica de ferramenta a um elemento usando o data-tooltipatributo

Você também pode controlar a posição da dica de ferramenta personalizada usando o data-tooltip-positionatributo (valores aceitos: top/ right/ bottom/ left).

Por exemplo, o seguinte adicionará um topo de ferramenta posicionado na parte inferior do elemento de amplitude.

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

insira a descrição da imagem aqui

Como é que isso funciona?

Você pode exibir as dicas de ferramentas personalizadas com pseudo-elementos recuperando os valores de atributos personalizados usando a attr()função

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

Em termos de posicionamento da dica de ferramenta, basta usar o seletor de atributos e alterar a veiculação com base no valor do atributo.

Exemplo aqui (com código) / Exemplo em tela cheia

CSS completo usado no exemplo - personalize isso de acordo com suas necessidades.

[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 Realmente? Vou dar uma olhada nisso em algum momento. Obrigado.
Josh Crozier

5
Sim, eu apenas testei e também não fiquei surpreso que não funcionou. ;)
SearchForKnowledge

@JoshCrozier ajudou muito
Jibin BJ

20

Na maioria dos navegadores, o atributo title será renderizado como uma dica de ferramenta e geralmente é flexível quanto ao tipo de elemento com o qual ele trabalhará.

<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">

Tudo isso renderiza dicas de ferramentas em quase todos os navegadores.


7

Para a dica de ferramenta básica, você deseja:

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


4

o "title"atributo será usado como texto para a dica de ferramenta do navegador, se você quiser aplicar estilo a ele, considere usar alguns plug-ins

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.